{
  "_format": "hh-sol-artifact-1",
  "contractName": "JWrappedNativeDelegator",
  "sourceName": "contracts/JWrappedNativeDelegator.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "underlying_",
          "type": "address"
        },
        {
          "internalType": "contract JoetrollerInterface",
          "name": "joetroller_",
          "type": "address"
        },
        {
          "internalType": "contract InterestRateModel",
          "name": "interestRateModel_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "initialExchangeRateMantissa_",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "decimals_",
          "type": "uint8"
        },
        {
          "internalType": "address payable",
          "name": "admin_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "implementation_",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "becomeImplementationData",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "cashPrior",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interestAccumulated",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalBorrows",
          "type": "uint256"
        }
      ],
      "name": "AccrueInterest",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accountBorrows",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalBorrows",
          "type": "uint256"
        }
      ],
      "name": "Borrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "error",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "info",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "detail",
          "type": "uint256"
        }
      ],
      "name": "Failure",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reservesFee",
          "type": "uint256"
        }
      ],
      "name": "Flashloan",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "jTokenCollateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "seizeTokens",
          "type": "uint256"
        }
      ],
      "name": "LiquidateBorrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "mintTokens",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "NewAdmin",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldImplementation",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "NewImplementation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract JoetrollerInterface",
          "name": "oldJoetroller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract JoetrollerInterface",
          "name": "newJoetroller",
          "type": "address"
        }
      ],
      "name": "NewJoetroller",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract InterestRateModel",
          "name": "oldInterestRateModel",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract InterestRateModel",
          "name": "newInterestRateModel",
          "type": "address"
        }
      ],
      "name": "NewMarketInterestRateModel",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldPendingAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        }
      ],
      "name": "NewPendingAdmin",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldReserveFactorMantissa",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newReserveFactorMantissa",
          "type": "uint256"
        }
      ],
      "name": "NewReserveFactor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "redeemer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "redeemTokens",
          "type": "uint256"
        }
      ],
      "name": "Redeem",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "payer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accountBorrows",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalBorrows",
          "type": "uint256"
        }
      ],
      "name": "RepayBorrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "benefactor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "addAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalReserves",
          "type": "uint256"
        }
      ],
      "name": "ReservesAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reduceAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalReserves",
          "type": "uint256"
        }
      ],
      "name": "ReservesReduced",
      "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": "amount",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "payable": true,
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "_acceptAdmin",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "addAmount",
          "type": "uint256"
        }
      ],
      "name": "_addReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "_addReservesNative",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reduceAmount",
          "type": "uint256"
        }
      ],
      "name": "_reduceReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "implementation_",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "allowResign",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "becomeImplementationData",
          "type": "bytes"
        }
      ],
      "name": "_setImplementation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract InterestRateModel",
          "name": "newInterestRateModel",
          "type": "address"
        }
      ],
      "name": "_setInterestRateModel",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract JoetrollerInterface",
          "name": "newJoetroller",
          "type": "address"
        }
      ],
      "name": "_setJoetroller",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "newPendingAdmin",
          "type": "address"
        }
      ],
      "name": "_setPendingAdmin",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newReserveFactorMantissa",
          "type": "uint256"
        }
      ],
      "name": "_setReserveFactor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "accrualBlockTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "accrueInterest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOfUnderlying",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        }
      ],
      "name": "borrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "borrowBalanceCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "borrowBalanceStored",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "borrowIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        }
      ],
      "name": "borrowNative",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "borrowRatePerSecond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "delegateToImplementation",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "delegateToViewImplementation",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "exchangeRateCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "exchangeRateStored",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "flashFeeBips",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract ERC3156FlashBorrowerInterface",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "flashLoan",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getAccountSnapshot",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getCash",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "implementation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "interestRateModel",
      "outputs": [
        {
          "internalType": "contract InterestRateModel",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isJToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "joetroller",
      "outputs": [
        {
          "internalType": "contract JoetrollerInterface",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "internalType": "contract JTokenInterface",
          "name": "jTokenCollateral",
          "type": "address"
        }
      ],
      "name": "liquidateBorrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "contract JTokenInterface",
          "name": "jTokenCollateral",
          "type": "address"
        }
      ],
      "name": "liquidateBorrowNative",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "mintNative",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "pendingAdmin",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "redeemTokens",
          "type": "uint256"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "redeemTokens",
          "type": "uint256"
        }
      ],
      "name": "redeemNative",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        }
      ],
      "name": "redeemUnderlying",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        }
      ],
      "name": "redeemUnderlyingNative",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        }
      ],
      "name": "repayBorrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        }
      ],
      "name": "repayBorrowBehalf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        }
      ],
      "name": "repayBorrowBehalfNative",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "repayBorrowNative",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "reserveFactorMantissa",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "seizeTokens",
          "type": "uint256"
        }
      ],
      "name": "seize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "supplyRatePerSecond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalBorrows",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "totalBorrowsCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "underlying",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b6a38038062001b6a83398181016040526101408110156200003857600080fd5b81516020830151604080850151606086015160808701805193519597949692959194919392820192846401000000008211156200007457600080fd5b9083019060208201858111156200008a57600080fd5b8251640100000000811182820188101715620000a557600080fd5b82525081516020918201929091019080838360005b83811015620000d4578181015183820152602001620000ba565b50505050905090810190601f168015620001025780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012657600080fd5b9083019060208201858111156200013c57600080fd5b82516401000000008111828201881017156200015757600080fd5b82525081516020918201929091019080838360005b83811015620001865781810151838201526020016200016c565b50505050905090810190601f168015620001b45780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160608401516080909401805192969195919284640100000000821115620001e957600080fd5b908301906020820185811115620001ff57600080fd5b82516401000000008111828201881017156200021a57600080fd5b82525081516020918201929091019080838360005b83811015620002495781810151838201526020016200022f565b50505050905090810190601f168015620002775780820380516001836020036101000a031916815260200191505b5060405250505033600360016101000a8154816001600160a01b0302191690836001600160a01b0316021790555062000424828b8b8b8b8b8b8b60405160240180886001600160a01b03166001600160a01b03168152602001876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b0316815260200185815260200180602001806020018460ff1660ff168152602001838103835286818151815260200191508051906020019080838360005b838110156200035157818101518382015260200162000337565b50505050905090810190601f1680156200037f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015620003b45781810151838201526020016200039a565b50505050905090810190601f168015620003e25780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116631a31d46560e01b17909152909a50620004721698505050505050505050565b506200043c826000836001600160e01b036200053916565b5050600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055506200071a95505050505050565b606060006060846001600160a01b0316846040518082805190602001908083835b60208310620004b45780518252601f19909201916020918201910162000493565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811462000516576040519150601f19603f3d011682016040523d82523d6000602084013e6200051b565b606091505b5091509150600082141562000531573d60208201fd5b949350505050565b60035461010090046001600160a01b03163314620005895760405162461bcd60e51b815260040180806020018281038252604181526020018062001b296041913960600191505060405180910390fd5b8115620005cb576040805160048152602481019091526020810180516001600160e01b0390811663153ab50560e01b17909152620005c99190620006f016565b505b601280546001600160a01b038581166001600160a01b03198316179092556040516020602482018181528551604484015285519490931693620006a1938693909283926064909201919085019080838360005b83811015620006385781810151838201526020016200061e565b50505050905090810190601f168015620006665780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116630adccee560e31b17909152909350620006f016915050565b50601254604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b60125460609062000714906001600160a01b0316836001600160e01b036200047216565b92915050565b6113ff806200072a6000396000f3fe6080604052600436106103975760003560e01c806373acee98116101dc578063c37f68e211610102578063dff76484116100a0578063f3fdb15a1161006f578063f3fdb15a14610acd578063f5e3c46214610ae2578063f851a44014610b25578063fca7820b1461052a57610397565b8063dff764841461052a578063e9c714f214610982578063ea11eea414610ab8578063f2b3abbd1461057b57610397565b8063d3c57151116100dc578063d3c57151146105d8578063db006a751461052a578063dbf7692914610a67578063dd62ed3e14610a7d57610397565b8063c37f68e2146109f9578063c5ebeaec1461052a578063cfa9920114610a5257610397565b8063a0712d681161017a578063b1d3897411610149578063b1d38974146105c3578063b2a02ff1146109d6578063b71d1a0c1461057b578063bd6d894d1461098257610397565b8063a0712d681461052a578063a6afed9514610982578063a9059cbb146104dd578063aa5af0fd146109c157610397565b80638d3f9c62116101b65780638d3f9c62146105d85780638f840ddd1461099757806395d89b41146109ac57806395dd91931461094f57610397565b806373acee9814610982578063852a12e31461052a578063884b93431461052a57610397565b80633b1d21a2116102c1578063526097501161025f578063601a0bf11161022e578063601a0bf11461052a5780636330533c146109255780636f307dc31461093a57806370a082311461094f57610397565b806352609750146105c3578063555bcc40146107ab5780635c60da1b146108755780635cffe9de1461088a57610397565b8063432f4b2d1161029b578063432f4b2d1461057b5780634487152f146106e557806347bd3718146107965780634bf03edf1461052a57610397565b80633b1d21a2146105c35780633e9410101461052a578063406de0b6146106d057610397565b8063182df0f51161033957806326782247116103085780632678224714610646578063291727a414610677578063313ce567146106a55780633af9e6691461057b57610397565b8063182df0f5146105c3578063219f2fe7146105d857806323b872dd146105e05780632608f8181461062357610397565b80630e752702116103755780630e7527021461052a578063173b99041461056657806317bfdfbc1461057b57806318160ddd146105ae57610397565b806306fdde03146103a25780630933c1ed1461042c578063095ea7b3146104dd575b61039f610b3a565b50005b3480156103ae57600080fd5b506103b7610bc2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f15781810151838201526020016103d9565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043857600080fd5b506103b76004803603602081101561044f57600080fd5b810190602081018135600160201b81111561046957600080fd5b82018360208201111561047b57600080fd5b803590602001918460018302840111600160201b8311171561049c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c4f945050505050565b3480156104e957600080fd5b506105166004803603604081101561050057600080fd5b506001600160a01b038135169060200135610c6e565b604080519115158252519081900360200190f35b34801561053657600080fd5b506105546004803603602081101561054d57600080fd5b5035610c7f565b60408051918252519081900360200190f35b34801561057257600080fd5b50610554610c8f565b34801561058757600080fd5b506105546004803603602081101561059e57600080fd5b50356001600160a01b0316610c7f565b3480156105ba57600080fd5b50610554610c95565b3480156105cf57600080fd5b50610554610c9b565b610554610ca9565b3480156105ec57600080fd5b506105166004803603606081101561060357600080fd5b506001600160a01b03813581169160208101359091169060400135610cb3565b34801561062f57600080fd5b506105546004803603604081101561050057600080fd5b34801561065257600080fd5b5061065b610cc5565b604080516001600160a01b039092168252519081900360200190f35b6105546004803603604081101561068d57600080fd5b506001600160a01b0381358116916020013516610c6e565b3480156106b157600080fd5b506106ba610cd4565b6040805160ff9092168252519081900360200190f35b3480156106dc57600080fd5b50610516610cdd565b3480156106f157600080fd5b506103b76004803603602081101561070857600080fd5b810190602081018135600160201b81111561072257600080fd5b82018360208201111561073457600080fd5b803590602001918460018302840111600160201b8311171561075557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ce2945050505050565b3480156107a257600080fd5b50610554610f01565b3480156107b757600080fd5b50610873600480360360608110156107ce57600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b8111156107ff57600080fd5b82018360208201111561081157600080fd5b803590602001918460018302840111600160201b8311171561083257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f07945050505050565b005b34801561088157600080fd5b5061065b6110aa565b34801561089657600080fd5b50610516600480360360808110156108ad57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156108e757600080fd5b8201836020820111156108f957600080fd5b803590602001918460018302840111600160201b8311171561091a57600080fd5b5090925090506110b9565b34801561093157600080fd5b5061065b6110cd565b34801561094657600080fd5b5061065b6110dc565b34801561095b57600080fd5b506105546004803603602081101561097257600080fd5b50356001600160a01b03166110eb565b34801561098e57600080fd5b50610554610ca9565b3480156109a357600080fd5b506105546110f5565b3480156109b857600080fd5b506103b76110fb565b3480156109cd57600080fd5b50610554611153565b3480156109e257600080fd5b506105546004803603606081101561060357600080fd5b348015610a0557600080fd5b50610a2c60048036036020811015610a1c57600080fd5b50356001600160a01b0316611159565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610a5e57600080fd5b5061055461116f565b6105546004803603602081101561059e57600080fd5b348015610a8957600080fd5b5061055460048036036040811015610aa057600080fd5b506001600160a01b0381358116916020013516611175565b348015610ac457600080fd5b5061055461117f565b348015610ad957600080fd5b5061065b611184565b348015610aee57600080fd5b5061055460048036036060811015610b0557600080fd5b506001600160a01b03813581169160208101359160409091013516610cb3565b348015610b3157600080fd5b5061065b611193565b6012546040516060916000916001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d8060008114610ba2576040519150601f19603f3d011682016040523d82523d6000602084013e610ba7565b606091505b505090506040513d6000823e818015610bbe573d82f35b3d82fd5b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c475780601f10610c1c57610100808354040283529160200191610c47565b820191906000526020600020905b815481529060010190602001808311610c2a57829003601f168201915b505050505081565b601254606090610c68906001600160a01b0316836111a7565b92915050565b6000610c78610b3a565b5092915050565b6000610c89610b3a565b50919050565b60085481565b600d5481565b6000610ca5611269565b5090565b6000610ca5610b3a565b6000610cbd610b3a565b509392505050565b6004546001600160a01b031681565b60035460ff1681565b600181565b606060006060306001600160a01b0316846040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610d33578181015183820152602001610d1b565b50505050905090810190601f168015610d605780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b178152905182519295509350839250908083835b60208310610dbb5780518252601f199092019160209182019101610d9c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610e1b576040519150601f19603f3d011682016040523d82523d6000602084013e610e20565b606091505b50915091506000821415610e35573d60208201fd5b808060200190516020811015610e4a57600080fd5b8101908080516040519392919084600160201b821115610e6957600080fd5b908301906020820185811115610e7e57600080fd5b8251600160201b811182820188101715610e9757600080fd5b82525081516020918201929091019080838360005b83811015610ec4578181015183820152602001610eac565b50505050905090810190601f168015610ef15780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b600b5481565b60035461010090046001600160a01b03163314610f555760405162461bcd60e51b815260040180806020018281038252604181526020018061138a6041913960600191505060405180910390fd5b8115610f8f576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b179052610f8d90610c4f565b505b601280546001600160a01b038581166001600160a01b0319831617909255604051602060248201818152855160448401528551949093169361105b938693909283926064909201919085019080838360005b83811015610ff9578181015183820152602001610fe1565b50505050905090810190601f1680156110265780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b1790529250610c4f915050565b50601254604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b6012546001600160a01b031681565b60006110c3610b3a565b5095945050505050565b6005546001600160a01b031681565b6011546001600160a01b031681565b6000610c89611269565b600c5481565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610c475780601f10610c1c57610100808354040283529160200191610c47565b600a5481565b600080600080611167611269565b509193509193565b60095481565b6000610c78611269565b600881565b6006546001600160a01b031681565b60035461010090046001600160a01b031681565b606060006060846001600160a01b0316846040518082805190602001908083835b602083106111e75780518252601f1990920191602091820191016111c8565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611247576040519150601f19603f3d011682016040523d82523d6000602084013e61124c565b606091505b50915091506000821415611261573d60208201fd5b949350505050565b60606000306001600160a01b03166000366040516024018080602001828103825284848281815260200192508082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b0316630933c1ed60e01b17815292518151919750955085945091925081905083835b6020831061130a5780518252601f1990920191602091820191016112eb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461136a576040519150601f19603f3d011682016040523d82523d6000602084013e61136f565b606091505b505090506040513d6000823e818015610bbe573d60408301f3fe4a577261707065644e617469766544656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696ea265627a7a72315820f6d65074027b36474ed1cba04679721cc6c1a7f0c50202a778e326c001f2ab2264736f6c634300051000324a577261707065644e617469766544656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696e",
  "deployedBytecode": "0x6080604052600436106103975760003560e01c806373acee98116101dc578063c37f68e211610102578063dff76484116100a0578063f3fdb15a1161006f578063f3fdb15a14610acd578063f5e3c46214610ae2578063f851a44014610b25578063fca7820b1461052a57610397565b8063dff764841461052a578063e9c714f214610982578063ea11eea414610ab8578063f2b3abbd1461057b57610397565b8063d3c57151116100dc578063d3c57151146105d8578063db006a751461052a578063dbf7692914610a67578063dd62ed3e14610a7d57610397565b8063c37f68e2146109f9578063c5ebeaec1461052a578063cfa9920114610a5257610397565b8063a0712d681161017a578063b1d3897411610149578063b1d38974146105c3578063b2a02ff1146109d6578063b71d1a0c1461057b578063bd6d894d1461098257610397565b8063a0712d681461052a578063a6afed9514610982578063a9059cbb146104dd578063aa5af0fd146109c157610397565b80638d3f9c62116101b65780638d3f9c62146105d85780638f840ddd1461099757806395d89b41146109ac57806395dd91931461094f57610397565b806373acee9814610982578063852a12e31461052a578063884b93431461052a57610397565b80633b1d21a2116102c1578063526097501161025f578063601a0bf11161022e578063601a0bf11461052a5780636330533c146109255780636f307dc31461093a57806370a082311461094f57610397565b806352609750146105c3578063555bcc40146107ab5780635c60da1b146108755780635cffe9de1461088a57610397565b8063432f4b2d1161029b578063432f4b2d1461057b5780634487152f146106e557806347bd3718146107965780634bf03edf1461052a57610397565b80633b1d21a2146105c35780633e9410101461052a578063406de0b6146106d057610397565b8063182df0f51161033957806326782247116103085780632678224714610646578063291727a414610677578063313ce567146106a55780633af9e6691461057b57610397565b8063182df0f5146105c3578063219f2fe7146105d857806323b872dd146105e05780632608f8181461062357610397565b80630e752702116103755780630e7527021461052a578063173b99041461056657806317bfdfbc1461057b57806318160ddd146105ae57610397565b806306fdde03146103a25780630933c1ed1461042c578063095ea7b3146104dd575b61039f610b3a565b50005b3480156103ae57600080fd5b506103b7610bc2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103f15781810151838201526020016103d9565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561043857600080fd5b506103b76004803603602081101561044f57600080fd5b810190602081018135600160201b81111561046957600080fd5b82018360208201111561047b57600080fd5b803590602001918460018302840111600160201b8311171561049c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c4f945050505050565b3480156104e957600080fd5b506105166004803603604081101561050057600080fd5b506001600160a01b038135169060200135610c6e565b604080519115158252519081900360200190f35b34801561053657600080fd5b506105546004803603602081101561054d57600080fd5b5035610c7f565b60408051918252519081900360200190f35b34801561057257600080fd5b50610554610c8f565b34801561058757600080fd5b506105546004803603602081101561059e57600080fd5b50356001600160a01b0316610c7f565b3480156105ba57600080fd5b50610554610c95565b3480156105cf57600080fd5b50610554610c9b565b610554610ca9565b3480156105ec57600080fd5b506105166004803603606081101561060357600080fd5b506001600160a01b03813581169160208101359091169060400135610cb3565b34801561062f57600080fd5b506105546004803603604081101561050057600080fd5b34801561065257600080fd5b5061065b610cc5565b604080516001600160a01b039092168252519081900360200190f35b6105546004803603604081101561068d57600080fd5b506001600160a01b0381358116916020013516610c6e565b3480156106b157600080fd5b506106ba610cd4565b6040805160ff9092168252519081900360200190f35b3480156106dc57600080fd5b50610516610cdd565b3480156106f157600080fd5b506103b76004803603602081101561070857600080fd5b810190602081018135600160201b81111561072257600080fd5b82018360208201111561073457600080fd5b803590602001918460018302840111600160201b8311171561075557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ce2945050505050565b3480156107a257600080fd5b50610554610f01565b3480156107b757600080fd5b50610873600480360360608110156107ce57600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b8111156107ff57600080fd5b82018360208201111561081157600080fd5b803590602001918460018302840111600160201b8311171561083257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f07945050505050565b005b34801561088157600080fd5b5061065b6110aa565b34801561089657600080fd5b50610516600480360360808110156108ad57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156108e757600080fd5b8201836020820111156108f957600080fd5b803590602001918460018302840111600160201b8311171561091a57600080fd5b5090925090506110b9565b34801561093157600080fd5b5061065b6110cd565b34801561094657600080fd5b5061065b6110dc565b34801561095b57600080fd5b506105546004803603602081101561097257600080fd5b50356001600160a01b03166110eb565b34801561098e57600080fd5b50610554610ca9565b3480156109a357600080fd5b506105546110f5565b3480156109b857600080fd5b506103b76110fb565b3480156109cd57600080fd5b50610554611153565b3480156109e257600080fd5b506105546004803603606081101561060357600080fd5b348015610a0557600080fd5b50610a2c60048036036020811015610a1c57600080fd5b50356001600160a01b0316611159565b604080519485526020850193909352838301919091526060830152519081900360800190f35b348015610a5e57600080fd5b5061055461116f565b6105546004803603602081101561059e57600080fd5b348015610a8957600080fd5b5061055460048036036040811015610aa057600080fd5b506001600160a01b0381358116916020013516611175565b348015610ac457600080fd5b5061055461117f565b348015610ad957600080fd5b5061065b611184565b348015610aee57600080fd5b5061055460048036036060811015610b0557600080fd5b506001600160a01b03813581169160208101359160409091013516610cb3565b348015610b3157600080fd5b5061065b611193565b6012546040516060916000916001600160a01b0390911690829036908083838082843760405192019450600093509091505080830381855af49150503d8060008114610ba2576040519150601f19603f3d011682016040523d82523d6000602084013e610ba7565b606091505b505090506040513d6000823e818015610bbe573d82f35b3d82fd5b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610c475780601f10610c1c57610100808354040283529160200191610c47565b820191906000526020600020905b815481529060010190602001808311610c2a57829003601f168201915b505050505081565b601254606090610c68906001600160a01b0316836111a7565b92915050565b6000610c78610b3a565b5092915050565b6000610c89610b3a565b50919050565b60085481565b600d5481565b6000610ca5611269565b5090565b6000610ca5610b3a565b6000610cbd610b3a565b509392505050565b6004546001600160a01b031681565b60035460ff1681565b600181565b606060006060306001600160a01b0316846040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610d33578181015183820152602001610d1b565b50505050905090810190601f168015610d605780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b178152905182519295509350839250908083835b60208310610dbb5780518252601f199092019160209182019101610d9c565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610e1b576040519150601f19603f3d011682016040523d82523d6000602084013e610e20565b606091505b50915091506000821415610e35573d60208201fd5b808060200190516020811015610e4a57600080fd5b8101908080516040519392919084600160201b821115610e6957600080fd5b908301906020820185811115610e7e57600080fd5b8251600160201b811182820188101715610e9757600080fd5b82525081516020918201929091019080838360005b83811015610ec4578181015183820152602001610eac565b50505050905090810190601f168015610ef15780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b600b5481565b60035461010090046001600160a01b03163314610f555760405162461bcd60e51b815260040180806020018281038252604181526020018061138a6041913960600191505060405180910390fd5b8115610f8f576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b179052610f8d90610c4f565b505b601280546001600160a01b038581166001600160a01b0319831617909255604051602060248201818152855160448401528551949093169361105b938693909283926064909201919085019080838360005b83811015610ff9578181015183820152602001610fe1565b50505050905090810190601f1680156110265780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b1790529250610c4f915050565b50601254604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b6012546001600160a01b031681565b60006110c3610b3a565b5095945050505050565b6005546001600160a01b031681565b6011546001600160a01b031681565b6000610c89611269565b600c5481565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610c475780601f10610c1c57610100808354040283529160200191610c47565b600a5481565b600080600080611167611269565b509193509193565b60095481565b6000610c78611269565b600881565b6006546001600160a01b031681565b60035461010090046001600160a01b031681565b606060006060846001600160a01b0316846040518082805190602001908083835b602083106111e75780518252601f1990920191602091820191016111c8565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611247576040519150601f19603f3d011682016040523d82523d6000602084013e61124c565b606091505b50915091506000821415611261573d60208201fd5b949350505050565b60606000306001600160a01b03166000366040516024018080602001828103825284848281815260200192508082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b0316630933c1ed60e01b17815292518151919750955085945091925081905083835b6020831061130a5780518252601f1990920191602091820191016112eb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461136a576040519150601f19603f3d011682016040523d82523d6000602084013e61136f565b606091505b505090506040513d6000823e818015610bbe573d60408301f3fe4a577261707065644e617469766544656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696ea265627a7a72315820f6d65074027b36474ed1cba04679721cc6c1a7f0c50202a778e326c001f2ab2264736f6c63430005100032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
