diff --git a/.circleci/config.yml b/.circleci/config.yml
index 81d5c061b..9a50577b3 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -11,7 +11,7 @@ jobs:
     steps:
       - run:
         |
-          sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.13/solc-static-linux -O /usr/local/bin/solc
+          sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.16/solc-static-linux -O /usr/local/bin/solc
           sudo chmod +x /usr/local/bin/solc
       - checkout
       - restore_cache:
@@ -81,7 +81,7 @@ jobs:
     steps:
       - run:
         |
-          sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.13/solc-static-linux -O /usr/local/bin/solc
+          sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.16/solc-static-linux -O /usr/local/bin/solc
           sudo chmod +x /usr/local/bin/solc
       - checkout
       - restore_cache:
diff --git a/.dockerignore b/.dockerignore
index 8541f8073..8f2379b97 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -35,4 +35,4 @@ junit.xml
 .build
 .last_confs
 .git
-script/certora
+script/certora
\ No newline at end of file
diff --git a/Makefile b/Makefile
index cd19fb741..d65554780 100644
--- a/Makefile
+++ b/Makefile
@@ -45,6 +45,7 @@ spec/certora/Governor/%.cvl:
 	 spec/certora/contracts/GovernorAlphaCertora.sol \
 	 spec/certora/contracts/TimelockCertora.sol \
 	 spec/certora/contracts/CompCertora.sol \
+	 --settings -assumeUnwindCond,-enableWildcardInlining=false \
 	 --solc_args "'--evm-version istanbul'" \
 	 --link \
 	 GovernorAlphaCertora:timelock=TimelockCertora \
diff --git a/README.md b/README.md
index df6ae63ee..29cb898eb 100644
--- a/README.md
+++ b/README.md
@@ -106,6 +106,15 @@ Formal Verification Specs
 -------------------------
 
 The Compound Protocol has a number of formal verification specifications, powered by [Certora](https://www.certora.com/). You can find details in the [spec/formal](https://github.com/compound-finance/compound-protocol/tree/master/spec/formal) folder. The Certora Verification Language (CVL) files included are specifications, which when with the Certora CLI tool, produce formal proofs (or counter-examples) that the code of a given contract exactly matches that specification.
+=======
+See the [Scenario Docs](https://github.com/compound-finance/money-market/tree/master/scenario/SCENARIO.md) on steps for using the repl.
+
+Testing
+-------
+Contract tests are defined under the [tests directory](https://github.com/compound-finance/money-market/tree/master/tests). To run the tests run:
+
+    yarn test
+>>>>>>> Compound Token and Governance (#519)
 
 Code Coverage
 -------------
diff --git a/contracts/CDaiDelegate.sol b/contracts/CDaiDelegate.sol
index e27aa5ded..97119105a 100644
--- a/contracts/CDaiDelegate.sol
+++ b/contracts/CDaiDelegate.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CErc20Delegate.sol";
 
diff --git a/contracts/CErc20.sol b/contracts/CErc20.sol
index 379343c9d..7ff5d8d37 100644
--- a/contracts/CErc20.sol
+++ b/contracts/CErc20.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CToken.sol";
 
diff --git a/contracts/CErc20Delegate.sol b/contracts/CErc20Delegate.sol
index d2cc77456..ad19ab448 100644
--- a/contracts/CErc20Delegate.sol
+++ b/contracts/CErc20Delegate.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CErc20.sol";
 
diff --git a/contracts/CErc20Delegator.sol b/contracts/CErc20Delegator.sol
index a991fcbd6..90274c8d3 100644
--- a/contracts/CErc20Delegator.sol
+++ b/contracts/CErc20Delegator.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CTokenInterfaces.sol";
 
diff --git a/contracts/CErc20Immutable.sol b/contracts/CErc20Immutable.sol
index f5b669d61..164f1bcc7 100644
--- a/contracts/CErc20Immutable.sol
+++ b/contracts/CErc20Immutable.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CErc20.sol";
 
diff --git a/contracts/CEther.sol b/contracts/CEther.sol
index f234fd347..e3f172392 100644
--- a/contracts/CEther.sol
+++ b/contracts/CEther.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CToken.sol";
 
diff --git a/contracts/CToken.sol b/contracts/CToken.sol
index 48edc9b31..a493dc8a0 100644
--- a/contracts/CToken.sol
+++ b/contracts/CToken.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./ComptrollerInterface.sol";
 import "./CTokenInterfaces.sol";
diff --git a/contracts/CTokenInterfaces.sol b/contracts/CTokenInterfaces.sol
index 250ce21c4..6d9974a88 100644
--- a/contracts/CTokenInterfaces.sol
+++ b/contracts/CTokenInterfaces.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./ComptrollerInterface.sol";
 import "./InterestRateModel.sol";
diff --git a/contracts/CarefulMath.sol b/contracts/CarefulMath.sol
index 4408881de..4f5be2ebe 100644
--- a/contracts/CarefulMath.sol
+++ b/contracts/CarefulMath.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 /**
   * @title Careful Math
diff --git a/contracts/Comptroller.sol b/contracts/Comptroller.sol
index 9c705939e..0846500e5 100644
--- a/contracts/Comptroller.sol
+++ b/contracts/Comptroller.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CToken.sol";
 import "./ErrorReporter.sol";
diff --git a/contracts/ComptrollerG1.sol b/contracts/ComptrollerG1.sol
index 83781a3e7..b0b2c3eb6 100644
--- a/contracts/ComptrollerG1.sol
+++ b/contracts/ComptrollerG1.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CToken.sol";
 import "./ErrorReporter.sol";
diff --git a/contracts/ComptrollerInterface.sol b/contracts/ComptrollerInterface.sol
index f7b0ac1ad..bcf2ff6ec 100644
--- a/contracts/ComptrollerInterface.sol
+++ b/contracts/ComptrollerInterface.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 interface ComptrollerInterface {
     /**
diff --git a/contracts/ComptrollerStorage.sol b/contracts/ComptrollerStorage.sol
index e103ec72c..7af42358c 100644
--- a/contracts/ComptrollerStorage.sol
+++ b/contracts/ComptrollerStorage.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CToken.sol";
 import "./PriceOracle.sol";
diff --git a/contracts/DAIInterestRateModel.sol b/contracts/DAIInterestRateModel.sol
index 5db20504d..03c82a399 100644
--- a/contracts/DAIInterestRateModel.sol
+++ b/contracts/DAIInterestRateModel.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./JumpRateModel.sol";
 import "./SafeMath.sol";
diff --git a/contracts/EIP20Interface.sol b/contracts/EIP20Interface.sol
index f0f8e69bf..f791e564b 100644
--- a/contracts/EIP20Interface.sol
+++ b/contracts/EIP20Interface.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 /**
  * @title ERC 20 Token Standard Interface
diff --git a/contracts/EIP20NonStandardInterface.sol b/contracts/EIP20NonStandardInterface.sol
index 3ff30d431..0f695703f 100644
--- a/contracts/EIP20NonStandardInterface.sol
+++ b/contracts/EIP20NonStandardInterface.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 /**
  * @title EIP20NonStandardInterface
diff --git a/contracts/ErrorReporter.sol b/contracts/ErrorReporter.sol
index 5676d6519..33cc775f5 100644
--- a/contracts/ErrorReporter.sol
+++ b/contracts/ErrorReporter.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 contract ComptrollerErrorReporter {
     enum Error {
diff --git a/contracts/Exponential.sol b/contracts/Exponential.sol
index 3ddfd21bb..f4bab1ba8 100644
--- a/contracts/Exponential.sol
+++ b/contracts/Exponential.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CarefulMath.sol";
 
diff --git a/contracts/Governance/Comp.sol b/contracts/Governance/Comp.sol
index 8cbd25b4c..aa5b748d0 100644
--- a/contracts/Governance/Comp.sol
+++ b/contracts/Governance/Comp.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 pragma experimental ABIEncoderV2;
 
 import "../EIP20Interface.sol";
@@ -10,7 +10,7 @@ import "../EIP20Interface.sol";
  */
 contract Comp is EIP20Interface {
     /// @notice EIP-20 token name for this token
-    string public constant name = "Compound Governance Token";
+    string public constant name = "Compound";
 
     /// @notice EIP-20 token symbol for this token
     string public constant symbol = "COMP";
diff --git a/contracts/Governance/GovernorAlpha.sol b/contracts/Governance/GovernorAlpha.sol
index 1a7a02787..5075b1ba2 100644
--- a/contracts/Governance/GovernorAlpha.sol
+++ b/contracts/Governance/GovernorAlpha.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 pragma experimental ABIEncoderV2;
 
 import "../SafeMath.sol";
@@ -36,7 +36,7 @@ contract GovernorAlpha {
     function votingDelay() public pure returns (uint) { return 1; } // 1 block
 
     /// @notice The duration of voting on a proposal, in blocks
-    function votingPeriod() public pure returns (uint) { return 17280; } // 3 days in blocks
+    function votingPeriod() public pure returns (uint) { return 17280; } // ~3 days in blocks (assuming 15s blocks)
 
     /// @notice The address of the Compound Protocol Timelock
     TimelockInterface public timelock;
diff --git a/contracts/InterestRateModel.sol b/contracts/InterestRateModel.sol
index 89f512d82..d7ebb94a7 100644
--- a/contracts/InterestRateModel.sol
+++ b/contracts/InterestRateModel.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 /**
   * @title Compound's InterestRateModel Interface
diff --git a/contracts/JumpRateModel.sol b/contracts/JumpRateModel.sol
index a1ab210b7..32d528257 100644
--- a/contracts/JumpRateModel.sol
+++ b/contracts/JumpRateModel.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./InterestRateModel.sol";
 import "./SafeMath.sol";
diff --git a/contracts/Maximillion.sol b/contracts/Maximillion.sol
index fe05853b4..5470c15bc 100644
--- a/contracts/Maximillion.sol
+++ b/contracts/Maximillion.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CEther.sol";
 
diff --git a/contracts/PriceOracle.sol b/contracts/PriceOracle.sol
index 48c009bd5..372d852f6 100644
--- a/contracts/PriceOracle.sol
+++ b/contracts/PriceOracle.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CToken.sol";
 
diff --git a/contracts/PriceOracleProxy.sol b/contracts/PriceOracleProxy.sol
index c89430290..4507a286b 100644
--- a/contracts/PriceOracleProxy.sol
+++ b/contracts/PriceOracleProxy.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CErc20.sol";
 import "./CToken.sol";
diff --git a/contracts/SafeMath.sol b/contracts/SafeMath.sol
index d42f81ce8..e3bb5ebd9 100644
--- a/contracts/SafeMath.sol
+++ b/contracts/SafeMath.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
 // Subject to the MIT license.
diff --git a/contracts/SimplePriceOracle.sol b/contracts/SimplePriceOracle.sol
index f05f66cf1..3843165a7 100644
--- a/contracts/SimplePriceOracle.sol
+++ b/contracts/SimplePriceOracle.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./PriceOracle.sol";
 import "./CErc20.sol";
diff --git a/contracts/Timelock.sol b/contracts/Timelock.sol
index 72aebe714..5cda36d2b 100644
--- a/contracts/Timelock.sol
+++ b/contracts/Timelock.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./SafeMath.sol";
 
diff --git a/contracts/Unitroller.sol b/contracts/Unitroller.sol
index 7627a8801..94765861c 100644
--- a/contracts/Unitroller.sol
+++ b/contracts/Unitroller.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./ErrorReporter.sol";
 import "./ComptrollerStorage.sol";
diff --git a/contracts/WhitePaperInterestRateModel.sol b/contracts/WhitePaperInterestRateModel.sol
index a98bdea8f..d5a2ff67b 100644
--- a/contracts/WhitePaperInterestRateModel.sol
+++ b/contracts/WhitePaperInterestRateModel.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./InterestRateModel.sol";
 import "./SafeMath.sol";
diff --git a/networks/mainnet.json b/networks/mainnet.json
index 147516c7e..ba3209894 100644
--- a/networks/mainnet.json
+++ b/networks/mainnet.json
@@ -21,6 +21,7 @@
         "Base500bps_Slope1200bps": "0xa1046abfc2598F48C44Fb320d281d3F3c0733c9a",
         "cSAI": "0xF5DCe57282A584D2746FaF1593d3121Fcac444dC",
         "Timelock": "0x6d903f6003cca6255D85CcA4D3B5E5146dC33925",
+        "Base200bps_Slope1000bps": "0x0c3f8df27e1a00b47653fde878d68d35f00714c0",
         "Base200bps_Slope3000bps": "0xBAE04CbF96391086dC643e842b517734E214D698",
         "cREP": "0x158079Ee67Fce2f58472A96584A73C7Ab9AC95c1",
         "ComptrollerG2": "0xf592eF673057a451c49c9433E278c5d59b56132c",
@@ -49,6 +50,7 @@
         "Base500bps_Slope1200bps": 7710726,
         "cSAI": 7710752,
         "Timelock": 8722895,
+        "Base200bps_Slope1000bps": 9321474,
         "Base200bps_Slope3000bps": 7710728,
         "cREP": 7710755,
         "ComptrollerG2": 8722898,
@@ -106,6 +108,7 @@
         "Base500bps_Slope1200bps": "0x00000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000000001aa535d3d0c0000",
         "cSAI": "0x00000000000000000000000089d24a6b4ccb1b6faa2625fe562bdd9a232603590000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000a1046abfc2598f48c44fb320d281d3f3c0733c9a000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c436f6d706f756e6420446169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046344414900000000000000000000000000000000000000000000000000000000",
         "Timelock": "0x0000000000000000000000008b8592e9570e96166336603a1b4bd1e8db20fa20000000000000000000000000000000000000000000000000000000000002a300",
+        "Base200bps_Slope1000bps": "0x00000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000016345785d8a0000",
         "Base200bps_Slope3000bps": "0x00000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000429d069189e0000",
         "cREP": "0x0000000000000000000000001985365e9f78359a9b6ad760e32412f4a445e8620000000000000000000000003d9819210a31b4961b30ef54be2aed79b9c9cd3b000000000000000000000000bae04cbf96391086dc643e842b517734e214d698000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e436f6d706f756e6420417567757200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000",
         "ComptrollerG2": "0x",
@@ -339,6 +342,14 @@
             "slope": "200000000000000000",
             "address": "0xc64C4cBA055eFA614CE01F4BAD8A9F519C4f8FaB"
         },
+        "Base200bps_Slope1000bps": {
+            "name": "Base200bps_Slope1000bps",
+            "contract": "WhitePaperInterestRateModel",
+            "description": "WhitePaper baseRate=20000000000000000 multiplier=100000000000000000",
+            "base": "20000000000000000",
+            "slope": "100000000000000000",
+            "address": "0x0c3f8df27e1a00b47653fde878d68d35f00714c0"
+        },
         "Base200bps_Slope3000bps": {
             "name": "Base200bps_Slope3000bps",
             "contract": "WhitePaperInterestRateModel",
diff --git a/networks/ropsten-abi.json b/networks/ropsten-abi.json
index b481031ed..f6e681c66 100644
--- a/networks/ropsten-abi.json
+++ b/networks/ropsten-abi.json
@@ -318,174 +318,9507 @@
             "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
         }
     ],
+    "cTBTC": [
+        {
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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",
+            "signature": "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",
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
+        },
+        {
+            "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",
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+        },
+        {
+            "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",
+            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+        },
+        {
+            "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",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+        },
+        {
+            "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": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "LiquidateBorrow",
+            "type": "event",
+            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+        },
+        {
+            "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",
+            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "oldComptroller",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
+                }
+            ],
+            "name": "NewComptroller",
+            "type": "event",
+            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldImplementation",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newImplementation",
+                    "type": "address"
+                }
+            ],
+            "name": "NewImplementation",
+            "type": "event",
+            "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+        },
+        {
+            "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",
+            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldReserveFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewReserveFactor",
+            "type": "event",
+            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+        },
+        {
+            "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",
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+        },
+        {
+            "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",
+            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+        },
+        {
+            "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",
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
+        },
+        {
+            "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",
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+        },
+        {
+            "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",
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+        },
+        {
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "fallback"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "_acceptAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe9c714f2"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_addReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x3e941010"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_reduceReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x601a0bf1"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
+                }
+            ],
+            "name": "_setComptroller",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4576b5db"
+        },
+        {
+            "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",
+            "signature": "0x555bcc40"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
+                }
+            ],
+            "name": "_setInterestRateModel",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xf2b3abbd"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xb71d1a0c"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setReserveFactor",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xfca7820b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "accrualBlockNumber",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6c540baf"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "accrueInterest",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa6afed95"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf851a440"
+        },
+        {
+            "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",
+            "signature": "0xdd62ed3e"
+        },
+        {
+            "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",
+            "signature": "0x095ea7b3"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOf",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x70a08231"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOfUnderlying",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x3af9e669"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "borrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xc5ebeaec"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "borrowBalanceCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x17bfdfbc"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "borrowBalanceStored",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95dd9193"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowIndex",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xaa5af0fd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowRatePerBlock",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf8f9da28"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comptroller",
+            "outputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5fe3b567"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "decimals",
+            "outputs": [
+                {
+                    "internalType": "uint8",
+                    "name": "",
+                    "type": "uint8"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x313ce567"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
+                }
+            ],
+            "name": "delegateToImplementation",
+            "outputs": [
+                {
+                    "internalType": "bytes",
+                    "name": "",
+                    "type": "bytes"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x0933c1ed"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
+                }
+            ],
+            "name": "delegateToViewImplementation",
+            "outputs": [
+                {
+                    "internalType": "bytes",
+                    "name": "",
+                    "type": "bytes"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x4487152f"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "exchangeRateCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xbd6d894d"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "exchangeRateStored",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x182df0f5"
+        },
+        {
+            "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",
+            "signature": "0xc37f68e2"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "getCash",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x3b1d21a2"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "implementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5c60da1b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "interestRateModel",
+            "outputs": [
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf3fdb15a"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "isCToken",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xfe9c44ae"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "contract CTokenInterface",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                }
+            ],
+            "name": "liquidateBorrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xf5e3c462"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mint",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa0712d68"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "name",
+            "outputs": [
+                {
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x06fdde03"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x26782247"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeem",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xdb006a75"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeemUnderlying",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x852a12e3"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "repayBorrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x0e752702"
+        },
+        {
+            "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",
+            "signature": "0x2608f818"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "reserveFactorMantissa",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x173b9904"
+        },
+        {
+            "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",
+            "signature": "0xb2a02ff1"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "supplyRatePerBlock",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xae9d70b0"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "symbol",
+            "outputs": [
+                {
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95d89b41"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalBorrows",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x47bd3718"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "totalBorrowsCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x73acee98"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x8f840ddd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalSupply",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x18160ddd"
+        },
+        {
+            "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",
+            "signature": "0xa9059cbb"
+        },
+        {
+            "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",
+            "signature": "0x23b872dd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "underlying",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6f307dc3"
+        }
+    ],
     "cUSDC": [
         {
-            "constant": true,
-            "inputs": [],
-            "name": "name",
-            "outputs": [
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "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",
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
+        },
+        {
+            "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",
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+        },
+        {
+            "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",
+            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+        },
+        {
+            "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",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+        },
+        {
+            "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": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "LiquidateBorrow",
+            "type": "event",
+            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+        },
+        {
+            "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",
+            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "oldComptroller",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
+                }
+            ],
+            "name": "NewComptroller",
+            "type": "event",
+            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+        },
+        {
+            "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",
+            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldReserveFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewReserveFactor",
+            "type": "event",
+            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+        },
+        {
+            "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",
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+        },
+        {
+            "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",
+            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+        },
+        {
+            "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",
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
+        },
+        {
+            "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",
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+        },
+        {
+            "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",
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "_acceptAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe9c714f2"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_addReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x3e941010"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_reduceReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x601a0bf1"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
+                }
+            ],
+            "name": "_setComptroller",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4576b5db"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
+                }
+            ],
+            "name": "_setInterestRateModel",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xf2b3abbd"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xb71d1a0c"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setReserveFactor",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xfca7820b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "accrualBlockNumber",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6c540baf"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "accrueInterest",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa6afed95"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf851a440"
+        },
+        {
+            "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",
+            "signature": "0xdd62ed3e"
+        },
+        {
+            "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",
+            "signature": "0x095ea7b3"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOf",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x70a08231"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOfUnderlying",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x3af9e669"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "borrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xc5ebeaec"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "borrowBalanceCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x17bfdfbc"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "borrowBalanceStored",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95dd9193"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowIndex",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xaa5af0fd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowRatePerBlock",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf8f9da28"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comptroller",
+            "outputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5fe3b567"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "decimals",
+            "outputs": [
+                {
+                    "internalType": "uint8",
+                    "name": "",
+                    "type": "uint8"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x313ce567"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "exchangeRateCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xbd6d894d"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "exchangeRateStored",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x182df0f5"
+        },
+        {
+            "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",
+            "signature": "0xc37f68e2"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "getCash",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x3b1d21a2"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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"
+                }
+            ],
+            "name": "initialize",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x1a31d465"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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"
+                }
+            ],
+            "name": "initialize",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x99d8c1b4"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "interestRateModel",
+            "outputs": [
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf3fdb15a"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "isCToken",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xfe9c44ae"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "contract CTokenInterface",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                }
+            ],
+            "name": "liquidateBorrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xf5e3c462"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mint",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa0712d68"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "name",
+            "outputs": [
+                {
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x06fdde03"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x26782247"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeem",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xdb006a75"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeemUnderlying",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x852a12e3"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "repayBorrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x0e752702"
+        },
+        {
+            "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",
+            "signature": "0x2608f818"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "reserveFactorMantissa",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x173b9904"
+        },
+        {
+            "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",
+            "signature": "0xb2a02ff1"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "supplyRatePerBlock",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xae9d70b0"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "symbol",
+            "outputs": [
+                {
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95d89b41"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalBorrows",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x47bd3718"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "totalBorrowsCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x73acee98"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x8f840ddd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalSupply",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x18160ddd"
+        },
+        {
+            "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",
+            "signature": "0xa9059cbb"
+        },
+        {
+            "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",
+            "signature": "0x23b872dd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "underlying",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6f307dc3"
+        }
+    ],
+    "PriceOracle": [
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "asset",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "previousPriceMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "requestedPriceMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newPriceMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "PricePosted",
+            "type": "event",
+            "signature": "0xdd71a1d19fcba687442a1d5c58578f1e409af71a79d10fd95a4d66efd8fa9ae7"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "asset",
+                    "type": "address"
+                }
+            ],
+            "name": "assetPrices",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5e9a523c"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                }
+            ],
+            "name": "getUnderlyingPrice",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xfc57d4df"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "isPriceOracle",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x66331bba"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "asset",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "price",
+                    "type": "uint256"
+                }
+            ],
+            "name": "setDirectPrice",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x09a8acb0"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "underlyingPriceMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "setUnderlyingPrice",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x127ffda0"
+        }
+    ],
+    "PriceOracleProxy": [
+        {
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "comptroller_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "v1PriceOracle_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cEthAddress_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cUsdcAddress_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cSaiAddress_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cDaiAddress_",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "cDaiAddress",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf2c65bf9"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "cEthAddress",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x2ed58e15"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "cSaiAddress",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x21b49128"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "cUsdcAddress",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xff11439b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comptroller",
+            "outputs": [
+                {
+                    "internalType": "contract Comptroller",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5fe3b567"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                }
+            ],
+            "name": "getUnderlyingPrice",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xfc57d4df"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "isPriceOracle",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x66331bba"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "makerUsdOracleKey",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xbc8a4ef4"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "v1PriceOracle",
+            "outputs": [
+                {
+                    "internalType": "contract V1PriceOracleInterface",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xfe10c98d"
+        }
+    ],
+    "Maximillion": [
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "cEther",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x19b68c00"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "name": "cEther_",
+                    "type": "address"
+                }
+            ],
+            "name": "repayBehalfExplicit",
+            "outputs": [],
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "function",
+            "signature": "0x367b7f05"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "name": "borrower",
+                    "type": "address"
+                }
+            ],
+            "name": "repayBehalf",
+            "outputs": [],
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "function",
+            "signature": "0x9f35c3d5"
+        },
+        {
+            "inputs": [
+                {
+                    "name": "cEther_",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
+        }
+    ],
+    "GovernorAlpha": [
+        {
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "timelock_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "comp_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "guardian_",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "id",
+                    "type": "uint256"
+                }
+            ],
+            "name": "ProposalCanceled",
+            "type": "event",
+            "signature": "0x789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "id",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "proposer",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address[]",
+                    "name": "targets",
+                    "type": "address[]"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256[]",
+                    "name": "values",
+                    "type": "uint256[]"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "string[]",
+                    "name": "signatures",
+                    "type": "string[]"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "bytes[]",
+                    "name": "calldatas",
+                    "type": "bytes[]"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "string",
+                    "name": "description",
+                    "type": "string"
+                }
+            ],
+            "name": "ProposalCreated",
+            "type": "event",
+            "signature": "0xbaab6dcd2ae57433cc1372e25bc5139c3bd664075695546fde8821591a226e38"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "id",
+                    "type": "uint256"
+                }
+            ],
+            "name": "ProposalExecuted",
+            "type": "event",
+            "signature": "0x712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "id",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "eta",
+                    "type": "uint256"
+                }
+            ],
+            "name": "ProposalQueued",
+            "type": "event",
+            "signature": "0x9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "voter",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "proposalId",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "bool",
+                    "name": "support",
+                    "type": "bool"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "votes",
+                    "type": "uint256"
+                }
+            ],
+            "name": "VoteCast",
+            "type": "event",
+            "signature": "0x877856338e13f63d0c36822ff0ef736b80934cd90574a3a5bc9262c39d217c46"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "BALLOT_TYPEHASH",
+            "outputs": [
+                {
+                    "internalType": "bytes32",
+                    "name": "",
+                    "type": "bytes32"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdeaaa7cc"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "DOMAIN_TYPEHASH",
+            "outputs": [
+                {
+                    "internalType": "bytes32",
+                    "name": "",
+                    "type": "bytes32"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x20606b70"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "__abdicate",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x760fbc13"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "__acceptAdmin",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xb9a61961"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "eta",
+                    "type": "uint256"
+                }
+            ],
+            "name": "__executeSetTimelockPendingAdmin",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x21f43e42"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "eta",
+                    "type": "uint256"
+                }
+            ],
+            "name": "__queueSetTimelockPendingAdmin",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x91500671"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "proposalId",
+                    "type": "uint256"
+                }
+            ],
+            "name": "cancel",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x40e58ee5"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "proposalId",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "bool",
+                    "name": "support",
+                    "type": "bool"
+                }
+            ],
+            "name": "castVote",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x15373e3d"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "proposalId",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "bool",
+                    "name": "support",
+                    "type": "bool"
+                },
+                {
+                    "internalType": "uint8",
+                    "name": "v",
+                    "type": "uint8"
+                },
+                {
+                    "internalType": "bytes32",
+                    "name": "r",
+                    "type": "bytes32"
+                },
+                {
+                    "internalType": "bytes32",
+                    "name": "s",
+                    "type": "bytes32"
+                }
+            ],
+            "name": "castVoteBySig",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4634c61f"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comp",
+            "outputs": [
+                {
+                    "internalType": "contract CompInterface",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x109d0af8"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "proposalId",
+                    "type": "uint256"
+                }
+            ],
+            "name": "execute",
+            "outputs": [],
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "function",
+            "signature": "0xfe0d94c1"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "proposalId",
+                    "type": "uint256"
+                }
+            ],
+            "name": "getActions",
+            "outputs": [
+                {
+                    "internalType": "address[]",
+                    "name": "targets",
+                    "type": "address[]"
+                },
+                {
+                    "internalType": "uint256[]",
+                    "name": "values",
+                    "type": "uint256[]"
+                },
+                {
+                    "internalType": "string[]",
+                    "name": "signatures",
+                    "type": "string[]"
+                },
+                {
+                    "internalType": "bytes[]",
+                    "name": "calldatas",
+                    "type": "bytes[]"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x328dd982"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "proposalId",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "address",
+                    "name": "voter",
+                    "type": "address"
+                }
+            ],
+            "name": "getReceipt",
+            "outputs": [
+                {
+                    "components": [
+                        {
+                            "internalType": "bool",
+                            "name": "hasVoted",
+                            "type": "bool"
+                        },
+                        {
+                            "internalType": "bool",
+                            "name": "support",
+                            "type": "bool"
+                        },
+                        {
+                            "internalType": "uint96",
+                            "name": "votes",
+                            "type": "uint96"
+                        }
+                    ],
+                    "internalType": "struct GovernorAlpha.Receipt",
+                    "name": "",
+                    "type": "tuple"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xe23a9a52"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "guardian",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x452a9320"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "name": "latestProposalIds",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x17977c61"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "name",
+            "outputs": [
+                {
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x06fdde03"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "proposalCount",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xda35c664"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "proposalMaxOperations",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "pure",
+            "type": "function",
+            "signature": "0x7bdbe4d0"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "proposalThreshold",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "pure",
+            "type": "function",
+            "signature": "0xb58131b0"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "name": "proposals",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "id",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "address",
+                    "name": "proposer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "eta",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "startBlock",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "endBlock",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "forVotes",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "againstVotes",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "bool",
+                    "name": "canceled",
+                    "type": "bool"
+                },
+                {
+                    "internalType": "bool",
+                    "name": "executed",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x013cf08b"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address[]",
+                    "name": "targets",
+                    "type": "address[]"
+                },
+                {
+                    "internalType": "uint256[]",
+                    "name": "values",
+                    "type": "uint256[]"
+                },
+                {
+                    "internalType": "string[]",
+                    "name": "signatures",
+                    "type": "string[]"
+                },
+                {
+                    "internalType": "bytes[]",
+                    "name": "calldatas",
+                    "type": "bytes[]"
+                },
+                {
+                    "internalType": "string",
+                    "name": "description",
+                    "type": "string"
+                }
+            ],
+            "name": "propose",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xda95691a"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "proposalId",
+                    "type": "uint256"
+                }
+            ],
+            "name": "queue",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xddf0b009"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "quorumVotes",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "pure",
+            "type": "function",
+            "signature": "0x24bc1a64"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "proposalId",
+                    "type": "uint256"
+                }
+            ],
+            "name": "state",
+            "outputs": [
+                {
+                    "internalType": "enum GovernorAlpha.ProposalState",
+                    "name": "",
+                    "type": "uint8"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x3e4f49e6"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "timelock",
+            "outputs": [
+                {
+                    "internalType": "contract TimelockInterface",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xd33219b4"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "votingDelay",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "pure",
+            "type": "function",
+            "signature": "0x3932abb1"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "votingPeriod",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "pure",
+            "type": "function",
+            "signature": "0x02a251a3"
+        }
+    ],
+    "cDAI": [
+        {
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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",
+            "signature": "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",
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
+        },
+        {
+            "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",
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+        },
+        {
+            "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",
+            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+        },
+        {
+            "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",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+        },
+        {
+            "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": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "LiquidateBorrow",
+            "type": "event",
+            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+        },
+        {
+            "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",
+            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "oldComptroller",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
+                }
+            ],
+            "name": "NewComptroller",
+            "type": "event",
+            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldImplementation",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newImplementation",
+                    "type": "address"
+                }
+            ],
+            "name": "NewImplementation",
+            "type": "event",
+            "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+        },
+        {
+            "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",
+            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldReserveFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewReserveFactor",
+            "type": "event",
+            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+        },
+        {
+            "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",
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+        },
+        {
+            "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",
+            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+        },
+        {
+            "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",
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
+        },
+        {
+            "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",
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+        },
+        {
+            "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",
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+        },
+        {
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "fallback"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "_acceptAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe9c714f2"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_addReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x3e941010"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_reduceReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x601a0bf1"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
+                }
+            ],
+            "name": "_setComptroller",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4576b5db"
+        },
+        {
+            "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",
+            "signature": "0x555bcc40"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
+                }
+            ],
+            "name": "_setInterestRateModel",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xf2b3abbd"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xb71d1a0c"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setReserveFactor",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xfca7820b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "accrualBlockNumber",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6c540baf"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "accrueInterest",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa6afed95"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf851a440"
+        },
+        {
+            "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",
+            "signature": "0xdd62ed3e"
+        },
+        {
+            "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",
+            "signature": "0x095ea7b3"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOf",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x70a08231"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOfUnderlying",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x3af9e669"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "borrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xc5ebeaec"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "borrowBalanceCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x17bfdfbc"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "borrowBalanceStored",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95dd9193"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowIndex",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xaa5af0fd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowRatePerBlock",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf8f9da28"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comptroller",
+            "outputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5fe3b567"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "decimals",
+            "outputs": [
+                {
+                    "internalType": "uint8",
+                    "name": "",
+                    "type": "uint8"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x313ce567"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
+                }
+            ],
+            "name": "delegateToImplementation",
+            "outputs": [
+                {
+                    "internalType": "bytes",
+                    "name": "",
+                    "type": "bytes"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x0933c1ed"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
+                }
+            ],
+            "name": "delegateToViewImplementation",
+            "outputs": [
+                {
+                    "internalType": "bytes",
+                    "name": "",
+                    "type": "bytes"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x4487152f"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "exchangeRateCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xbd6d894d"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "exchangeRateStored",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x182df0f5"
+        },
+        {
+            "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",
+            "signature": "0xc37f68e2"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "getCash",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x3b1d21a2"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "implementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5c60da1b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "interestRateModel",
+            "outputs": [
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf3fdb15a"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "isCToken",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xfe9c44ae"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "contract CTokenInterface",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                }
+            ],
+            "name": "liquidateBorrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xf5e3c462"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mint",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa0712d68"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "name",
+            "outputs": [
+                {
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x06fdde03"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x26782247"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeem",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xdb006a75"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeemUnderlying",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x852a12e3"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "repayBorrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x0e752702"
+        },
+        {
+            "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",
+            "signature": "0x2608f818"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "reserveFactorMantissa",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x173b9904"
+        },
+        {
+            "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",
+            "signature": "0xb2a02ff1"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "supplyRatePerBlock",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xae9d70b0"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "symbol",
+            "outputs": [
+                {
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95d89b41"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalBorrows",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x47bd3718"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "totalBorrowsCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x73acee98"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x8f840ddd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalSupply",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x18160ddd"
+        },
+        {
+            "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",
+            "signature": "0xa9059cbb"
+        },
+        {
+            "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",
+            "signature": "0x23b872dd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "underlying",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6f307dc3"
+        }
+    ],
+    "DAI": [
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "name",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x06fdde03"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "name": "_owner",
+                    "type": "address"
+                },
+                {
+                    "name": "value",
+                    "type": "uint256"
+                }
+            ],
+            "name": "allocateTo",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x08bca566"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "name": "_spender",
+                    "type": "address"
+                },
+                {
+                    "name": "_value",
+                    "type": "uint256"
+                }
+            ],
+            "name": "approve",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x095ea7b3"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalSupply",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x18160ddd"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "name": "_from",
+                    "type": "address"
+                },
+                {
+                    "name": "_to",
+                    "type": "address"
+                },
+                {
+                    "name": "_value",
+                    "type": "uint256"
+                }
+            ],
+            "name": "transferFrom",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x23b872dd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "decimals",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "uint8"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x313ce567"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "name": "_spender",
+                    "type": "address"
+                },
+                {
+                    "name": "_subtractedValue",
+                    "type": "uint256"
+                }
+            ],
+            "name": "decreaseApproval",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x66188463"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "name": "_owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOf",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x70a08231"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "symbol",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95d89b41"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "name": "_to",
+                    "type": "address"
+                },
+                {
+                    "name": "_value",
+                    "type": "uint256"
+                }
+            ],
+            "name": "transfer",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa9059cbb"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "name": "_spender",
+                    "type": "address"
+                },
+                {
+                    "name": "_addedValue",
+                    "type": "uint256"
+                }
+            ],
+            "name": "increaseApproval",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xd73dd623"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "name": "_owner",
+                    "type": "address"
+                },
+                {
+                    "name": "_spender",
+                    "type": "address"
+                }
+            ],
+            "name": "allowance",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdd62ed3e"
+        },
+        {
+            "inputs": [
+                {
+                    "name": "_initialAmount",
+                    "type": "uint256"
+                },
+                {
+                    "name": "_tokenName",
+                    "type": "string"
+                },
+                {
+                    "name": "_decimalUnits",
+                    "type": "uint8"
+                },
+                {
+                    "name": "_tokenSymbol",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": true,
+                    "name": "owner",
+                    "type": "address"
+                },
+                {
+                    "indexed": true,
+                    "name": "spender",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "name": "value",
+                    "type": "uint256"
+                }
+            ],
+            "name": "Approval",
+            "type": "event",
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": true,
+                    "name": "from",
+                    "type": "address"
+                },
+                {
+                    "indexed": true,
+                    "name": "to",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "name": "value",
+                    "type": "uint256"
+                }
+            ],
+            "name": "Transfer",
+            "type": "event",
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+        }
+    ],
+    "StdComptroller": [
+        {
+            "inputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "string",
+                    "name": "action",
+                    "type": "string"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "bool",
+                    "name": "pauseState",
+                    "type": "bool"
+                }
+            ],
+            "name": "ActionPaused",
+            "type": "event",
+            "signature": "0xef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de0"
+        },
+        {
+            "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",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "MarketEntered",
+            "type": "event",
+            "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "MarketExited",
+            "type": "event",
+            "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                }
+            ],
+            "name": "MarketListed",
+            "type": "event",
+            "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldCloseFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newCloseFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewCloseFactor",
+            "type": "event",
+            "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldCollateralFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newCollateralFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewCollateralFactor",
+            "type": "event",
+            "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldLiquidationIncentiveMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newLiquidationIncentiveMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewLiquidationIncentive",
+            "type": "event",
+            "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldMaxAssets",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newMaxAssets",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewMaxAssets",
+            "type": "event",
+            "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPauseGuardian",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPauseGuardian",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPauseGuardian",
+            "type": "event",
+            "signature": "0x0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract PriceOracle",
+                    "name": "oldPriceOracle",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract PriceOracle",
+                    "name": "newPriceOracle",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPriceOracle",
+            "type": "event",
+            "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract Unitroller",
+                    "name": "unitroller",
+                    "type": "address"
+                }
+            ],
+            "name": "_become",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x1d504dc6"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "bool",
+                    "name": "state",
+                    "type": "bool"
+                }
+            ],
+            "name": "_setBorrowPaused",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x56133fc8"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newCloseFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setCloseFactor",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x317b0b77"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "newCollateralFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setCollateralFactor",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe4028eee"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newLiquidationIncentiveMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setLiquidationIncentive",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4fd42e17"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newMaxAssets",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setMaxAssets",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xd9226ced"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "bool",
+                    "name": "state",
+                    "type": "bool"
+                }
+            ],
+            "name": "_setMintPaused",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x9845f280"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "newPauseGuardian",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPauseGuardian",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x5f5af1aa"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract PriceOracle",
+                    "name": "newOracle",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPriceOracle",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x55ee1fe1"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "bool",
+                    "name": "state",
+                    "type": "bool"
+                }
+            ],
+            "name": "_setSeizePaused",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x2d70db78"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "bool",
+                    "name": "state",
+                    "type": "bool"
+                }
+            ],
+            "name": "_setTransferPaused",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x8ebf6364"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                }
+            ],
+            "name": "_supportMarket",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa76b3fda"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "name": "accountAssets",
+            "outputs": [
+                {
+                    "internalType": "contract CToken",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdce15449"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf851a440"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "borrowAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xda3d454c"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowGuardianPaused",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x9530f644"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "borrowVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x5c778605"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                }
+            ],
+            "name": "checkMembership",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x929fe9a1"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "closeFactorMantissa",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xe8755446"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comptrollerImplementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xbb82aa5e"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address[]",
+                    "name": "cTokens",
+                    "type": "address[]"
+                }
+            ],
+            "name": "enterMarkets",
+            "outputs": [
+                {
+                    "internalType": "uint256[]",
+                    "name": "",
+                    "type": "uint256[]"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xc2998238"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenAddress",
+                    "type": "address"
+                }
+            ],
+            "name": "exitMarket",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xede4edd0"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "getAccountLiquidity",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5ec88c79"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "getAssetsIn",
+            "outputs": [
+                {
+                    "internalType": "contract CToken[]",
+                    "name": "",
+                    "type": "address[]"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xabfceffc"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "isComptroller",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x007e3dd2"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "liquidateBorrowAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x5fc7e71e"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "actualRepayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "liquidateBorrowVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x47ef3b3b"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "actualRepayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "liquidateCalculateSeizeTokens",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xc488847b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "liquidationIncentiveMantissa",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x4ada90af"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "name": "markets",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "isListed",
+                    "type": "bool"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "collateralFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x8e8f294b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "maxAssets",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x94b2294b"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "minter",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mintAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4ef4c3e1"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "mintGuardianPaused",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5dce0515"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "minter",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "actualMintAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "mintTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mintVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x41c728b9"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "oracle",
+            "outputs": [
+                {
+                    "internalType": "contract PriceOracle",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x7dc0d1d0"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pauseGuardian",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x24a3d622"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x26782247"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingComptrollerImplementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdcfbc0c7"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeemAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xeabe7d91"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeemVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x51dff989"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "payer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "repayBorrowAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x24008a62"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "payer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "actualRepayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrowerIndex",
+                    "type": "uint256"
+                }
+            ],
+            "name": "repayBorrowVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x1ededc91"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "seizeAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xd02f7351"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "seizeGuardianPaused",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xac0b0bb7"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "seizeVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x6d35bf91"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "src",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "transferTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "transferAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xbdcdc258"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "transferGuardianPaused",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x87f76303"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "src",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "transferTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "transferVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x6a56947e"
+        }
+    ],
+    "Unitroller": [
+        {
+            "inputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
+        },
+        {
+            "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",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldImplementation",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newImplementation",
+                    "type": "address"
+                }
+            ],
+            "name": "NewImplementation",
+            "type": "event",
+            "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingImplementation",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingImplementation",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPendingImplementation",
+            "type": "event",
+            "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815"
+        },
+        {
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "fallback"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "_acceptAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe9c714f2"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "_acceptImplementation",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xc1e80334"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xb71d1a0c"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "newPendingImplementation",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPendingImplementation",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe992a041"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf851a440"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comptrollerImplementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xbb82aa5e"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x26782247"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingComptrollerImplementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdcfbc0c7"
+        }
+    ],
+    "Comptroller": [
+        {
+            "inputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
+        },
+        {
+            "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",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldImplementation",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newImplementation",
+                    "type": "address"
+                }
+            ],
+            "name": "NewImplementation",
+            "type": "event",
+            "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingImplementation",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingImplementation",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPendingImplementation",
+            "type": "event",
+            "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815"
+        },
+        {
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "fallback"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "_acceptAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe9c714f2"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "_acceptImplementation",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xc1e80334"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xb71d1a0c"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "newPendingImplementation",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPendingImplementation",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe992a041"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf851a440"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comptrollerImplementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xbb82aa5e"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x26782247"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingComptrollerImplementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdcfbc0c7"
+        },
+        {
+            "inputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
+        },
+        {
+            "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",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "MarketEntered",
+            "type": "event",
+            "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "MarketExited",
+            "type": "event",
+            "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                }
+            ],
+            "name": "MarketListed",
+            "type": "event",
+            "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldCloseFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newCloseFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewCloseFactor",
+            "type": "event",
+            "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldCollateralFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newCollateralFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewCollateralFactor",
+            "type": "event",
+            "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldLiquidationIncentiveMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newLiquidationIncentiveMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewLiquidationIncentive",
+            "type": "event",
+            "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldMaxAssets",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newMaxAssets",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewMaxAssets",
+            "type": "event",
+            "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract PriceOracle",
+                    "name": "oldPriceOracle",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract PriceOracle",
+                    "name": "newPriceOracle",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPriceOracle",
+            "type": "event",
+            "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract Unitroller",
+                    "name": "unitroller",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract PriceOracle",
+                    "name": "_oracle",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_closeFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_maxAssets",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "bool",
+                    "name": "reinitializing",
+                    "type": "bool"
+                }
+            ],
+            "name": "_become",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x32000e00"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newCloseFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setCloseFactor",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x317b0b77"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "newCollateralFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setCollateralFactor",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe4028eee"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newLiquidationIncentiveMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setLiquidationIncentive",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4fd42e17"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newMaxAssets",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setMaxAssets",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xd9226ced"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract PriceOracle",
+                    "name": "newOracle",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPriceOracle",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x55ee1fe1"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                }
+            ],
+            "name": "_supportMarket",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa76b3fda"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "name": "accountAssets",
+            "outputs": [
+                {
+                    "internalType": "contract CToken",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdce15449"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf851a440"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "borrowAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xda3d454c"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "borrowVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x5c778605"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                }
+            ],
+            "name": "checkMembership",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x929fe9a1"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "closeFactorMantissa",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xe8755446"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comptrollerImplementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xbb82aa5e"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address[]",
+                    "name": "cTokens",
+                    "type": "address[]"
+                }
+            ],
+            "name": "enterMarkets",
+            "outputs": [
+                {
+                    "internalType": "uint256[]",
+                    "name": "",
+                    "type": "uint256[]"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xc2998238"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenAddress",
+                    "type": "address"
+                }
+            ],
+            "name": "exitMarket",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xede4edd0"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "getAccountLiquidity",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x5ec88c79"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "getAssetsIn",
+            "outputs": [
+                {
+                    "internalType": "contract CToken[]",
+                    "name": "",
+                    "type": "address[]"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xabfceffc"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "isComptroller",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x007e3dd2"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "liquidateBorrowAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x5fc7e71e"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "liquidateBorrowVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x47ef3b3b"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "liquidateCalculateSeizeTokens",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xc488847b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "liquidationIncentiveMantissa",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x4ada90af"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "name": "markets",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "isListed",
+                    "type": "bool"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "collateralFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x8e8f294b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "maxAssets",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x94b2294b"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "minter",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mintAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4ef4c3e1"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "minter",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "mintTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mintVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x41c728b9"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "oracle",
+            "outputs": [
+                {
+                    "internalType": "contract PriceOracle",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x7dc0d1d0"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x26782247"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingComptrollerImplementation",
+            "outputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdcfbc0c7"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeemAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xeabe7d91"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeemVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x51dff989"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "payer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "repayBorrowAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x24008a62"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "payer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrowerIndex",
+                    "type": "uint256"
+                }
+            ],
+            "name": "repayBorrowVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x1ededc91"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "seizeAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xd02f7351"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "seizeVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x6d35bf91"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "src",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "transferTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "transferAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xbdcdc258"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "src",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "transferTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "transferVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x6a56947e"
+        },
+        {
+            "inputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "string",
+                    "name": "action",
+                    "type": "string"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "bool",
+                    "name": "pauseState",
+                    "type": "bool"
+                }
+            ],
+            "name": "ActionPaused",
+            "type": "event",
+            "signature": "0xef159d9a32b2472e32b098f954f3ce62d232939f1c207070b584df1814de2de0"
+        },
+        {
+            "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",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "MarketEntered",
+            "type": "event",
+            "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "string"
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x06fdde03"
+            "name": "MarketExited",
+            "type": "event",
+            "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "spender",
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
                     "type": "address"
+                }
+            ],
+            "name": "MarketListed",
+            "type": "event",
+            "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldCloseFactorMantissa",
+                    "type": "uint256"
                 },
                 {
-                    "name": "amount",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newCloseFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "approve",
-            "outputs": [
+            "name": "NewCloseFactor",
+            "type": "event",
+            "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "bool"
+                    "indexed": false,
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldCollateralFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newCollateralFactorMantissa",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x095ea7b3"
+            "name": "NewCollateralFactor",
+            "type": "event",
+            "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "repayAmount",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldLiquidationIncentiveMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newLiquidationIncentiveMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrow",
-            "outputs": [
+            "name": "NewLiquidationIncentive",
+            "type": "event",
+            "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldMaxAssets",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newMaxAssets",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x0e752702"
+            "name": "NewMaxAssets",
+            "type": "event",
+            "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "reserveFactorMantissa",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPauseGuardian",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPauseGuardian",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x173b9904"
+            "name": "NewPauseGuardian",
+            "type": "event",
+            "signature": "0x0613b6ee6a04f0d09f390e4d9318894b9f6ac7fd83897cd8d18896ba579c401e"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "account",
+                    "indexed": false,
+                    "internalType": "contract PriceOracle",
+                    "name": "oldPriceOracle",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract PriceOracle",
+                    "name": "newPriceOracle",
                     "type": "address"
                 }
             ],
-            "name": "borrowBalanceCurrent",
-            "outputs": [
+            "name": "NewPriceOracle",
+            "type": "event",
+            "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
+        },
+        {
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "internalType": "contract Unitroller",
+                    "name": "unitroller",
+                    "type": "address"
                 }
             ],
+            "name": "_become",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x17bfdfbc"
+            "signature": "0x1d504dc6"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "totalSupply",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "bool",
+                    "name": "state",
+                    "type": "bool"
+                }
+            ],
+            "name": "_setBorrowPaused",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x18160ddd"
+            "signature": "0x56133fc8"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "exchangeRateStored",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newCloseFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setCloseFactor",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x182df0f5"
+            "signature": "0x317b0b77"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "src",
-                    "type": "address"
-                },
-                {
-                    "name": "dst",
+                    "internalType": "contract CToken",
+                    "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "newCollateralFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "transferFrom",
+            "name": "_setCollateralFactor",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x23b872dd"
+            "signature": "0xe4028eee"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "newLiquidationIncentiveMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrowBehalf",
+            "name": "_setLiquidationIncentive",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -493,49 +9826,65 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x2608f818"
+            "signature": "0x4fd42e17"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "pendingAdmin",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newMaxAssets",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setMaxAssets",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x26782247"
+            "signature": "0xd9226ced"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "decimals",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "bool",
+                    "name": "state",
+                    "type": "bool"
+                }
+            ],
+            "name": "_setMintPaused",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x313ce567"
+            "signature": "0x9845f280"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
+                    "internalType": "address",
+                    "name": "newPauseGuardian",
                     "type": "address"
                 }
             ],
-            "name": "balanceOfUnderlying",
+            "name": "_setPauseGuardian",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -543,84 +9892,87 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x3af9e669"
+            "signature": "0x5f5af1aa"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "getCash",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract PriceOracle",
+                    "name": "newOracle",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPriceOracle",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x3b1d21a2"
+            "signature": "0x55ee1fe1"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newComptroller",
-                    "type": "address"
+                    "internalType": "bool",
+                    "name": "state",
+                    "type": "bool"
                 }
             ],
-            "name": "_setComptroller",
+            "name": "_setSeizePaused",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x4576b5db"
+            "signature": "0x2d70db78"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "totalBorrows",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "internalType": "bool",
+                    "name": "state",
+                    "type": "bool"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x47bd3718"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "comptroller",
+            "name": "_setTransferPaused",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "address"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x5fe3b567"
+            "signature": "0x8ebf6364"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "reduceAmount",
-                    "type": "uint256"
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
                 }
             ],
-            "name": "_reduceReserves",
+            "name": "_supportMarket",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -628,44 +9980,42 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x601a0bf1"
+            "signature": "0xa76b3fda"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "initialExchangeRateMantissa",
-            "outputs": [
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                },
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x675d972c"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "accrualBlockNumber",
+            "name": "accountAssets",
             "outputs": [
                 {
+                    "internalType": "contract CToken",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6c540baf"
+            "signature": "0xdce15449"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "underlying",
+            "name": "admin",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
                     "type": "address"
                 }
@@ -673,139 +10023,176 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6f307dc3"
+            "signature": "0xf851a440"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
+                    "internalType": "address",
+                    "name": "cToken",
                     "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "balanceOf",
+            "name": "borrowAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x70a08231"
+            "signature": "0xda3d454c"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "totalBorrowsCurrent",
+            "name": "borrowGuardianPaused",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x73acee98"
+            "signature": "0x9530f644"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "redeemUnderlying",
-            "outputs": [
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
                     "type": "uint256"
                 }
             ],
+            "name": "borrowVerify",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x852a12e3"
+            "signature": "0x5c778605"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "totalReserves",
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract CToken",
+                    "name": "cToken",
+                    "type": "address"
+                }
+            ],
+            "name": "checkMembership",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x8f840ddd"
+            "signature": "0x929fe9a1"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "symbol",
+            "name": "closeFactorMantissa",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95d89b41"
+            "signature": "0xe8755446"
         },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "account",
-                    "type": "address"
-                }
-            ],
-            "name": "borrowBalanceStored",
+            "inputs": [],
+            "name": "comptrollerImplementation",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95dd9193"
+            "signature": "0xbb82aa5e"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "mintAmount",
-                    "type": "uint256"
+                    "internalType": "address[]",
+                    "name": "cTokens",
+                    "type": "address[]"
                 }
             ],
-            "name": "mint",
+            "name": "enterMarkets",
             "outputs": [
                 {
+                    "internalType": "uint256[]",
                     "name": "",
-                    "type": "uint256"
+                    "type": "uint256[]"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa0712d68"
+            "signature": "0xc2998238"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "accrueInterest",
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenAddress",
+                    "type": "address"
+                }
+            ],
+            "name": "exitMarket",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -813,81 +10200,111 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa6afed95"
+            "signature": "0xede4edd0"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "dst",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
-                },
-                {
-                    "name": "amount",
-                    "type": "uint256"
                 }
             ],
-            "name": "transfer",
+            "name": "getAccountLiquidity",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0x5ec88c79"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "borrowIndex",
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "getAssetsIn",
             "outputs": [
                 {
+                    "internalType": "contract CToken[]",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address[]"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xaa5af0fd"
+            "signature": "0xabfceffc"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "supplyRatePerBlock",
+            "name": "isComptroller",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xae9d70b0"
+            "signature": "0x007e3dd2"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
                     "name": "liquidator",
                     "type": "address"
                 },
                 {
+                    "internalType": "address",
                     "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "seizeTokens",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "seize",
+            "name": "liquidateBorrowAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -895,66 +10312,77 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb2a02ff1"
+            "signature": "0x5fc7e71e"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newPendingAdmin",
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
                     "type": "address"
-                }
-            ],
-            "name": "_setPendingAdmin",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "actualRepayAmount",
                     "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xb71d1a0c"
-        },
-        {
-            "constant": false,
-            "inputs": [],
-            "name": "exchangeRateCurrent",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
                     "type": "uint256"
                 }
             ],
+            "name": "liquidateBorrowVerify",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xbd6d894d"
+            "signature": "0x47ef3b3b"
         },
         {
             "constant": true,
             "inputs": [
                 {
-                    "name": "account",
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
                     "type": "address"
-                }
-            ],
-            "name": "getAccountSnapshot",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
                 },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "actualRepayAmount",
                     "type": "uint256"
-                },
+                }
+            ],
+            "name": "liquidateCalculateSeizeTokens",
+            "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 },
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -962,113 +10390,153 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xc37f68e2"
+            "signature": "0xc488847b"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "borrowAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "borrow",
+            "constant": true,
+            "inputs": [],
+            "name": "liquidationIncentiveMantissa",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xc5ebeaec"
+            "signature": "0x4ada90af"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "redeemTokens",
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "name": "markets",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "isListed",
+                    "type": "bool"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "collateralFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "redeem",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x8e8f294b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "maxAssets",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xdb006a75"
+            "signature": "0x94b2294b"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
+                    "internalType": "address",
+                    "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "name": "spender",
+                    "internalType": "address",
+                    "name": "minter",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "allowance",
+            "name": "mintAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xdd62ed3e"
+            "signature": "0x4ef4c3e1"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "_acceptAdmin",
+            "name": "mintGuardianPaused",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xe9c714f2"
+            "signature": "0x5dce0515"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newInterestRateModel",
+                    "internalType": "address",
+                    "name": "cToken",
                     "type": "address"
-                }
-            ],
-            "name": "_setInterestRateModel",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "minter",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "actualMintAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "mintTokens",
                     "type": "uint256"
                 }
             ],
+            "name": "mintVerify",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf2b3abbd"
+            "signature": "0x41c728b9"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "interestRateModel",
+            "name": "oracle",
             "outputs": [
                 {
+                    "internalType": "contract PriceOracle",
                     "name": "",
                     "type": "address"
                 }
@@ -1076,42 +10544,31 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf3fdb15a"
+            "signature": "0x7dc0d1d0"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "repayAmount",
-                    "type": "uint256"
-                },
-                {
-                    "name": "cTokenCollateral",
-                    "type": "address"
-                }
-            ],
-            "name": "liquidateBorrow",
+            "constant": true,
+            "inputs": [],
+            "name": "pauseGuardian",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xf5e3c462"
+            "signature": "0x24a3d622"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "admin",
+            "name": "pendingAdmin",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
                     "type": "address"
                 }
@@ -1119,34 +10576,47 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf851a440"
+            "signature": "0x26782247"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowRatePerBlock",
+            "name": "pendingComptrollerImplementation",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf8f9da28"
+            "signature": "0xdcfbc0c7"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newReserveFactorMantissa",
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "_setReserveFactor",
+            "name": "redeemAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -1154,373 +10624,401 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xfca7820b"
+            "signature": "0xeabe7d91"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "isCToken",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "bool"
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
                 }
             ],
+            "name": "redeemVerify",
+            "outputs": [],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xfe9c44ae"
+            "signature": "0x51dff989"
         },
         {
+            "constant": false,
             "inputs": [
                 {
-                    "name": "underlying_",
+                    "internalType": "address",
+                    "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "name": "comptroller_",
+                    "internalType": "address",
+                    "name": "payer",
                     "type": "address"
                 },
                 {
-                    "name": "interestRateModel_",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "initialExchangeRateMantissa_",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
-                },
-                {
-                    "name": "name_",
-                    "type": "string"
-                },
-                {
-                    "name": "symbol_",
-                    "type": "string"
-                },
+                }
+            ],
+            "name": "repayBorrowAllowed",
+            "outputs": [
                 {
-                    "name": "decimals_",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
+            "type": "function",
+            "signature": "0x24008a62"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "interestAccumulated",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "borrowIndex",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "payer",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "totalBorrows",
-                    "type": "uint256"
-                }
-            ],
-            "name": "AccrueInterest",
-            "type": "event",
-            "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "minter",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "mintAmount",
+                    "internalType": "uint256",
+                    "name": "actualRepayAmount",
                     "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "mintTokens",
+                    "internalType": "uint256",
+                    "name": "borrowerIndex",
                     "type": "uint256"
                 }
             ],
-            "name": "Mint",
-            "type": "event",
-            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+            "name": "repayBorrowVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x1ededc91"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "redeemer",
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "redeemAmount",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "redeemTokens",
-                    "type": "uint256"
-                }
-            ],
-            "name": "Redeem",
-            "type": "event",
-            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
                 {
-                    "indexed": false,
+                    "internalType": "address",
                     "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "borrowAmount",
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
                     "type": "uint256"
-                },
+                }
+            ],
+            "name": "seizeAllowed",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "accountBorrows",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
-                },
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xd02f7351"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "seizeGuardianPaused",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "totalBorrows",
-                    "type": "uint256"
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
                 }
             ],
-            "name": "Borrow",
-            "type": "event",
-            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xac0b0bb7"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "payer",
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "repayAmount",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "accountBorrows",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "totalBorrows",
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "RepayBorrow",
-            "type": "event",
-            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+            "name": "seizeVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x6d35bf91"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "liquidator",
+                    "internalType": "address",
+                    "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "src",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "repayAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "cTokenCollateral",
+                    "internalType": "address",
+                    "name": "dst",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "seizeTokens",
-                    "type": "uint256"
+                    "internalType": "uint256",
+                    "name": "transferTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "transferAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xbdcdc258"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "transferGuardianPaused",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
                 }
             ],
-            "name": "LiquidateBorrow",
-            "type": "event",
-            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x87f76303"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldPendingAdmin",
+                    "internalType": "address",
+                    "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newPendingAdmin",
+                    "internalType": "address",
+                    "name": "src",
                     "type": "address"
-                }
-            ],
-            "name": "NewPendingAdmin",
-            "type": "event",
-            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
+                },
                 {
-                    "indexed": false,
-                    "name": "oldAdmin",
+                    "internalType": "address",
+                    "name": "dst",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newAdmin",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "transferTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewAdmin",
-            "type": "event",
-            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
-        },
+            "name": "transferVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x6a56947e"
+        }
+    ],
+    "Comp": [
         {
-            "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldComptroller",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "newComptroller",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
                 }
             ],
-            "name": "NewComptroller",
-            "type": "event",
-            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldInterestRateModel",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newInterestRateModel",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
-                }
-            ],
-            "name": "NewMarketInterestRateModel",
-            "type": "event",
-            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldReserveFactorMantissa",
-                    "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "newReserveFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "NewReserveFactor",
+            "name": "Approval",
             "type": "event",
-            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "admin",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "delegator",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "reduceAmount",
-                    "type": "uint256"
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "fromDelegate",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newTotalReserves",
-                    "type": "uint256"
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "toDelegate",
+                    "type": "address"
                 }
             ],
-            "name": "ReservesReduced",
+            "name": "DelegateChanged",
             "type": "event",
-            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+            "signature": "0x3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "error",
-                    "type": "uint256"
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "delegate",
+                    "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "info",
+                    "internalType": "uint256",
+                    "name": "previousBalance",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "detail",
+                    "internalType": "uint256",
+                    "name": "newBalance",
                     "type": "uint256"
                 }
             ],
-            "name": "Failure",
+            "name": "DelegateVotesChanged",
             "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+            "signature": "0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724"
         },
         {
             "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"
                 }
@@ -1529,96 +11027,56 @@
             "type": "event",
             "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
         },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": true,
-                    "name": "owner",
-                    "type": "address"
-                },
-                {
-                    "indexed": true,
-                    "name": "spender",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "amount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "Approval",
-            "type": "event",
-            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
-        }
-    ],
-    "PriceOracle": [
-        {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
-                    "name": "underlyingPriceMantissa",
-                    "type": "uint256"
-                }
-            ],
-            "name": "setUnderlyingPrice",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x127ffda0"
-        },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "asset",
-                    "type": "address"
-                }
-            ],
-            "name": "assetPrices",
+            "inputs": [],
+            "name": "DELEGATION_TYPEHASH",
             "outputs": [
                 {
+                    "internalType": "bytes32",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bytes32"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x5e9a523c"
+            "signature": "0xe7a324dc"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "isPriceOracle",
+            "name": "DOMAIN_TYPEHASH",
             "outputs": [
                 {
+                    "internalType": "bytes32",
                     "name": "",
-                    "type": "bool"
+                    "type": "bytes32"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x66331bba"
+            "signature": "0x20606b70"
         },
         {
             "constant": true,
             "inputs": [
                 {
-                    "name": "cToken",
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 }
             ],
-            "name": "getUnderlyingPrice",
+            "name": "allowance",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -1626,66 +11084,48 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xfc57d4df"
-        }
-    ],
-    "PriceOracleProxy": [
+            "signature": "0xdd62ed3e"
+        },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "comptroller",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x5fe3b567"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "isPriceOracle",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "bool"
+                    "internalType": "uint256",
+                    "name": "rawAmount",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x66331bba"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "cEtherAddress",
+            "name": "approve",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "address"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xde836acf"
+            "signature": "0x095ea7b3"
         },
         {
             "constant": true,
             "inputs": [
                 {
-                    "name": "cToken",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
                 }
             ],
-            "name": "getUnderlyingPrice",
+            "name": "balanceOf",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -1693,721 +11133,811 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xfc57d4df"
+            "signature": "0x70a08231"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "v1PriceOracle",
-            "outputs": [
+            "inputs": [
                 {
+                    "internalType": "address",
                     "name": "",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint32",
+                    "name": "",
+                    "type": "uint32"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xfe10c98d"
-        },
-        {
-            "inputs": [
-                {
-                    "name": "comptroller_",
-                    "type": "address"
-                },
+            "name": "checkpoints",
+            "outputs": [
                 {
-                    "name": "v1PriceOracle_",
-                    "type": "address"
+                    "internalType": "uint32",
+                    "name": "fromBlock",
+                    "type": "uint32"
                 },
                 {
-                    "name": "cEtherAddress_",
-                    "type": "address"
+                    "internalType": "uint96",
+                    "name": "votes",
+                    "type": "uint96"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
-        }
-    ],
-    "Maximillion": [
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf1127ed8"
+        },
         {
             "constant": true,
             "inputs": [],
-            "name": "cEther",
+            "name": "decimals",
             "outputs": [
                 {
+                    "internalType": "uint8",
                     "name": "",
-                    "type": "address"
+                    "type": "uint8"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x19b68c00"
+            "signature": "0x313ce567"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "cEther_",
+                    "internalType": "address",
+                    "name": "delegatee",
                     "type": "address"
                 }
             ],
-            "name": "repayBehalfExplicit",
+            "name": "delegate",
             "outputs": [],
-            "payable": true,
-            "stateMutability": "payable",
+            "payable": false,
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x367b7f05"
+            "signature": "0x5c19a95c"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "delegatee",
                     "type": "address"
-                }
-            ],
-            "name": "repayBehalf",
-            "outputs": [],
-            "payable": true,
-            "stateMutability": "payable",
-            "type": "function",
-            "signature": "0x9f35c3d5"
-        },
-        {
-            "inputs": [
+                },
                 {
-                    "name": "cEther_",
-                    "type": "address"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
-        }
-    ],
-    "GovernorAlphaHarness": [
-        {
-            "inputs": [
+                    "internalType": "uint256",
+                    "name": "nonce",
+                    "type": "uint256"
+                },
                 {
-                    "internalType": "address",
-                    "name": "timelock_",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "expiry",
+                    "type": "uint256"
                 },
                 {
-                    "internalType": "address",
-                    "name": "comp_",
-                    "type": "address"
+                    "internalType": "uint8",
+                    "name": "v",
+                    "type": "uint8"
                 },
                 {
-                    "internalType": "address",
-                    "name": "guardian_",
-                    "type": "address"
+                    "internalType": "bytes32",
+                    "name": "r",
+                    "type": "bytes32"
+                },
+                {
+                    "internalType": "bytes32",
+                    "name": "s",
+                    "type": "bytes32"
                 }
             ],
+            "name": "delegateBySig",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
+            "type": "function",
+            "signature": "0xc3cda520"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "internalType": "uint256",
-                    "name": "id",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "internalType": "string",
-                    "name": "description",
-                    "type": "string"
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
                 }
             ],
-            "name": "NewProposal",
-            "type": "event",
-            "signature": "0xa9ef596c73fbcfb4a78bc139b1a19c35247c1f37d2489c0513ad2dd3eb7d8c6b"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
+            "name": "delegates",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "internalType": "uint256",
-                    "name": "id",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
                 }
             ],
-            "name": "ProposalCanceled",
-            "type": "event",
-            "signature": "0x789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x587cde1e"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "internalType": "uint256",
-                    "name": "id",
-                    "type": "uint256"
-                },
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "getCurrentVotes",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "internalType": "uint256",
-                    "name": "eta",
-                    "type": "uint256"
+                    "internalType": "uint96",
+                    "name": "",
+                    "type": "uint96"
                 }
             ],
-            "name": "ProposalExecuted",
-            "type": "event",
-            "signature": "0xf758fc91e01b00ea6b4a6138756f7f28e021f9bf21db6dbf8c36c88eb737257a"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xb4b5ea57"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "internalType": "uint256",
-                    "name": "id",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "eta",
+                    "name": "blockNumber",
                     "type": "uint256"
                 }
             ],
-            "name": "ProposalQueued",
-            "type": "event",
-            "signature": "0x9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda2892"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "internalType": "uint256",
-                    "name": "proposalId",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "internalType": "bool",
-                    "name": "support",
-                    "type": "bool"
-                },
+            "name": "getPriorVotes",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "internalType": "uint256",
-                    "name": "votes",
-                    "type": "uint256"
+                    "internalType": "uint96",
+                    "name": "",
+                    "type": "uint96"
                 }
             ],
-            "name": "VoteCast",
-            "type": "event",
-            "signature": "0xee358b70feb31defabe34f41b973e45e9d6d5742b67e164e6d15ad5c5ae606e4"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x782d6fe1"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "BALLOT_TYPEHASH",
+            "name": "name",
             "outputs": [
                 {
-                    "internalType": "bytes32",
+                    "internalType": "string",
                     "name": "",
-                    "type": "bytes32"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xdeaaa7cc"
+            "signature": "0x06fdde03"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "DOMAIN_TYPEHASH",
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "name": "nonces",
             "outputs": [
                 {
-                    "internalType": "bytes32",
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bytes32"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x20606b70"
+            "signature": "0x7ecebe00"
         },
         {
-            "constant": false,
-            "inputs": [],
-            "name": "__abdicate",
-            "outputs": [],
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "name": "numCheckpoints",
+            "outputs": [
+                {
+                    "internalType": "uint32",
+                    "name": "",
+                    "type": "uint32"
+                }
+            ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x760fbc13"
+            "signature": "0x6fcfff45"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "__acceptAdmin",
-            "outputs": [],
+            "name": "symbol",
+            "outputs": [
+                {
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xb9a61961"
+            "signature": "0x95d89b41"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "internalType": "address",
-                    "name": "newPendingAdmin",
-                    "type": "address"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "totalSupply",
+            "outputs": [
                 {
                     "internalType": "uint256",
-                    "name": "eta",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "__executeSetTimelockPendingAdmin",
-            "outputs": [],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x21f43e42"
+            "signature": "0x18160ddd"
         },
         {
             "constant": false,
             "inputs": [
                 {
                     "internalType": "address",
-                    "name": "newPendingAdmin",
+                    "name": "dst",
                     "type": "address"
                 },
                 {
                     "internalType": "uint256",
-                    "name": "eta",
+                    "name": "rawAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "__queueSetTimelockPendingAdmin",
-            "outputs": [],
+            "name": "transfer",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x91500671"
+            "signature": "0xa9059cbb"
         },
         {
             "constant": false,
             "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "src",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
+                },
                 {
                     "internalType": "uint256",
-                    "name": "proposalId",
+                    "name": "rawAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "cancel",
-            "outputs": [],
+            "name": "transferFrom",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x40e58ee5"
-        },
+            "signature": "0x23b872dd"
+        }
+    ],
+    "cBAT": [
         {
-            "constant": false,
             "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "interestRateModel_",
+                    "type": "address"
+                },
                 {
                     "internalType": "uint256",
-                    "name": "proposalId",
+                    "name": "initialExchangeRateMantissa_",
                     "type": "uint256"
                 },
                 {
-                    "internalType": "bool",
-                    "name": "support",
-                    "type": "bool"
+                    "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"
                 }
             ],
-            "name": "castVote",
-            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x15373e3d"
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "proposalId",
+                    "name": "cashPrior",
                     "type": "uint256"
                 },
                 {
-                    "internalType": "bool",
-                    "name": "support",
-                    "type": "bool"
-                },
-                {
-                    "internalType": "uint8",
-                    "name": "v",
-                    "type": "uint8"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "interestAccumulated",
+                    "type": "uint256"
                 },
                 {
-                    "internalType": "bytes32",
-                    "name": "r",
-                    "type": "bytes32"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "borrowIndex",
+                    "type": "uint256"
                 },
                 {
-                    "internalType": "bytes32",
-                    "name": "s",
-                    "type": "bytes32"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "totalBorrows",
+                    "type": "uint256"
                 }
             ],
-            "name": "castVoteBySig",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x4634c61f"
+            "name": "AccrueInterest",
+            "type": "event",
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "comp",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "internalType": "contract CompInterface",
-                    "name": "",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                },
+                {
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "amount",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x109d0af8"
+            "name": "Approval",
+            "type": "event",
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
         },
         {
-            "constant": false,
+            "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": "proposalId",
+                    "name": "totalBorrows",
                     "type": "uint256"
                 }
             ],
-            "name": "execute",
-            "outputs": [],
-            "payable": true,
-            "stateMutability": "payable",
-            "type": "function",
-            "signature": "0xfe0d94c1"
+            "name": "Borrow",
+            "type": "event",
+            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "proposalId",
+                    "name": "error",
                     "type": "uint256"
-                }
-            ],
-            "name": "getActions",
-            "outputs": [
-                {
-                    "internalType": "address[]",
-                    "name": "targets",
-                    "type": "address[]"
-                },
-                {
-                    "internalType": "uint256[]",
-                    "name": "values",
-                    "type": "uint256[]"
                 },
                 {
-                    "internalType": "string[]",
-                    "name": "signatures",
-                    "type": "string[]"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "info",
+                    "type": "uint256"
                 },
                 {
-                    "internalType": "bytes[]",
-                    "name": "calldatas",
-                    "type": "bytes[]"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "detail",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x328dd982"
+            "name": "Failure",
+            "type": "event",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "proposalId",
+                    "name": "repayAmount",
                     "type": "uint256"
                 },
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "voter",
+                    "name": "cTokenCollateral",
                     "type": "address"
-                }
-            ],
-            "name": "getReceipt",
-            "outputs": [
+                },
                 {
-                    "components": [
-                        {
-                            "internalType": "bool",
-                            "name": "hasVoted",
-                            "type": "bool"
-                        },
-                        {
-                            "internalType": "bool",
-                            "name": "support",
-                            "type": "bool"
-                        },
-                        {
-                            "internalType": "uint96",
-                            "name": "votes",
-                            "type": "uint96"
-                        }
-                    ],
-                    "internalType": "struct GovernorAlpha.Receipt",
-                    "name": "",
-                    "type": "tuple"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xe23a9a52"
+            "name": "LiquidateBorrow",
+            "type": "event",
+            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "guardian",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "",
+                    "name": "minter",
                     "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "mintTokens",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x452a9320"
+            "name": "Mint",
+            "type": "event",
+            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "",
+                    "name": "oldAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newAdmin",
                     "type": "address"
                 }
             ],
-            "name": "latestProposalIds",
-            "outputs": [
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "internalType": "uint256",
-                    "name": "",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "oldComptroller",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x17977c61"
+            "name": "NewComptroller",
+            "type": "event",
+            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "name",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "internalType": "string",
-                    "name": "",
-                    "type": "string"
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "oldInterestRateModel",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x06fdde03"
+            "name": "NewMarketInterestRateModel",
+            "type": "event",
+            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "proposalCount",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "internalType": "uint256",
-                    "name": "",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xda35c664"
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "proposalThreshold",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "",
+                    "name": "oldReserveFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "pure",
-            "type": "function",
-            "signature": "0xb58131b0"
+            "name": "NewReserveFactor",
+            "type": "event",
+            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "",
+                    "name": "redeemTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "proposals",
-            "outputs": [
+            "name": "Redeem",
+            "type": "event",
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "internalType": "uint256",
-                    "name": "id",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "payer",
+                    "type": "address"
                 },
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "proposer",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "eta",
+                    "name": "repayAmount",
                     "type": "uint256"
                 },
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "startBlock",
+                    "name": "accountBorrows",
                     "type": "uint256"
                 },
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "endBlock",
+                    "name": "totalBorrows",
                     "type": "uint256"
+                }
+            ],
+            "name": "RepayBorrow",
+            "type": "event",
+            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "benefactor",
+                    "type": "address"
                 },
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "forVotes",
+                    "name": "addAmount",
                     "type": "uint256"
                 },
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "againstVotes",
+                    "name": "newTotalReserves",
                     "type": "uint256"
-                },
-                {
-                    "internalType": "bool",
-                    "name": "canceled",
-                    "type": "bool"
-                },
-                {
-                    "internalType": "bool",
-                    "name": "executed",
-                    "type": "bool"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x013cf08b"
+            "name": "ReservesAdded",
+            "type": "event",
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "internalType": "address[]",
-                    "name": "targets",
-                    "type": "address[]"
-                },
-                {
-                    "internalType": "uint256[]",
-                    "name": "values",
-                    "type": "uint256[]"
-                },
-                {
-                    "internalType": "string[]",
-                    "name": "signatures",
-                    "type": "string[]"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "admin",
+                    "type": "address"
                 },
                 {
-                    "internalType": "bytes[]",
-                    "name": "calldatas",
-                    "type": "bytes[]"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
                 },
                 {
-                    "internalType": "string",
-                    "name": "description",
-                    "type": "string"
-                }
-            ],
-            "name": "propose",
-            "outputs": [
-                {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "",
+                    "name": "newTotalReserves",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xda95691a"
+            "name": "ReservesReduced",
+            "type": "event",
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "from",
+                    "type": "address"
+                },
+                {
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "to",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "proposalId",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "queue",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xddf0b009"
+            "name": "Transfer",
+            "type": "event",
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [],
-            "name": "quorumVotes",
+            "name": "_acceptAdmin",
             "outputs": [
                 {
                     "internalType": "uint256",
@@ -2416,52 +11946,20 @@
                 }
             ],
             "payable": false,
-            "stateMutability": "pure",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x24bc1a64"
+            "signature": "0xe9c714f2"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
                     "internalType": "uint256",
-                    "name": "proposalId",
+                    "name": "addAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "state",
-            "outputs": [
-                {
-                    "internalType": "enum GovernorAlpha.ProposalState",
-                    "name": "",
-                    "type": "uint8"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x3e4f49e6"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "timelock",
-            "outputs": [
-                {
-                    "internalType": "contract TimelockInterface",
-                    "name": "",
-                    "type": "address"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xd33219b4"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "votingDelay",
+            "name": "_addReserves",
             "outputs": [
                 {
                     "internalType": "uint256",
@@ -2470,78 +11968,67 @@
                 }
             ],
             "payable": false,
-            "stateMutability": "pure",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x3932abb1"
+            "signature": "0x3e941010"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "votingPeriod",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
                     "internalType": "uint256",
-                    "name": "",
+                    "name": "reduceAmount",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "pure",
-            "type": "function",
-            "signature": "0x02a251a3"
-        }
-    ],
-    "cDAI": [
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "name",
+            "name": "_reduceReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x06fdde03"
+            "signature": "0x601a0bf1"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "spender",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
                     "type": "address"
-                },
-                {
-                    "name": "amount",
-                    "type": "uint256"
                 }
             ],
-            "name": "approve",
+            "name": "_setComptroller",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x095ea7b3"
+            "signature": "0x4576b5db"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "repayAmount",
-                    "type": "uint256"
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
                 }
             ],
-            "name": "repayBorrow",
+            "name": "_setInterestRateModel",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2549,34 +12036,43 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x0e752702"
+            "signature": "0xf2b3abbd"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "reserveFactorMantissa",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPendingAdmin",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x173b9904"
+            "signature": "0xb71d1a0c"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "account",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
                 }
             ],
-            "name": "borrowBalanceCurrent",
+            "name": "_setReserveFactor",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2584,14 +12080,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x17bfdfbc"
+            "signature": "0xfca7820b"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "totalSupply",
+            "name": "accrualBlockNumber",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2599,96 +12096,107 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x18160ddd"
+            "signature": "0x6c540baf"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [],
-            "name": "exchangeRateStored",
+            "name": "accrueInterest",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa6afed95"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x182df0f5"
+            "signature": "0xf851a440"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "src",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "name": "dst",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
-                },
-                {
-                    "name": "amount",
-                    "type": "uint256"
                 }
             ],
-            "name": "transferFrom",
+            "name": "allowance",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x23b872dd"
+            "signature": "0xdd62ed3e"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 },
                 {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrowBehalf",
+            "name": "approve",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x2608f818"
+            "signature": "0x095ea7b3"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "pendingAdmin",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x26782247"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "decimals",
+            "name": "balanceOf",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2696,12 +12204,13 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x313ce567"
+            "signature": "0x70a08231"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "owner",
                     "type": "address"
                 }
@@ -2709,6 +12218,7 @@
             "name": "balanceOfUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2718,32 +12228,19 @@
             "type": "function",
             "signature": "0x3af9e669"
         },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "getCash",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x3b1d21a2"
-        },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newComptroller",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setComptroller",
+            "name": "borrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2751,64 +12248,59 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x4576b5db"
+            "signature": "0xc5ebeaec"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "totalBorrows",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x47bd3718"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "comptroller",
+            "name": "borrowBalanceCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x5fe3b567"
+            "signature": "0x17bfdfbc"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "reduceAmount",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
                 }
             ],
-            "name": "_reduceReserves",
+            "name": "borrowBalanceStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x601a0bf1"
+            "signature": "0x95dd9193"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "initialExchangeRateMantissa",
+            "name": "borrowIndex",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2816,14 +12308,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x675d972c"
+            "signature": "0xaa5af0fd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "accrualBlockNumber",
+            "name": "borrowRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2831,14 +12324,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6c540baf"
+            "signature": "0xf8f9da28"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "underlying",
+            "name": "comptroller",
             "outputs": [
                 {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "",
                     "type": "address"
                 }
@@ -2846,54 +12340,31 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6f307dc3"
+            "signature": "0x5fe3b567"
         },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "owner",
-                    "type": "address"
-                }
-            ],
-            "name": "balanceOf",
+            "inputs": [],
+            "name": "decimals",
             "outputs": [
                 {
+                    "internalType": "uint8",
                     "name": "",
-                    "type": "uint256"
+                    "type": "uint8"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x70a08231"
+            "signature": "0x313ce567"
         },
         {
             "constant": false,
             "inputs": [],
-            "name": "totalBorrowsCurrent",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x73acee98"
-        },
-        {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "redeemUnderlying",
+            "name": "exchangeRateCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2901,14 +12372,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x852a12e3"
+            "signature": "0xbd6d894d"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "totalReserves",
+            "name": "exchangeRateStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2916,34 +12388,36 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x8f840ddd"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "symbol",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "string"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x95d89b41"
+            "signature": "0x182df0f5"
         },
         {
             "constant": true,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "account",
                     "type": "address"
                 }
             ],
-            "name": "borrowBalanceStored",
+            "name": "getAccountSnapshot",
             "outputs": [
                 {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -2951,116 +12425,166 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95dd9193"
-        },
-        {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "mintAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "mint",
+            "signature": "0xc37f68e2"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "getCash",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xa0712d68"
+            "signature": "0x3b1d21a2"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "accrueInterest",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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"
                 }
             ],
+            "name": "initialize",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa6afed95"
+            "signature": "0x1a31d465"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "dst",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
                     "type": "address"
                 },
                 {
-                    "name": "amount",
+                    "internalType": "contract InterestRateModel",
+                    "name": "interestRateModel_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "initialExchangeRateMantissa_",
                     "type": "uint256"
-                }
-            ],
-            "name": "transfer",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "bool"
+                    "internalType": "string",
+                    "name": "name_",
+                    "type": "string"
+                },
+                {
+                    "internalType": "string",
+                    "name": "symbol_",
+                    "type": "string"
+                },
+                {
+                    "internalType": "uint8",
+                    "name": "decimals_",
+                    "type": "uint8"
                 }
             ],
+            "name": "initialize",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0x99d8c1b4"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowIndex",
+            "name": "interestRateModel",
             "outputs": [
                 {
+                    "internalType": "contract InterestRateModel",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xaa5af0fd"
+            "signature": "0xf3fdb15a"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "supplyRatePerBlock",
+            "name": "isCToken",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xae9d70b0"
+            "signature": "0xfe9c44ae"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
+                    "internalType": "address",
                     "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "seizeTokens",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
+                },
+                {
+                    "internalType": "contract CTokenInterface",
+                    "name": "cTokenCollateral",
+                    "type": "address"
                 }
             ],
-            "name": "seize",
+            "name": "liquidateBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -3068,34 +12592,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb2a02ff1"
+            "signature": "0xf5e3c462"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newPendingAdmin",
-                    "type": "address"
-                }
-            ],
-            "name": "_setPendingAdmin",
-            "outputs": [
-                {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "mintAmount",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xb71d1a0c"
-        },
-        {
-            "constant": false,
-            "inputs": [],
-            "name": "exchangeRateCurrent",
+            "name": "mint",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -3103,64 +12614,45 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xbd6d894d"
+            "signature": "0xa0712d68"
         },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "account",
-                    "type": "address"
-                }
-            ],
-            "name": "getAccountSnapshot",
+            "inputs": [],
+            "name": "name",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xc37f68e2"
+            "signature": "0x06fdde03"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "borrowAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "borrow",
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
             "outputs": [
                 {
+                    "internalType": "address payable",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xc5ebeaec"
+            "signature": "0x26782247"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "uint256",
                     "name": "redeemTokens",
                     "type": "uint256"
                 }
@@ -3168,6 +12660,7 @@
             "name": "redeem",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -3178,35 +12671,18 @@
             "signature": "0xdb006a75"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
-                    "type": "address"
-                },
-                {
-                    "name": "spender",
-                    "type": "address"
-                }
-            ],
-            "name": "allowance",
-            "outputs": [
-                {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xdd62ed3e"
-        },
-        {
-            "constant": false,
-            "inputs": [],
-            "name": "_acceptAdmin",
+            "name": "redeemUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -3214,19 +12690,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe9c714f2"
+            "signature": "0x852a12e3"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newInterestRateModel",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setInterestRateModel",
+            "name": "repayBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -3234,42 +12712,26 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf2b3abbd"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "interestRateModel",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "address"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xf3fdb15a"
+            "signature": "0x0e752702"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "borrower",
                     "type": "address"
                 },
                 {
+                    "internalType": "uint256",
                     "name": "repayAmount",
                     "type": "uint256"
-                },
-                {
-                    "name": "cTokenCollateral",
-                    "type": "address"
                 }
             ],
-            "name": "liquidateBorrow",
+            "name": "repayBorrowBehalf",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -3277,29 +12739,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf5e3c462"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "admin",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "address"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xf851a440"
+            "signature": "0x2608f818"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowRatePerBlock",
+            "name": "reserveFactorMantissa",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -3307,19 +12755,31 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf8f9da28"
+            "signature": "0x173b9904"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newReserveFactorMantissa",
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "_setReserveFactor",
+            "name": "seize",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -3327,406 +12787,386 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xfca7820b"
+            "signature": "0xb2a02ff1"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "isCToken",
+            "name": "supplyRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xfe9c44ae"
+            "signature": "0xae9d70b0"
         },
         {
-            "inputs": [
-                {
-                    "name": "underlying_",
-                    "type": "address"
-                },
-                {
-                    "name": "comptroller_",
-                    "type": "address"
-                },
-                {
-                    "name": "interestRateModel_",
-                    "type": "address"
-                },
-                {
-                    "name": "initialExchangeRateMantissa_",
-                    "type": "uint256"
-                },
-                {
-                    "name": "name_",
-                    "type": "string"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "symbol",
+            "outputs": [
                 {
-                    "name": "symbol_",
+                    "internalType": "string",
+                    "name": "",
                     "type": "string"
-                },
-                {
-                    "name": "decimals_",
-                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95d89b41"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "interestAccumulated",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrowIndex",
-                    "type": "uint256"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "totalBorrows",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "totalBorrows",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "AccrueInterest",
-            "type": "event",
-            "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x47bd3718"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "minter",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "mintAmount",
-                    "type": "uint256"
-                },
+            "constant": false,
+            "inputs": [],
+            "name": "totalBorrowsCurrent",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "mintTokens",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Mint",
-            "type": "event",
-            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x73acee98"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "redeemer",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "totalReserves",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "redeemTokens",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Redeem",
-            "type": "event",
-            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x8f840ddd"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrowAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "accountBorrows",
-                    "type": "uint256"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "totalSupply",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "totalBorrows",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Borrow",
-            "type": "event",
-            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x18160ddd"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "payer",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "dst",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "repayAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "accountBorrows",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
-                },
+                }
+            ],
+            "name": "transfer",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "totalBorrows",
-                    "type": "uint256"
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
                 }
             ],
-            "name": "RepayBorrow",
-            "type": "event",
-            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa9059cbb"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "src",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "repayAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "cTokenCollateral",
+                    "internalType": "address",
+                    "name": "dst",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "seizeTokens",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "LiquidateBorrow",
-            "type": "event",
-            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldPendingAdmin",
-                    "type": "address"
-                },
+            "name": "transferFrom",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newPendingAdmin",
-                    "type": "address"
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
                 }
             ],
-            "name": "NewPendingAdmin",
-            "type": "event",
-            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x23b872dd"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldAdmin",
-                    "type": "address"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "underlying",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newAdmin",
+                    "internalType": "address",
+                    "name": "",
                     "type": "address"
                 }
             ],
-            "name": "NewAdmin",
-            "type": "event",
-            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
-        },
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6f307dc3"
+        }
+    ],
+    "Base0bps_Slope2000bps": [
         {
-            "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldComptroller",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "baseRatePerYear",
+                    "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "newComptroller",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "multiplierPerYear",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewComptroller",
-            "type": "event",
-            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "oldInterestRateModel",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "baseRatePerBlock",
+                    "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "newInterestRateModel",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "multiplierPerBlock",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewMarketInterestRateModel",
+            "name": "NewInterestParams",
             "type": "event",
-            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+            "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27"
         },
         {
-            "anonymous": false,
-            "inputs": [
+            "constant": true,
+            "inputs": [],
+            "name": "baseRatePerBlock",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "oldReserveFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
-                },
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf14039de"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "blocksPerYear",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newReserveFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "NewReserveFactor",
-            "type": "event",
-            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xa385fb96"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "admin",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "cash",
+                    "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "reduceAmount",
+                    "internalType": "uint256",
+                    "name": "borrows",
                     "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "newTotalReserves",
+                    "internalType": "uint256",
+                    "name": "reserves",
                     "type": "uint256"
                 }
             ],
-            "name": "ReservesReduced",
-            "type": "event",
-            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+            "name": "getBorrowRate",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x15f24053"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "error",
+                    "internalType": "uint256",
+                    "name": "cash",
                     "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "info",
+                    "internalType": "uint256",
+                    "name": "borrows",
                     "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "detail",
+                    "internalType": "uint256",
+                    "name": "reserves",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "reserveFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "Failure",
-            "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+            "name": "getSupplyRate",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xb8168816"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": true,
-                    "name": "from",
-                    "type": "address"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "isInterestRateModel",
+            "outputs": [
                 {
-                    "indexed": true,
-                    "name": "to",
-                    "type": "address"
-                },
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x2191f92a"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "multiplierPerBlock",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Transfer",
-            "type": "event",
-            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x8726bb89"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "owner",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "cash",
+                    "type": "uint256"
                 },
                 {
-                    "indexed": true,
-                    "name": "spender",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "borrows",
+                    "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "reserves",
                     "type": "uint256"
                 }
             ],
-            "name": "Approval",
-            "type": "event",
-            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+            "name": "utilizationRate",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "pure",
+            "type": "function",
+            "signature": "0x6e71e2d8"
         }
     ],
-    "DAI": [
+    "BAT": [
         {
             "constant": true,
             "inputs": [],
@@ -3817,12 +13257,7 @@
                 }
             ],
             "name": "transferFrom",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "bool"
-                }
-            ],
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
@@ -3915,12 +13350,7 @@
                 }
             ],
             "name": "transfer",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "bool"
-                }
-            ],
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
@@ -4045,401 +13475,443 @@
             "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
         }
     ],
-    "StdComptroller": [
+    "cErc20Delegate": [
         {
-            "constant": true,
             "inputs": [],
-            "name": "isComptroller",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "bool"
-                }
-            ],
             "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x007e3dd2"
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
-                    "name": "payer",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "cashPrior",
+                    "type": "uint256"
                 },
                 {
-                    "name": "borrower",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "interestAccumulated",
+                    "type": "uint256"
                 },
                 {
-                    "name": "repayAmount",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "borrowIndex",
                     "type": "uint256"
                 },
                 {
-                    "name": "borrowerIndex",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "totalBorrows",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrowVerify",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x1ededc91"
+            "name": "AccrueInterest",
+            "type": "event",
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cToken",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "name": "payer",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 },
                 {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "amount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "Approval",
+            "type": "event",
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
                     "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "repayAmount",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
                     "type": "uint256"
-                }
-            ],
-            "name": "repayBorrowAllowed",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "accountBorrows",
                     "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x24008a62"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "pendingAdmin",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "totalBorrows",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x26782247"
+            "name": "Borrow",
+            "type": "event",
+            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "newCloseFactorMantissa",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "error",
                     "type": "uint256"
-                }
-            ],
-            "name": "_setCloseFactor",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "info",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "detail",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x317b0b77"
+            "name": "Failure",
+            "type": "event",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "unitroller",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "liquidator",
                     "type": "address"
                 },
                 {
-                    "name": "_oracle",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "_closeFactorMantissa",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
                 },
                 {
-                    "name": "_maxAssets",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
                 },
                 {
-                    "name": "reinitializing",
-                    "type": "bool"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "_become",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x32000e00"
+            "name": "LiquidateBorrow",
+            "type": "event",
+            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
+                    "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": "mintVerify",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x41c728b9"
+            "name": "Mint",
+            "type": "event",
+            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cTokenBorrowed",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldAdmin",
                     "type": "address"
                 },
                 {
-                    "name": "cTokenCollateral",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newAdmin",
                     "type": "address"
-                },
+                }
+            ],
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "liquidator",
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "oldComptroller",
                     "type": "address"
                 },
                 {
-                    "name": "borrower",
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
                     "type": "address"
-                },
-                {
-                    "name": "repayAmount",
-                    "type": "uint256"
-                },
-                {
-                    "name": "seizeTokens",
-                    "type": "uint256"
                 }
             ],
-            "name": "liquidateBorrowVerify",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x47ef3b3b"
+            "name": "NewComptroller",
+            "type": "event",
+            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "liquidationIncentiveMantissa",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "oldInterestRateModel",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x4ada90af"
+            "name": "NewMarketInterestRateModel",
+            "type": "event",
+            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cToken",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
                     "type": "address"
                 },
                 {
-                    "name": "minter",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
                     "type": "address"
-                },
-                {
-                    "name": "mintAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "mintAllowed",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x4ef4c3e1"
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "newLiquidationIncentiveMantissa",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldReserveFactorMantissa",
                     "type": "uint256"
-                }
-            ],
-            "name": "_setLiquidationIncentive",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x4fd42e17"
+            "name": "NewReserveFactor",
+            "type": "event",
+            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
+                    "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": "redeemVerify",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x51dff989"
+            "name": "Redeem",
+            "type": "event",
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "newOracle",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "payer",
                     "type": "address"
-                }
-            ],
-            "name": "_setPriceOracle",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "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"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x55ee1fe1"
+            "name": "RepayBorrow",
+            "type": "event",
+            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cToken",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "benefactor",
                     "type": "address"
                 },
                 {
-                    "name": "borrower",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
                 },
                 {
-                    "name": "borrowAmount",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
                     "type": "uint256"
                 }
             ],
-            "name": "borrowVerify",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x5c778605"
+            "name": "ReservesAdded",
+            "type": "event",
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "account",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "admin",
                     "type": "address"
-                }
-            ],
-            "name": "getAccountLiquidity",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
                 },
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
                     "type": "uint256"
                 },
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x5ec88c79"
+            "name": "ReservesReduced",
+            "type": "event",
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cTokenBorrowed",
-                    "type": "address"
-                },
-                {
-                    "name": "cTokenCollateral",
-                    "type": "address"
-                },
-                {
-                    "name": "liquidator",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "from",
                     "type": "address"
                 },
                 {
-                    "name": "borrower",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "to",
                     "type": "address"
                 },
                 {
-                    "name": "repayAmount",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "liquidateBorrowAllowed",
+            "name": "Transfer",
+            "type": "event",
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "_acceptAdmin",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -4447,155 +13919,157 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x5fc7e71e"
+            "signature": "0xe9c714f2"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
-                    "name": "src",
-                    "type": "address"
-                },
-                {
-                    "name": "dst",
-                    "type": "address"
-                },
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_addReserves",
+            "outputs": [
                 {
-                    "name": "transferTokens",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "transferVerify",
-            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x6a56947e"
+            "signature": "0x3e941010"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cTokenCollateral",
-                    "type": "address"
-                },
-                {
-                    "name": "cTokenBorrowed",
-                    "type": "address"
-                },
-                {
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "seizeTokens",
-                    "type": "uint256"
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
                 }
             ],
-            "name": "seizeVerify",
+            "name": "_becomeImplementation",
             "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x6d35bf91"
+            "signature": "0x56e67728"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "oracle",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_reduceReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x601a0bf1"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "_resignImplementation",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x7dc0d1d0"
+            "signature": "0x153ab505"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
                     "type": "address"
                 }
             ],
-            "name": "markets",
+            "name": "_setComptroller",
             "outputs": [
                 {
-                    "name": "isListed",
-                    "type": "bool"
-                },
-                {
-                    "name": "collateralFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x8e8f294b"
+            "signature": "0x4576b5db"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "account",
-                    "type": "address"
-                },
-                {
-                    "name": "cToken",
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
                     "type": "address"
                 }
             ],
-            "name": "checkMembership",
+            "name": "_setInterestRateModel",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x929fe9a1"
+            "signature": "0xf2b3abbd"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "maxAssets",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "_setPendingAdmin",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x94b2294b"
+            "signature": "0xb71d1a0c"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
                 }
             ],
-            "name": "_supportMarket",
+            "name": "_setReserveFactor",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -4603,34 +14077,47 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa76b3fda"
+            "signature": "0xfca7820b"
         },
         {
             "constant": true,
-            "inputs": [
+            "inputs": [],
+            "name": "accrualBlockNumber",
+            "outputs": [
                 {
-                    "name": "account",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
                 }
             ],
-            "name": "getAssetsIn",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6c540baf"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "accrueInterest",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address[]"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xabfceffc"
+            "signature": "0xa6afed95"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "comptrollerImplementation",
+            "name": "admin",
             "outputs": [
                 {
+                    "internalType": "address payable",
                     "name": "",
                     "type": "address"
                 }
@@ -4638,83 +14125,75 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xbb82aa5e"
+            "signature": "0xf851a440"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
-                    "name": "src",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "name": "dst",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
-                },
-                {
-                    "name": "transferTokens",
-                    "type": "uint256"
                 }
             ],
-            "name": "transferAllowed",
+            "name": "allowance",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xbdcdc258"
+            "signature": "0xdd62ed3e"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cTokens",
-                    "type": "address[]"
+                    "internalType": "address",
+                    "name": "spender",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "amount",
+                    "type": "uint256"
                 }
             ],
-            "name": "enterMarkets",
+            "name": "approve",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256[]"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xc2998238"
+            "signature": "0x095ea7b3"
         },
         {
             "constant": true,
             "inputs": [
                 {
-                    "name": "cTokenBorrowed",
-                    "type": "address"
-                },
-                {
-                    "name": "cTokenCollateral",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
-                },
-                {
-                    "name": "repayAmount",
-                    "type": "uint256"
                 }
             ],
-            "name": "liquidateCalculateSeizeTokens",
+            "name": "balanceOf",
             "outputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -4722,35 +14201,21 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xc488847b"
+            "signature": "0x70a08231"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cTokenCollateral",
-                    "type": "address"
-                },
-                {
-                    "name": "cTokenBorrowed",
-                    "type": "address"
-                },
-                {
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
-                },
-                {
-                    "name": "seizeTokens",
-                    "type": "uint256"
                 }
             ],
-            "name": "seizeAllowed",
+            "name": "balanceOfUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -4758,19 +14223,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xd02f7351"
+            "signature": "0x3af9e669"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newMaxAssets",
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "_setMaxAssets",
+            "name": "borrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -4778,27 +14245,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xd9226ced"
+            "signature": "0xc5ebeaec"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
-                },
-                {
-                    "name": "borrowAmount",
-                    "type": "uint256"
                 }
             ],
-            "name": "borrowAllowed",
+            "name": "borrowBalanceCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -4806,23 +14267,69 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xda3d454c"
+            "signature": "0x17bfdfbc"
         },
         {
             "constant": true,
             "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
-                },
+                }
+            ],
+            "name": "borrowBalanceStored",
+            "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "accountAssets",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95dd9193"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowIndex",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xaa5af0fd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowRatePerBlock",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf8f9da28"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "comptroller",
             "outputs": [
                 {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "",
                     "type": "address"
                 }
@@ -4830,38 +14337,31 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xdce15449"
+            "signature": "0x5fe3b567"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "pendingComptrollerImplementation",
+            "name": "decimals",
             "outputs": [
                 {
+                    "internalType": "uint8",
                     "name": "",
-                    "type": "address"
+                    "type": "uint8"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xdcfbc0c7"
+            "signature": "0x313ce567"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
-                    "name": "newCollateralFactorMantissa",
-                    "type": "uint256"
-                }
-            ],
-            "name": "_setCollateralFactor",
+            "inputs": [],
+            "name": "exchangeRateCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -4869,14 +14369,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe4028eee"
+            "signature": "0xbd6d894d"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "closeFactorMantissa",
+            "name": "exchangeRateStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -4884,62 +14385,68 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xe8755446"
+            "signature": "0x182df0f5"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "cToken",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
+                }
+            ],
+            "name": "getAccountSnapshot",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
                 },
                 {
-                    "name": "redeemer",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
                 },
                 {
-                    "name": "redeemTokens",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
-                }
-            ],
-            "name": "redeemAllowed",
-            "outputs": [
+                },
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xeabe7d91"
+            "signature": "0xc37f68e2"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "cTokenAddress",
-                    "type": "address"
-                }
-            ],
-            "name": "exitMarket",
+            "constant": true,
+            "inputs": [],
+            "name": "getCash",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xede4edd0"
+            "signature": "0x3b1d21a2"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "admin",
+            "name": "implementation",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
                     "type": "address"
                 }
@@ -4947,210 +14454,150 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf851a440"
-        },
-        {
-            "inputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "cToken",
-                    "type": "address"
-                }
-            ],
-            "name": "MarketListed",
-            "type": "event",
-            "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+            "signature": "0x5c60da1b"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "cToken",
+                    "internalType": "address",
+                    "name": "underlying_",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "account",
-                    "type": "address"
-                }
-            ],
-            "name": "MarketEntered",
-            "type": "event",
-            "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "cToken",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "account",
+                    "internalType": "contract InterestRateModel",
+                    "name": "interestRateModel_",
                     "type": "address"
-                }
-            ],
-            "name": "MarketExited",
-            "type": "event",
-            "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldCloseFactorMantissa",
-                    "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "newCloseFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "initialExchangeRateMantissa_",
                     "type": "uint256"
-                }
-            ],
-            "name": "NewCloseFactor",
-            "type": "event",
-            "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
+                },
                 {
-                    "indexed": false,
-                    "name": "cToken",
-                    "type": "address"
+                    "internalType": "string",
+                    "name": "name_",
+                    "type": "string"
                 },
                 {
-                    "indexed": false,
-                    "name": "oldCollateralFactorMantissa",
-                    "type": "uint256"
+                    "internalType": "string",
+                    "name": "symbol_",
+                    "type": "string"
                 },
                 {
-                    "indexed": false,
-                    "name": "newCollateralFactorMantissa",
-                    "type": "uint256"
+                    "internalType": "uint8",
+                    "name": "decimals_",
+                    "type": "uint8"
                 }
             ],
-            "name": "NewCollateralFactor",
-            "type": "event",
-            "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
+            "name": "initialize",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x1a31d465"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldLiquidationIncentiveMantissa",
-                    "type": "uint256"
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newLiquidationIncentiveMantissa",
-                    "type": "uint256"
-                }
-            ],
-            "name": "NewLiquidationIncentive",
-            "type": "event",
-            "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
+                    "internalType": "contract InterestRateModel",
+                    "name": "interestRateModel_",
+                    "type": "address"
+                },
                 {
-                    "indexed": false,
-                    "name": "oldMaxAssets",
+                    "internalType": "uint256",
+                    "name": "initialExchangeRateMantissa_",
                     "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "newMaxAssets",
-                    "type": "uint256"
-                }
-            ],
-            "name": "NewMaxAssets",
-            "type": "event",
-            "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
+                    "internalType": "string",
+                    "name": "name_",
+                    "type": "string"
+                },
                 {
-                    "indexed": false,
-                    "name": "oldPriceOracle",
-                    "type": "address"
+                    "internalType": "string",
+                    "name": "symbol_",
+                    "type": "string"
                 },
                 {
-                    "indexed": false,
-                    "name": "newPriceOracle",
-                    "type": "address"
+                    "internalType": "uint8",
+                    "name": "decimals_",
+                    "type": "uint8"
                 }
             ],
-            "name": "NewPriceOracle",
-            "type": "event",
-            "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
+            "name": "initialize",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x99d8c1b4"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "error",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "info",
-                    "type": "uint256"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "interestRateModel",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "detail",
-                    "type": "uint256"
+                    "internalType": "contract InterestRateModel",
+                    "name": "",
+                    "type": "address"
                 }
             ],
-            "name": "Failure",
-            "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
-        }
-    ],
-    "Unitroller": [
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf3fdb15a"
+        },
         {
             "constant": true,
             "inputs": [],
-            "name": "pendingAdmin",
+            "name": "isCToken",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "address"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x26782247"
+            "signature": "0xfe9c44ae"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newPendingAdmin",
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "contract CTokenInterface",
+                    "name": "cTokenCollateral",
                     "type": "address"
                 }
             ],
-            "name": "_setPendingAdmin",
+            "name": "liquidateBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -5158,44 +14605,53 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb71d1a0c"
+            "signature": "0xf5e3c462"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "comptrollerImplementation",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "mint",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xbb82aa5e"
+            "signature": "0xa0712d68"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "_acceptImplementation",
+            "name": "name",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xc1e80334"
+            "signature": "0x06fdde03"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "pendingComptrollerImplementation",
+            "name": "pendingAdmin",
             "outputs": [
                 {
+                    "internalType": "address payable",
                     "name": "",
                     "type": "address"
                 }
@@ -5203,19 +14659,21 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xdcfbc0c7"
+            "signature": "0x26782247"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newPendingImplementation",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setPendingImplementation",
+            "name": "redeem",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -5223,14 +14681,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe992a041"
+            "signature": "0xdb006a75"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "_acceptAdmin",
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeemUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -5238,253 +14703,267 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe9c714f2"
+            "signature": "0x852a12e3"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "admin",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "repayBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xf851a440"
-        },
-        {
-            "inputs": [],
-            "payable": false,
             "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
-        },
-        {
-            "payable": true,
-            "stateMutability": "payable",
-            "type": "fallback"
+            "type": "function",
+            "signature": "0x0e752702"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldPendingImplementation",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newPendingImplementation",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewPendingImplementation",
-            "type": "event",
-            "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldImplementation",
-                    "type": "address"
-                },
+            "name": "repayBorrowBehalf",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newImplementation",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewImplementation",
-            "type": "event",
-            "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x2608f818"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldPendingAdmin",
-                    "type": "address"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "reserveFactorMantissa",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newPendingAdmin",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewPendingAdmin",
-            "type": "event",
-            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x173b9904"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldAdmin",
+                    "internalType": "address",
+                    "name": "liquidator",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newAdmin",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
-                }
-            ],
-            "name": "NewAdmin",
-            "type": "event",
-            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "error",
-                    "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "info",
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
                     "type": "uint256"
-                },
+                }
+            ],
+            "name": "seize",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "detail",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Failure",
-            "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
-        }
-    ],
-    "Comptroller": [
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xb2a02ff1"
+        },
         {
             "constant": true,
             "inputs": [],
-            "name": "pendingAdmin",
+            "name": "supplyRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x26782247"
+            "signature": "0xae9d70b0"
         },
         {
-            "constant": false,
-            "inputs": [
+            "constant": true,
+            "inputs": [],
+            "name": "symbol",
+            "outputs": [
                 {
-                    "name": "newPendingAdmin",
-                    "type": "address"
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
                 }
             ],
-            "name": "_setPendingAdmin",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95d89b41"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalBorrows",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xb71d1a0c"
+            "signature": "0x47bd3718"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [],
-            "name": "comptrollerImplementation",
+            "name": "totalBorrowsCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xbb82aa5e"
+            "signature": "0x73acee98"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "_acceptImplementation",
+            "name": "totalReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xc1e80334"
+            "signature": "0x8f840ddd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "pendingComptrollerImplementation",
+            "name": "totalSupply",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xdcfbc0c7"
+            "signature": "0x18160ddd"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newPendingImplementation",
+                    "internalType": "address",
+                    "name": "dst",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "amount",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setPendingImplementation",
+            "name": "transfer",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe992a041"
+            "signature": "0xa9059cbb"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "_acceptAdmin",
+            "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": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe9c714f2"
+            "signature": "0x23b872dd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "admin",
+            "name": "underlying",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
                     "type": "address"
                 }
@@ -5492,8 +14971,10 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf851a440"
-        },
+            "signature": "0x6f307dc3"
+        }
+    ],
+    "StdComptrollerG1": [
         {
             "inputs": [],
             "payable": false,
@@ -5501,239 +14982,217 @@
             "type": "constructor",
             "signature": "constructor"
         },
-        {
-            "payable": true,
-            "stateMutability": "payable",
-            "type": "fallback"
-        },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "oldPendingImplementation",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "error",
+                    "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "newPendingImplementation",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "info",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "detail",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewPendingImplementation",
+            "name": "Failure",
             "type": "event",
-            "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815"
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "oldImplementation",
+                    "internalType": "contract CToken",
+                    "name": "cToken",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "newImplementation",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
                 }
             ],
-            "name": "NewImplementation",
+            "name": "MarketEntered",
             "type": "event",
-            "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a"
+            "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "oldPendingAdmin",
+                    "internalType": "contract CToken",
+                    "name": "cToken",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "newPendingAdmin",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
                 }
             ],
-            "name": "NewPendingAdmin",
+            "name": "MarketExited",
             "type": "event",
-            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+            "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "oldAdmin",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "newAdmin",
+                    "internalType": "contract CToken",
+                    "name": "cToken",
                     "type": "address"
                 }
             ],
-            "name": "NewAdmin",
+            "name": "MarketListed",
             "type": "event",
-            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+            "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "error",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "info",
+                    "internalType": "uint256",
+                    "name": "oldCloseFactorMantissa",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "detail",
+                    "internalType": "uint256",
+                    "name": "newCloseFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "Failure",
+            "name": "NewCloseFactor",
             "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "isComptroller",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "bool"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x007e3dd2"
+            "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
+                    "internalType": "contract CToken",
                     "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "name": "payer",
-                    "type": "address"
-                },
-                {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "repayAmount",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldCollateralFactorMantissa",
                     "type": "uint256"
                 },
                 {
-                    "name": "borrowerIndex",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newCollateralFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrowVerify",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x1ededc91"
+            "name": "NewCollateralFactor",
+            "type": "event",
+            "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
-                    "name": "payer",
-                    "type": "address"
-                },
-                {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "repayAmount",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldLiquidationIncentiveMantissa",
                     "type": "uint256"
-                }
-            ],
-            "name": "repayBorrowAllowed",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newLiquidationIncentiveMantissa",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x24008a62"
+            "name": "NewLiquidationIncentive",
+            "type": "event",
+            "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "pendingAdmin",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldMaxAssets",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newMaxAssets",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x26782247"
+            "name": "NewMaxAssets",
+            "type": "event",
+            "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "newCloseFactorMantissa",
-                    "type": "uint256"
-                }
-            ],
-            "name": "_setCloseFactor",
-            "outputs": [
+                    "indexed": false,
+                    "internalType": "contract PriceOracle",
+                    "name": "oldPriceOracle",
+                    "type": "address"
+                },
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "contract PriceOracle",
+                    "name": "newPriceOracle",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x317b0b77"
+            "name": "NewPriceOracle",
+            "type": "event",
+            "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "contract Unitroller",
                     "name": "unitroller",
                     "type": "address"
                 },
                 {
+                    "internalType": "contract PriceOracle",
                     "name": "_oracle",
                     "type": "address"
                 },
                 {
+                    "internalType": "uint256",
                     "name": "_closeFactorMantissa",
                     "type": "uint256"
                 },
                 {
+                    "internalType": "uint256",
                     "name": "_maxAssets",
                     "type": "uint256"
                 },
                 {
+                    "internalType": "bool",
                     "name": "reinitializing",
                     "type": "bool"
                 }
@@ -5749,98 +15208,42 @@
             "constant": false,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
-                    "name": "minter",
-                    "type": "address"
-                },
-                {
-                    "name": "mintAmount",
-                    "type": "uint256"
-                },
-                {
-                    "name": "mintTokens",
-                    "type": "uint256"
-                }
-            ],
-            "name": "mintVerify",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x41c728b9"
-        },
-        {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "cTokenBorrowed",
-                    "type": "address"
-                },
-                {
-                    "name": "cTokenCollateral",
-                    "type": "address"
-                },
-                {
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "repayAmount",
-                    "type": "uint256"
-                },
-                {
-                    "name": "seizeTokens",
+                    "internalType": "uint256",
+                    "name": "newCloseFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "liquidateBorrowVerify",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x47ef3b3b"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "liquidationIncentiveMantissa",
+            "name": "_setCloseFactor",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x4ada90af"
+            "signature": "0x317b0b77"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "contract CToken",
                     "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "name": "minter",
-                    "type": "address"
-                },
-                {
-                    "name": "mintAmount",
+                    "internalType": "uint256",
+                    "name": "newCollateralFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "mintAllowed",
+            "name": "_setCollateralFactor",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -5848,12 +15251,13 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x4ef4c3e1"
+            "signature": "0xe4028eee"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "uint256",
                     "name": "newLiquidationIncentiveMantissa",
                     "type": "uint256"
                 }
@@ -5861,6 +15265,7 @@
             "name": "_setLiquidationIncentive",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -5874,33 +15279,29 @@
             "constant": false,
             "inputs": [
                 {
-                    "name": "cToken",
-                    "type": "address"
-                },
-                {
-                    "name": "redeemer",
-                    "type": "address"
-                },
-                {
-                    "name": "redeemAmount",
+                    "internalType": "uint256",
+                    "name": "newMaxAssets",
                     "type": "uint256"
-                },
+                }
+            ],
+            "name": "_setMaxAssets",
+            "outputs": [
                 {
-                    "name": "redeemTokens",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "redeemVerify",
-            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x51dff989"
+            "signature": "0xd9226ced"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "contract PriceOracle",
                     "name": "newOracle",
                     "type": "address"
                 }
@@ -5908,6 +15309,7 @@
             "name": "_setPriceOracle",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -5921,80 +15323,90 @@
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "contract CToken",
                     "name": "cToken",
                     "type": "address"
-                },
-                {
-                    "name": "borrower",
-                    "type": "address"
-                },
+                }
+            ],
+            "name": "_supportMarket",
+            "outputs": [
                 {
-                    "name": "borrowAmount",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "borrowVerify",
-            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x5c778605"
+            "signature": "0xa76b3fda"
         },
         {
             "constant": true,
             "inputs": [
                 {
-                    "name": "account",
+                    "internalType": "address",
+                    "name": "",
                     "type": "address"
-                }
-            ],
-            "name": "getAccountLiquidity",
-            "outputs": [
+                },
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
-                },
+                }
+            ],
+            "name": "accountAssets",
+            "outputs": [
                 {
+                    "internalType": "contract CToken",
                     "name": "",
-                    "type": "uint256"
-                },
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdce15449"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x5ec88c79"
+            "signature": "0xf851a440"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cTokenBorrowed",
-                    "type": "address"
-                },
-                {
-                    "name": "cTokenCollateral",
-                    "type": "address"
-                },
-                {
-                    "name": "liquidator",
+                    "internalType": "address",
+                    "name": "cToken",
                     "type": "address"
                 },
                 {
+                    "internalType": "address",
                     "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "liquidateBorrowAllowed",
+            "name": "borrowAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -6002,168 +15414,174 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x5fc7e71e"
+            "signature": "0xda3d454c"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "name": "src",
-                    "type": "address"
-                },
-                {
-                    "name": "dst",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "transferTokens",
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "transferVerify",
+            "name": "borrowVerify",
             "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x6a56947e"
+            "signature": "0x5c778605"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "cTokenCollateral",
-                    "type": "address"
-                },
-                {
-                    "name": "cTokenBorrowed",
-                    "type": "address"
-                },
-                {
-                    "name": "liquidator",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
                 },
                 {
-                    "name": "borrower",
+                    "internalType": "contract CToken",
+                    "name": "cToken",
                     "type": "address"
-                },
+                }
+            ],
+            "name": "checkMembership",
+            "outputs": [
                 {
-                    "name": "seizeTokens",
-                    "type": "uint256"
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
                 }
             ],
-            "name": "seizeVerify",
-            "outputs": [],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x6d35bf91"
+            "signature": "0x929fe9a1"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "oracle",
+            "name": "closeFactorMantissa",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x7dc0d1d0"
+            "signature": "0xe8755446"
         },
         {
             "constant": true,
-            "inputs": [
+            "inputs": [],
+            "name": "comptrollerImplementation",
+            "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
                     "type": "address"
                 }
             ],
-            "name": "markets",
-            "outputs": [
-                {
-                    "name": "isListed",
-                    "type": "bool"
-                },
-                {
-                    "name": "collateralFactorMantissa",
-                    "type": "uint256"
-                }
-            ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x8e8f294b"
+            "signature": "0xbb82aa5e"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "account",
-                    "type": "address"
-                },
-                {
-                    "name": "cToken",
-                    "type": "address"
+                    "internalType": "address[]",
+                    "name": "cTokens",
+                    "type": "address[]"
                 }
             ],
-            "name": "checkMembership",
+            "name": "enterMarkets",
             "outputs": [
                 {
+                    "internalType": "uint256[]",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256[]"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x929fe9a1"
+            "signature": "0xc2998238"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "maxAssets",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenAddress",
+                    "type": "address"
+                }
+            ],
+            "name": "exitMarket",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x94b2294b"
+            "signature": "0xede4edd0"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "cToken",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
                 }
             ],
-            "name": "_supportMarket",
+            "name": "getAccountLiquidity",
             "outputs": [
                 {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xa76b3fda"
+            "signature": "0x5ec88c79"
         },
         {
             "constant": true,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "account",
                     "type": "address"
                 }
@@ -6171,6 +15589,7 @@
             "name": "getAssetsIn",
             "outputs": [
                 {
+                    "internalType": "contract CToken[]",
                     "name": "",
                     "type": "address[]"
                 }
@@ -6183,41 +15602,52 @@
         {
             "constant": true,
             "inputs": [],
-            "name": "comptrollerImplementation",
+            "name": "isComptroller",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "address"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xbb82aa5e"
+            "signature": "0x007e3dd2"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cToken",
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
                     "type": "address"
                 },
                 {
-                    "name": "src",
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
                     "type": "address"
                 },
                 {
-                    "name": "dst",
+                    "internalType": "address",
+                    "name": "liquidator",
                     "type": "address"
                 },
                 {
-                    "name": "transferTokens",
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "transferAllowed",
+            "name": "liquidateBorrowAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -6225,40 +15655,64 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xbdcdc258"
+            "signature": "0x5fc7e71e"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cTokens",
-                    "type": "address[]"
-                }
-            ],
-            "name": "enterMarkets",
-            "outputs": [
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
                 {
-                    "name": "",
-                    "type": "uint256[]"
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
                 }
             ],
+            "name": "liquidateBorrowVerify",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xc2998238"
+            "signature": "0x47ef3b3b"
         },
         {
             "constant": true,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "cTokenBorrowed",
                     "type": "address"
                 },
                 {
+                    "internalType": "address",
                     "name": "cTokenCollateral",
                     "type": "address"
                 },
                 {
+                    "internalType": "uint256",
                     "name": "repayAmount",
                     "type": "uint256"
                 }
@@ -6266,10 +15720,12 @@
             "name": "liquidateCalculateSeizeTokens",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 },
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -6280,52 +15736,87 @@
             "signature": "0xc488847b"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "cTokenCollateral",
-                    "type": "address"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "liquidationIncentiveMantissa",
+            "outputs": [
                 {
-                    "name": "cTokenBorrowed",
-                    "type": "address"
-                },
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x4ada90af"
+        },
+        {
+            "constant": true,
+            "inputs": [
                 {
-                    "name": "liquidator",
+                    "internalType": "address",
+                    "name": "",
                     "type": "address"
-                },
+                }
+            ],
+            "name": "markets",
+            "outputs": [
                 {
-                    "name": "borrower",
-                    "type": "address"
+                    "internalType": "bool",
+                    "name": "isListed",
+                    "type": "bool"
                 },
                 {
-                    "name": "seizeTokens",
+                    "internalType": "uint256",
+                    "name": "collateralFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "seizeAllowed",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x8e8f294b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "maxAssets",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xd02f7351"
+            "signature": "0x94b2294b"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newMaxAssets",
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "minter",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "mintAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "_setMaxAssets",
+            "name": "mintAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -6333,51 +15824,62 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xd9226ced"
+            "signature": "0x4ef4c3e1"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "minter",
                     "type": "address"
                 },
                 {
-                    "name": "borrowAmount",
+                    "internalType": "uint256",
+                    "name": "mintAmount",
                     "type": "uint256"
-                }
-            ],
-            "name": "borrowAllowed",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "mintTokens",
                     "type": "uint256"
                 }
             ],
+            "name": "mintVerify",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xda3d454c"
+            "signature": "0x41c728b9"
         },
         {
             "constant": true,
-            "inputs": [
+            "inputs": [],
+            "name": "oracle",
+            "outputs": [
                 {
+                    "internalType": "contract PriceOracle",
                     "name": "",
                     "type": "address"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
                 }
             ],
-            "name": "accountAssets",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x7dc0d1d0"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
                     "type": "address"
                 }
@@ -6385,7 +15887,7 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xdce15449"
+            "signature": "0x26782247"
         },
         {
             "constant": true,
@@ -6393,6 +15895,7 @@
             "name": "pendingComptrollerImplementation",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
                     "type": "address"
                 }
@@ -6406,17 +15909,25 @@
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "name": "newCollateralFactorMantissa",
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "_setCollateralFactor",
+            "name": "redeemAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -6424,42 +15935,67 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe4028eee"
+            "signature": "0xeabe7d91"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "closeFactorMantissa",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "cToken",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
                     "type": "uint256"
                 }
             ],
+            "name": "redeemVerify",
+            "outputs": [],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe8755446"
+            "signature": "0x51dff989"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "name": "redeemer",
+                    "internalType": "address",
+                    "name": "payer",
                     "type": "address"
                 },
                 {
-                    "name": "redeemTokens",
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "redeemAllowed",
+            "name": "repayBorrowAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -6467,231 +16003,266 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xeabe7d91"
+            "signature": "0x24008a62"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "cTokenAddress",
+                    "internalType": "address",
+                    "name": "cToken",
                     "type": "address"
-                }
-            ],
-            "name": "exitMarket",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "payer",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrowerIndex",
                     "type": "uint256"
                 }
             ],
+            "name": "repayBorrowVerify",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xede4edd0"
+            "signature": "0x1ededc91"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "admin",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "seizeAllowed",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xf851a440"
-        },
-        {
-            "inputs": [],
-            "payable": false,
             "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
+            "type": "function",
+            "signature": "0xd02f7351"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "cToken",
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "cTokenBorrowed",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "MarketListed",
-            "type": "event",
-            "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f"
+            "name": "seizeVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x6d35bf91"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
+                    "internalType": "address",
                     "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "account",
+                    "internalType": "address",
+                    "name": "src",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "dst",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "transferTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "MarketEntered",
-            "type": "event",
-            "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5"
+            "name": "transferAllowed",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xbdcdc258"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
+                    "internalType": "address",
                     "name": "cToken",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "account",
+                    "internalType": "address",
+                    "name": "src",
                     "type": "address"
-                }
-            ],
-            "name": "MarketExited",
-            "type": "event",
-            "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
+                },
                 {
-                    "indexed": false,
-                    "name": "oldCloseFactorMantissa",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newCloseFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "transferTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "NewCloseFactor",
-            "type": "event",
-            "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9"
-        },
+            "name": "transferVerify",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x6a56947e"
+        }
+    ],
+    "cETH": [
         {
-            "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "cToken",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "oldCollateralFactorMantissa",
-                    "type": "uint256"
+                    "internalType": "contract InterestRateModel",
+                    "name": "interestRateModel_",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newCollateralFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "initialExchangeRateMantissa_",
                     "type": "uint256"
-                }
-            ],
-            "name": "NewCollateralFactor",
-            "type": "event",
-            "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
+                },
                 {
-                    "indexed": false,
-                    "name": "oldLiquidationIncentiveMantissa",
-                    "type": "uint256"
+                    "internalType": "string",
+                    "name": "name_",
+                    "type": "string"
                 },
                 {
-                    "indexed": false,
-                    "name": "newLiquidationIncentiveMantissa",
-                    "type": "uint256"
-                }
-            ],
-            "name": "NewLiquidationIncentive",
-            "type": "event",
-            "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
+                    "internalType": "string",
+                    "name": "symbol_",
+                    "type": "string"
+                },
                 {
-                    "indexed": false,
-                    "name": "oldMaxAssets",
-                    "type": "uint256"
+                    "internalType": "uint8",
+                    "name": "decimals_",
+                    "type": "uint8"
                 },
                 {
-                    "indexed": false,
-                    "name": "newMaxAssets",
-                    "type": "uint256"
+                    "internalType": "address payable",
+                    "name": "admin_",
+                    "type": "address"
                 }
             ],
-            "name": "NewMaxAssets",
-            "type": "event",
-            "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "oldPriceOracle",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "cashPrior",
+                    "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "newPriceOracle",
-                    "type": "address"
-                }
-            ],
-            "name": "NewPriceOracle",
-            "type": "event",
-            "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "error",
+                    "internalType": "uint256",
+                    "name": "interestAccumulated",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "info",
+                    "internalType": "uint256",
+                    "name": "borrowIndex",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "detail",
+                    "internalType": "uint256",
+                    "name": "totalBorrows",
                     "type": "uint256"
                 }
             ],
-            "name": "Failure",
+            "name": "AccrueInterest",
             "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
-        }
-    ],
-    "Comp": [
-        {
-            "inputs": [
-                {
-                    "internalType": "address",
-                    "name": "account",
-                    "type": "address"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
         },
         {
             "anonymous": false,
@@ -6723,390 +16294,397 @@
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "delegator",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "indexed": true,
-                    "internalType": "address",
-                    "name": "fromDelegate",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
                 },
                 {
-                    "indexed": true,
-                    "internalType": "address",
-                    "name": "toDelegate",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "accountBorrows",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "totalBorrows",
+                    "type": "uint256"
                 }
             ],
-            "name": "DelegateChanged",
+            "name": "Borrow",
             "type": "event",
-            "signature": "0x3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f"
+            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "internalType": "address",
-                    "name": "delegate",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "error",
+                    "type": "uint256"
                 },
                 {
                     "indexed": false,
                     "internalType": "uint256",
-                    "name": "previousBalance",
+                    "name": "info",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
                     "internalType": "uint256",
-                    "name": "newBalance",
+                    "name": "detail",
                     "type": "uint256"
                 }
             ],
-            "name": "DelegateVotesChanged",
+            "name": "Failure",
             "type": "event",
-            "signature": "0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724"
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "from",
+                    "name": "liquidator",
                     "type": "address"
                 },
                 {
-                    "indexed": true,
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "to",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
                     "indexed": false,
                     "internalType": "uint256",
-                    "name": "amount",
+                    "name": "repayAmount",
                     "type": "uint256"
-                }
-            ],
-            "name": "Transfer",
-            "type": "event",
-            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "DELEGATION_TYPEHASH",
-            "outputs": [
+                },
                 {
-                    "internalType": "bytes32",
-                    "name": "",
-                    "type": "bytes32"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xe7a324dc"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "DOMAIN_TYPEHASH",
-            "outputs": [
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
                 {
-                    "internalType": "bytes32",
-                    "name": "",
-                    "type": "bytes32"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x20606b70"
+            "name": "LiquidateBorrow",
+            "type": "event",
+            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "account",
+                    "name": "minter",
                     "type": "address"
                 },
                 {
-                    "internalType": "address",
-                    "name": "spender",
-                    "type": "address"
-                }
-            ],
-            "name": "allowance",
-            "outputs": [
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                },
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "",
+                    "name": "mintTokens",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xdd62ed3e"
+            "name": "Mint",
+            "type": "event",
+            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "spender",
+                    "name": "oldAdmin",
                     "type": "address"
                 },
                 {
-                    "internalType": "uint256",
-                    "name": "rawAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "approve",
-            "outputs": [
-                {
-                    "internalType": "bool",
-                    "name": "",
-                    "type": "bool"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newAdmin",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x095ea7b3"
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
-                    "internalType": "address",
-                    "name": "account",
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "oldComptroller",
                     "type": "address"
-                }
-            ],
-            "name": "balanceOf",
-            "outputs": [
+                },
                 {
-                    "internalType": "uint256",
-                    "name": "",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x70a08231"
+            "name": "NewComptroller",
+            "type": "event",
+            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
-                    "internalType": "address",
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "oldInterestRateModel",
                     "type": "address"
                 },
                 {
-                    "internalType": "uint32",
-                    "name": "",
-                    "type": "uint32"
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
                 }
             ],
-            "name": "checkpoints",
-            "outputs": [
+            "name": "NewMarketInterestRateModel",
+            "type": "event",
+            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "internalType": "uint32",
-                    "name": "fromBlock",
-                    "type": "uint32"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
                 },
                 {
-                    "internalType": "uint96",
-                    "name": "votes",
-                    "type": "uint96"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xf1127ed8"
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "decimals",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "internalType": "uint8",
-                    "name": "",
-                    "type": "uint8"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldReserveFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x313ce567"
+            "name": "NewReserveFactor",
+            "type": "event",
+            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "delegatee",
+                    "name": "redeemer",
                     "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "delegate",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x5c19a95c"
+            "name": "Redeem",
+            "type": "event",
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "delegatee",
+                    "name": "payer",
                     "type": "address"
                 },
                 {
-                    "internalType": "uint256",
-                    "name": "nonce",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
                 },
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "expiry",
+                    "name": "repayAmount",
                     "type": "uint256"
                 },
                 {
-                    "internalType": "uint8",
-                    "name": "v",
-                    "type": "uint8"
-                },
-                {
-                    "internalType": "bytes32",
-                    "name": "r",
-                    "type": "bytes32"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "accountBorrows",
+                    "type": "uint256"
                 },
                 {
-                    "internalType": "bytes32",
-                    "name": "s",
-                    "type": "bytes32"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "totalBorrows",
+                    "type": "uint256"
                 }
             ],
-            "name": "delegateBySig",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xc3cda520"
+            "name": "RepayBorrow",
+            "type": "event",
+            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "",
+                    "name": "benefactor",
                     "type": "address"
-                }
-            ],
-            "name": "delegates",
-            "outputs": [
+                },
                 {
-                    "internalType": "address",
-                    "name": "",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x587cde1e"
+            "name": "ReservesAdded",
+            "type": "event",
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "account",
+                    "name": "admin",
                     "type": "address"
-                }
-            ],
-            "name": "getCurrentVotes",
-            "outputs": [
+                },
                 {
-                    "internalType": "uint96",
-                    "name": "",
-                    "type": "uint96"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xb4b5ea57"
+            "name": "ReservesReduced",
+            "type": "event",
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
+                    "indexed": true,
                     "internalType": "address",
-                    "name": "account",
+                    "name": "from",
+                    "type": "address"
+                },
+                {
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "to",
                     "type": "address"
                 },
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "blockNumber",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "getPriorVotes",
-            "outputs": [
-                {
-                    "internalType": "uint96",
-                    "name": "",
-                    "type": "uint96"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x782d6fe1"
+            "name": "Transfer",
+            "type": "event",
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+        },
+        {
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "fallback"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [],
-            "name": "name",
+            "name": "_acceptAdmin",
             "outputs": [
                 {
-                    "internalType": "string",
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x06fdde03"
+            "signature": "0xe9c714f2"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "internalType": "address",
-                    "name": "",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "nonces",
+            "name": "_reduceReserves",
             "outputs": [
                 {
                     "internalType": "uint256",
@@ -7115,52 +16693,42 @@
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x7ecebe00"
+            "signature": "0x601a0bf1"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "internalType": "address",
-                    "name": "",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
                     "type": "address"
                 }
             ],
-            "name": "numCheckpoints",
+            "name": "_setComptroller",
             "outputs": [
                 {
-                    "internalType": "uint32",
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "uint32"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x6fcfff45"
+            "signature": "0x4576b5db"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "symbol",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "internalType": "string",
-                    "name": "",
-                    "type": "string"
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x95d89b41"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "totalSupply",
+            "name": "_setInterestRateModel",
             "outputs": [
                 {
                     "internalType": "uint256",
@@ -7169,136 +16737,120 @@
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x18160ddd"
+            "signature": "0xf2b3abbd"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "internalType": "address",
-                    "name": "dst",
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
                     "type": "address"
-                },
-                {
-                    "internalType": "uint256",
-                    "name": "rawAmount",
-                    "type": "uint256"
                 }
             ],
-            "name": "transfer",
+            "name": "_setPendingAdmin",
             "outputs": [
                 {
-                    "internalType": "bool",
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0xb71d1a0c"
         },
         {
             "constant": false,
             "inputs": [
-                {
-                    "internalType": "address",
-                    "name": "src",
-                    "type": "address"
-                },
-                {
-                    "internalType": "address",
-                    "name": "dst",
-                    "type": "address"
-                },
                 {
                     "internalType": "uint256",
-                    "name": "rawAmount",
+                    "name": "newReserveFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "transferFrom",
+            "name": "_setReserveFactor",
             "outputs": [
                 {
-                    "internalType": "bool",
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x23b872dd"
-        }
-    ],
-    "cBAT": [
+            "signature": "0xfca7820b"
+        },
         {
             "constant": true,
             "inputs": [],
-            "name": "name",
+            "name": "accrualBlockNumber",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x06fdde03"
+            "signature": "0x6c540baf"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "name": "spender",
-                    "type": "address"
-                },
-                {
-                    "name": "amount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "approve",
+            "inputs": [],
+            "name": "accrueInterest",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x095ea7b3"
+            "signature": "0xa6afed95"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "repayAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "repayBorrow",
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
             "outputs": [
                 {
+                    "internalType": "address payable",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x0e752702"
+            "signature": "0xf851a440"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "reserveFactorMantissa",
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "spender",
+                    "type": "address"
+                }
+            ],
+            "name": "allowance",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7306,49 +16858,48 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x173b9904"
+            "signature": "0xdd62ed3e"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "account",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "amount",
+                    "type": "uint256"
                 }
             ],
-            "name": "borrowBalanceCurrent",
+            "name": "approve",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x17bfdfbc"
+            "signature": "0x095ea7b3"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "totalSupply",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x18160ddd"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "exchangeRateStored",
+            "name": "balanceOf",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7356,51 +16907,43 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x182df0f5"
+            "signature": "0x70a08231"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "src",
-                    "type": "address"
-                },
-                {
-                    "name": "dst",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
-                },
-                {
-                    "name": "amount",
-                    "type": "uint256"
                 }
             ],
-            "name": "transferFrom",
+            "name": "balanceOfUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x23b872dd"
+            "signature": "0x3af9e669"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrowBehalf",
+            "name": "borrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7408,64 +16951,59 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x2608f818"
+            "signature": "0xc5ebeaec"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "pendingAdmin",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x26782247"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "decimals",
+            "name": "borrowBalanceCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x313ce567"
+            "signature": "0x17bfdfbc"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "owner",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
                 }
             ],
-            "name": "balanceOfUnderlying",
+            "name": "borrowBalanceStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x3af9e669"
+            "signature": "0x95dd9193"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "getCash",
+            "name": "borrowIndex",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7473,69 +17011,63 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x3b1d21a2"
+            "signature": "0xaa5af0fd"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "newComptroller",
-                    "type": "address"
-                }
-            ],
-            "name": "_setComptroller",
+            "constant": true,
+            "inputs": [],
+            "name": "borrowRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x4576b5db"
+            "signature": "0xf8f9da28"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "totalBorrows",
+            "name": "comptroller",
             "outputs": [
                 {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x47bd3718"
+            "signature": "0x5fe3b567"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "comptroller",
+            "name": "decimals",
             "outputs": [
                 {
+                    "internalType": "uint8",
                     "name": "",
-                    "type": "address"
+                    "type": "uint8"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x5fe3b567"
+            "signature": "0x313ce567"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "name": "reduceAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "_reduceReserves",
+            "inputs": [],
+            "name": "exchangeRateCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7543,14 +17075,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x601a0bf1"
+            "signature": "0xbd6d894d"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "initialExchangeRateMantissa",
+            "name": "exchangeRateStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7558,14 +17091,36 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x675d972c"
+            "signature": "0x182df0f5"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "accrualBlockNumber",
+            "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"
                 }
@@ -7573,139 +17128,195 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6c540baf"
+            "signature": "0xc37f68e2"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "underlying",
+            "name": "getCash",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6f307dc3"
+            "signature": "0x3b1d21a2"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
                     "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"
                 }
             ],
-            "name": "balanceOf",
+            "name": "initialize",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x99d8c1b4"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "interestRateModel",
             "outputs": [
                 {
+                    "internalType": "contract InterestRateModel",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x70a08231"
+            "signature": "0xf3fdb15a"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "totalBorrowsCurrent",
+            "name": "isCToken",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x73acee98"
+            "signature": "0xfe9c44ae"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "redeemUnderlying",
-            "outputs": [
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "internalType": "contract CToken",
+                    "name": "cTokenCollateral",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
+            "name": "liquidateBorrow",
+            "outputs": [],
+            "payable": true,
+            "stateMutability": "payable",
             "type": "function",
-            "signature": "0x852a12e3"
+            "signature": "0xaae40a2a"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "mint",
+            "outputs": [],
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "function",
+            "signature": "0x1249c58b"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "totalReserves",
+            "name": "name",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x8f840ddd"
+            "signature": "0x06fdde03"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "symbol",
+            "name": "pendingAdmin",
             "outputs": [
                 {
+                    "internalType": "address payable",
                     "name": "",
-                    "type": "string"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95d89b41"
+            "signature": "0x26782247"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "account",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "borrowBalanceStored",
+            "name": "redeem",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x95dd9193"
+            "signature": "0xdb006a75"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "mintAmount",
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "mint",
+            "name": "redeemUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7713,53 +17324,89 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa0712d68"
+            "signature": "0x852a12e3"
         },
         {
             "constant": false,
             "inputs": [],
-            "name": "accrueInterest",
+            "name": "repayBorrow",
+            "outputs": [],
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "function",
+            "signature": "0x4e4d9fea"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                }
+            ],
+            "name": "repayBorrowBehalf",
+            "outputs": [],
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "function",
+            "signature": "0xe5974619"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "reserveFactorMantissa",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xa6afed95"
+            "signature": "0x173b9904"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "dst",
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "transfer",
+            "name": "seize",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0xb2a02ff1"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowIndex",
+            "name": "supplyRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7767,62 +17414,47 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xaa5af0fd"
+            "signature": "0xae9d70b0"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "supplyRatePerBlock",
+            "name": "symbol",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xae9d70b0"
+            "signature": "0x95d89b41"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "seizeTokens",
-                    "type": "uint256"
-                }
-            ],
-            "name": "seize",
+            "constant": true,
+            "inputs": [],
+            "name": "totalBorrows",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xb2a02ff1"
+            "signature": "0x47bd3718"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "name": "newPendingAdmin",
-                    "type": "address"
-                }
-            ],
-            "name": "_setPendingAdmin",
+            "inputs": [],
+            "name": "totalBorrowsCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7830,46 +17462,31 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb71d1a0c"
+            "signature": "0x73acee98"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "exchangeRateCurrent",
+            "name": "totalReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xbd6d894d"
+            "signature": "0x8f840ddd"
         },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "account",
-                    "type": "address"
-                }
-            ],
-            "name": "getAccountSnapshot",
+            "inputs": [],
+            "name": "totalSupply",
             "outputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7877,63 +17494,114 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xc37f68e2"
+            "signature": "0x18160ddd"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrowAmount",
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "borrow",
+            "name": "transfer",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xc5ebeaec"
+            "signature": "0xa9059cbb"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "redeemTokens",
+                    "internalType": "address",
+                    "name": "src",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "redeem",
+            "name": "transferFrom",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xdb006a75"
+            "signature": "0x23b872dd"
+        }
+    ],
+    "Base500bps_Slope1200bps": [
+        {
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "baseRatePerYear",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "multiplierPerYear",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "owner",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "baseRatePerBlock",
+                    "type": "uint256"
                 },
                 {
-                    "name": "spender",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "multiplierPerBlock",
+                    "type": "uint256"
                 }
             ],
-            "name": "allowance",
+            "name": "NewInterestParams",
+            "type": "event",
+            "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "baseRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -7941,107 +17609,116 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xdd62ed3e"
+            "signature": "0xf14039de"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "_acceptAdmin",
+            "name": "blocksPerYear",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xe9c714f2"
+            "signature": "0xa385fb96"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "newInterestRateModel",
-                    "type": "address"
-                }
-            ],
-            "name": "_setInterestRateModel",
-            "outputs": [
+                    "internalType": "uint256",
+                    "name": "cash",
+                    "type": "uint256"
+                },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "borrows",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "reserves",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xf2b3abbd"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "interestRateModel",
+            "name": "getBorrowRate",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf3fdb15a"
+            "signature": "0x15f24053"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "borrower",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "cash",
+                    "type": "uint256"
                 },
                 {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "borrows",
                     "type": "uint256"
                 },
                 {
-                    "name": "cTokenCollateral",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "reserves",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "reserveFactorMantissa",
+                    "type": "uint256"
                 }
             ],
-            "name": "liquidateBorrow",
+            "name": "getSupplyRate",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xf5e3c462"
+            "signature": "0xb8168816"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "admin",
+            "name": "isInterestRateModel",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "address"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf851a440"
+            "signature": "0x2191f92a"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowRatePerBlock",
+            "name": "multiplierPerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -8049,72 +17726,83 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf8f9da28"
+            "signature": "0x8726bb89"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "newReserveFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "cash",
                     "type": "uint256"
-                }
-            ],
-            "name": "_setReserveFactor",
-            "outputs": [
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "borrows",
+                    "type": "uint256"
+                },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "reserves",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xfca7820b"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "isCToken",
+            "name": "utilizationRate",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "pure",
             "type": "function",
-            "signature": "0xfe9c44ae"
-        },
+            "signature": "0x6e71e2d8"
+        }
+    ],
+    "cSAI": [
         {
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "underlying_",
                     "type": "address"
                 },
                 {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "comptroller_",
                     "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": "uint256"
+                    "type": "uint8"
+                },
+                {
+                    "internalType": "address payable",
+                    "name": "admin_",
+                    "type": "address"
                 }
             ],
             "payable": false,
@@ -8127,39 +17815,173 @@
             "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",
-            "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
+        },
+        {
+            "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",
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+        },
+        {
+            "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",
+            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+        },
+        {
+            "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",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+        },
+        {
+            "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": "cTokenCollateral",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
+                }
+            ],
+            "name": "LiquidateBorrow",
+            "type": "event",
+            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
         },
         {
             "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"
                 }
@@ -8173,77 +17995,157 @@
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "redeemer",
+                    "internalType": "address",
+                    "name": "oldAdmin",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "redeemAmount",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "newAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "oldComptroller",
+                    "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "redeemTokens",
-                    "type": "uint256"
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
                 }
             ],
-            "name": "Redeem",
+            "name": "NewComptroller",
             "type": "event",
-            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "borrower",
+                    "internalType": "contract InterestRateModel",
+                    "name": "oldInterestRateModel",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "borrowAmount",
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
+                }
+            ],
+            "name": "NewMarketInterestRateModel",
+            "type": "event",
+            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldReserveFactorMantissa",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "accountBorrows",
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "NewReserveFactor",
+            "type": "event",
+            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "redeemer",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "totalBorrows",
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "Borrow",
+            "name": "Redeem",
             "type": "event",
-            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
         },
         {
             "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"
                 }
@@ -8257,241 +18159,446 @@
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "liquidator",
+                    "internalType": "address",
+                    "name": "benefactor",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "borrower",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
                     "type": "uint256"
-                },
+                }
+            ],
+            "name": "ReservesAdded",
+            "type": "event",
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
                     "indexed": false,
-                    "name": "cTokenCollateral",
+                    "internalType": "address",
+                    "name": "admin",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "seizeTokens",
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
                     "type": "uint256"
                 }
             ],
-            "name": "LiquidateBorrow",
+            "name": "ReservesReduced",
             "type": "event",
-            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldPendingAdmin",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "from",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newPendingAdmin",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "to",
                     "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "amount",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewPendingAdmin",
+            "name": "Transfer",
             "type": "event",
-            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
         },
         {
-            "anonymous": false,
+            "constant": false,
+            "inputs": [],
+            "name": "_acceptAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe9c714f2"
+        },
+        {
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldAdmin",
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_addReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x3e941010"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_reduceReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x601a0bf1"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
                     "type": "address"
-                },
+                }
+            ],
+            "name": "_setComptroller",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newAdmin",
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4576b5db"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
                     "type": "address"
                 }
             ],
-            "name": "NewAdmin",
-            "type": "event",
-            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+            "name": "_setInterestRateModel",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xf2b3abbd"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldComptroller",
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
                     "type": "address"
-                },
+                }
+            ],
+            "name": "_setPendingAdmin",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newComptroller",
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xb71d1a0c"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setReserveFactor",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xfca7820b"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "accrualBlockNumber",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6c540baf"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "accrueInterest",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa6afed95"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
+            "outputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "",
                     "type": "address"
                 }
             ],
-            "name": "NewComptroller",
-            "type": "event",
-            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xf851a440"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldInterestRateModel",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newInterestRateModel",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 }
             ],
-            "name": "NewMarketInterestRateModel",
-            "type": "event",
-            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+            "name": "allowance",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdd62ed3e"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldReserveFactorMantissa",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "spender",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newReserveFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "NewReserveFactor",
-            "type": "event",
-            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+            "name": "approve",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x095ea7b3"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "admin",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "reduceAmount",
-                    "type": "uint256"
-                },
+                }
+            ],
+            "name": "balanceOf",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newTotalReserves",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "ReservesReduced",
-            "type": "event",
-            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x70a08231"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "error",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "info",
-                    "type": "uint256"
-                },
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOfUnderlying",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "detail",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Failure",
-            "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x3af9e669"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "from",
-                    "type": "address"
-                },
-                {
-                    "indexed": true,
-                    "name": "to",
-                    "type": "address"
-                },
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "borrow",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Transfer",
-            "type": "event",
-            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xc5ebeaec"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "owner",
-                    "type": "address"
-                },
-                {
-                    "indexed": true,
-                    "name": "spender",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
-                },
+                }
+            ],
+            "name": "borrowBalanceCurrent",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Approval",
-            "type": "event",
-            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
-        }
-    ],
-    "Base0bps_Slope2000bps": [
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x17bfdfbc"
+        },
         {
             "constant": true,
             "inputs": [
                 {
-                    "name": "cash",
-                    "type": "uint256"
-                },
-                {
-                    "name": "borrows",
-                    "type": "uint256"
-                },
-                {
-                    "name": "_reserves",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
                 }
             ],
-            "name": "getBorrowRate",
+            "name": "borrowBalanceStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
-                },
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95dd9193"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "borrowIndex",
+            "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -8499,14 +18606,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x15f24053"
+            "signature": "0xaa5af0fd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "multiplier",
+            "name": "borrowRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -8514,44 +18622,63 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x1b3ed722"
+            "signature": "0xf8f9da28"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "baseRate",
+            "name": "comptroller",
             "outputs": [
                 {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x1f68f20a"
+            "signature": "0x5fe3b567"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "isInterestRateModel",
+            "name": "decimals",
             "outputs": [
                 {
+                    "internalType": "uint8",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint8"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x2191f92a"
+            "signature": "0x313ce567"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "exchangeRateCurrent",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xbd6d894d"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "blocksPerYear",
+            "name": "exchangeRateStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -8559,187 +18686,241 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xa385fb96"
+            "signature": "0x182df0f5"
         },
         {
+            "constant": true,
             "inputs": [
                 {
-                    "name": "baseRate_",
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "getAccountSnapshot",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 },
                 {
-                    "name": "multiplier_",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
-        }
-    ],
-    "BAT": [
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xc37f68e2"
+        },
         {
             "constant": true,
             "inputs": [],
-            "name": "name",
+            "name": "getCash",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x06fdde03"
+            "signature": "0x3b1d21a2"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "_owner",
+                    "internalType": "address",
+                    "name": "underlying_",
                     "type": "address"
                 },
                 {
-                    "name": "value",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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"
                 }
             ],
-            "name": "allocateTo",
+            "name": "initialize",
             "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x08bca566"
+            "signature": "0x1a31d465"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "_spender",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
                     "type": "address"
                 },
                 {
-                    "name": "_value",
+                    "internalType": "contract InterestRateModel",
+                    "name": "interestRateModel_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "initialExchangeRateMantissa_",
                     "type": "uint256"
-                }
-            ],
-            "name": "approve",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "bool"
+                    "internalType": "string",
+                    "name": "name_",
+                    "type": "string"
+                },
+                {
+                    "internalType": "string",
+                    "name": "symbol_",
+                    "type": "string"
+                },
+                {
+                    "internalType": "uint8",
+                    "name": "decimals_",
+                    "type": "uint8"
                 }
             ],
+            "name": "initialize",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x095ea7b3"
+            "signature": "0x99d8c1b4"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "totalSupply",
+            "name": "interestRateModel",
             "outputs": [
                 {
+                    "internalType": "contract InterestRateModel",
                     "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x18160ddd"
-        },
-        {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "_from",
-                    "type": "address"
-                },
-                {
-                    "name": "_to",
                     "type": "address"
-                },
-                {
-                    "name": "_value",
-                    "type": "uint256"
                 }
             ],
-            "name": "transferFrom",
-            "outputs": [],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x23b872dd"
+            "signature": "0xf3fdb15a"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "decimals",
+            "name": "isCToken",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint8"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x313ce567"
+            "signature": "0xfe9c44ae"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "_spender",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "_subtractedValue",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
+                },
+                {
+                    "internalType": "contract CTokenInterface",
+                    "name": "cTokenCollateral",
+                    "type": "address"
                 }
             ],
-            "name": "decreaseApproval",
+            "name": "liquidateBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x66188463"
+            "signature": "0xf5e3c462"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "_owner",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "balanceOf",
+            "name": "mint",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x70a08231"
+            "signature": "0xa0712d68"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "symbol",
+            "name": "name",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
                     "type": "string"
                 }
@@ -8747,222 +18928,220 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95d89b41"
+            "signature": "0x06fdde03"
         },
         {
-            "constant": false,
-            "inputs": [
+            "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
+            "outputs": [
                 {
-                    "name": "_to",
+                    "internalType": "address payable",
+                    "name": "",
                     "type": "address"
-                },
-                {
-                    "name": "_value",
-                    "type": "uint256"
                 }
             ],
-            "name": "transfer",
-            "outputs": [],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0x26782247"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "_spender",
-                    "type": "address"
-                },
-                {
-                    "name": "_addedValue",
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "increaseApproval",
+            "name": "redeem",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xd73dd623"
+            "signature": "0xdb006a75"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "_owner",
-                    "type": "address"
-                },
-                {
-                    "name": "_spender",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "allowance",
+            "name": "redeemUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xdd62ed3e"
+            "signature": "0x852a12e3"
         },
         {
+            "constant": false,
             "inputs": [
                 {
-                    "name": "_initialAmount",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
-                },
-                {
-                    "name": "_tokenName",
-                    "type": "string"
-                },
-                {
-                    "name": "_decimalUnits",
-                    "type": "uint8"
-                },
-                {
-                    "name": "_tokenSymbol",
-                    "type": "string"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": true,
-                    "name": "owner",
-                    "type": "address"
-                },
-                {
-                    "indexed": true,
-                    "name": "spender",
-                    "type": "address"
-                },
+            "name": "repayBorrow",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "value",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Approval",
-            "type": "event",
-            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x0e752702"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "from",
-                    "type": "address"
-                },
-                {
-                    "indexed": true,
-                    "name": "to",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "value",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "Transfer",
-            "type": "event",
-            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
-        }
-    ],
-    "cETH": [
+            "name": "repayBorrowBehalf",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x2608f818"
+        },
         {
             "constant": true,
             "inputs": [],
-            "name": "name",
+            "name": "reserveFactorMantissa",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x06fdde03"
+            "signature": "0x173b9904"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "spender",
+                    "internalType": "address",
+                    "name": "liquidator",
                     "type": "address"
                 },
                 {
-                    "name": "amount",
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "approve",
+            "name": "seize",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x095ea7b3"
+            "signature": "0xb2a02ff1"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "mint",
-            "outputs": [],
-            "payable": true,
-            "stateMutability": "payable",
+            "name": "supplyRatePerBlock",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x1249c58b"
+            "signature": "0xae9d70b0"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "reserveFactorMantissa",
+            "name": "symbol",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x173b9904"
+            "signature": "0x95d89b41"
         },
         {
-            "constant": false,
-            "inputs": [
+            "constant": true,
+            "inputs": [],
+            "name": "totalBorrows",
+            "outputs": [
                 {
-                    "name": "account",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
                 }
             ],
-            "name": "borrowBalanceCurrent",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x47bd3718"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "totalBorrowsCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -8970,14 +19149,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x17bfdfbc"
+            "signature": "0x73acee98"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "totalSupply",
+            "name": "totalReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -8985,14 +19165,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x18160ddd"
+            "signature": "0x8f840ddd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "exchangeRateStored",
+            "name": "totalSupply",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -9000,20 +19181,50 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x182df0f5"
+            "signature": "0x18160ddd"
+        },
+        {
+            "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",
+            "signature": "0xa9059cbb"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "src",
                     "type": "address"
                 },
                 {
+                    "internalType": "address",
                     "name": "dst",
                     "type": "address"
                 },
                 {
+                    "internalType": "uint256",
                     "name": "amount",
                     "type": "uint256"
                 }
@@ -9021,6 +19232,7 @@
             "name": "transferFrom",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
                     "type": "bool"
                 }
@@ -9033,9 +19245,10 @@
         {
             "constant": true,
             "inputs": [],
-            "name": "pendingAdmin",
+            "name": "underlying",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
                     "type": "address"
                 }
@@ -9043,144 +19256,214 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x26782247"
-        },
+            "signature": "0x6f307dc3"
+        }
+    ],
+    "Timelock": [
         {
-            "constant": true,
-            "inputs": [],
-            "name": "decimals",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "admin_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "delay_",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x313ce567"
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "owner",
+                    "indexed": true,
+                    "internalType": "bytes32",
+                    "name": "txHash",
+                    "type": "bytes32"
+                },
+                {
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "target",
                     "type": "address"
-                }
-            ],
-            "name": "balanceOfUnderlying",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "value",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "string",
+                    "name": "signature",
+                    "type": "string"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "eta",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x3af9e669"
+            "name": "CancelTransaction",
+            "type": "event",
+            "signature": "0x2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf87"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "getCash",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "indexed": true,
+                    "internalType": "bytes32",
+                    "name": "txHash",
+                    "type": "bytes32"
+                },
+                {
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "target",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "value",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "string",
+                    "name": "signature",
+                    "type": "string"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "eta",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x3b1d21a2"
+            "name": "ExecuteTransaction",
+            "type": "event",
+            "signature": "0xa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e7"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "newComptroller",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "newAdmin",
                     "type": "address"
                 }
             ],
-            "name": "_setComptroller",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x4576b5db"
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0x71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "totalBorrows",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "indexed": true,
+                    "internalType": "uint256",
+                    "name": "newDelay",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x47bd3718"
-        },
-        {
-            "constant": false,
-            "inputs": [],
-            "name": "repayBorrow",
-            "outputs": [],
-            "payable": true,
-            "stateMutability": "payable",
-            "type": "function",
-            "signature": "0x4e4d9fea"
+            "name": "NewDelay",
+            "type": "event",
+            "signature": "0x948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "comptroller",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
                     "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x5fe3b567"
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0x69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a756"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "reduceAmount",
+                    "indexed": true,
+                    "internalType": "bytes32",
+                    "name": "txHash",
+                    "type": "bytes32"
+                },
+                {
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "target",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "value",
                     "type": "uint256"
-                }
-            ],
-            "name": "_reduceReserves",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "string",
+                    "name": "signature",
+                    "type": "string"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "eta",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x601a0bf1"
+            "name": "QueueTransaction",
+            "type": "event",
+            "signature": "0x76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f"
+        },
+        {
+            "payable": true,
+            "stateMutability": "payable",
+            "type": "fallback"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "initialExchangeRateMantissa",
+            "name": "GRACE_PERIOD",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -9188,14 +19471,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x675d972c"
+            "signature": "0xc1a287e2"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "accrualBlockNumber",
+            "name": "MAXIMUM_DELAY",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -9203,19 +19487,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6c540baf"
+            "signature": "0x7d645fab"
         },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "owner",
-                    "type": "address"
-                }
-            ],
-            "name": "balanceOf",
+            "inputs": [],
+            "name": "MINIMUM_DELAY",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -9223,138 +19503,77 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x70a08231"
+            "signature": "0xb1b43ae5"
         },
         {
             "constant": false,
             "inputs": [],
-            "name": "totalBorrowsCurrent",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x73acee98"
-        },
-        {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "redeemUnderlying",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
+            "name": "acceptAdmin",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x852a12e3"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "totalReserves",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x8f840ddd"
+            "signature": "0x0e18b681"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "symbol",
+            "name": "admin",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
-                    "type": "string"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95d89b41"
+            "signature": "0xf851a440"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "account",
+                    "internalType": "address",
+                    "name": "target",
                     "type": "address"
-                }
-            ],
-            "name": "borrowBalanceStored",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "value",
                     "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x95dd9193"
-        },
-        {
-            "constant": false,
-            "inputs": [],
-            "name": "accrueInterest",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xa6afed95"
-        },
-        {
-            "constant": false,
-            "inputs": [
+                    "internalType": "string",
+                    "name": "signature",
+                    "type": "string"
+                },
                 {
-                    "name": "dst",
-                    "type": "address"
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
                 },
                 {
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "eta",
                     "type": "uint256"
                 }
             ],
-            "name": "transfer",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "bool"
-                }
-            ],
+            "name": "cancelTransaction",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0x591fcdfe"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowIndex",
+            "name": "delay",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -9362,192 +19581,257 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xaa5af0fd"
+            "signature": "0x6a42b8f8"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "target",
                     "type": "address"
                 },
                 {
-                    "name": "cTokenCollateral",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "value",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "string",
+                    "name": "signature",
+                    "type": "string"
+                },
+                {
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "eta",
+                    "type": "uint256"
+                }
+            ],
+            "name": "executeTransaction",
+            "outputs": [
+                {
+                    "internalType": "bytes",
+                    "name": "",
+                    "type": "bytes"
                 }
             ],
-            "name": "liquidateBorrow",
-            "outputs": [],
             "payable": true,
             "stateMutability": "payable",
             "type": "function",
-            "signature": "0xaae40a2a"
+            "signature": "0x0825f38f"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "supplyRatePerBlock",
+            "name": "pendingAdmin",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xae9d70b0"
+            "signature": "0x26782247"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "liquidator",
+                    "internalType": "address",
+                    "name": "target",
                     "type": "address"
                 },
                 {
-                    "name": "borrower",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "value",
+                    "type": "uint256"
                 },
                 {
-                    "name": "seizeTokens",
+                    "internalType": "string",
+                    "name": "signature",
+                    "type": "string"
+                },
+                {
+                    "internalType": "bytes",
+                    "name": "data",
+                    "type": "bytes"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "eta",
                     "type": "uint256"
                 }
             ],
-            "name": "seize",
+            "name": "queueTransaction",
             "outputs": [
                 {
+                    "internalType": "bytes32",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bytes32"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb2a02ff1"
+            "signature": "0x3a66f901"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "newPendingAdmin",
-                    "type": "address"
+                    "internalType": "bytes32",
+                    "name": "",
+                    "type": "bytes32"
                 }
             ],
-            "name": "_setPendingAdmin",
+            "name": "queuedTransactions",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xb71d1a0c"
+            "signature": "0xf2b06537"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "exchangeRateCurrent",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "delay_",
                     "type": "uint256"
                 }
             ],
+            "name": "setDelay",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xbd6d894d"
+            "signature": "0xe177246e"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "account",
+                    "internalType": "address",
+                    "name": "pendingAdmin_",
                     "type": "address"
                 }
             ],
-            "name": "getAccountSnapshot",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
+            "name": "setPendingAdmin",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4dd18bf5"
+        }
+    ],
+    "Base200bps_Slope3000bps": [
+        {
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "baseRatePerYear",
                     "type": "uint256"
                 },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "multiplierPerYear",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xc37f68e2"
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "borrowAmount",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "baseRatePerBlock",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "multiplierPerBlock",
                     "type": "uint256"
                 }
             ],
-            "name": "borrow",
+            "name": "NewInterestParams",
+            "type": "event",
+            "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "baseRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xc5ebeaec"
+            "signature": "0xf14039de"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "redeemTokens",
-                    "type": "uint256"
-                }
-            ],
-            "name": "redeem",
+            "constant": true,
+            "inputs": [],
+            "name": "blocksPerYear",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xdb006a75"
+            "signature": "0xa385fb96"
         },
         {
             "constant": true,
             "inputs": [
                 {
-                    "name": "owner",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "cash",
+                    "type": "uint256"
                 },
                 {
-                    "name": "spender",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "borrows",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "reserves",
+                    "type": "uint256"
                 }
             ],
-            "name": "allowance",
+            "name": "getBorrowRate",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -9555,94 +19839,68 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xdd62ed3e"
+            "signature": "0x15f24053"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "borrower",
-                    "type": "address"
-                }
-            ],
-            "name": "repayBorrowBehalf",
-            "outputs": [],
-            "payable": true,
-            "stateMutability": "payable",
-            "type": "function",
-            "signature": "0xe5974619"
-        },
-        {
-            "constant": false,
-            "inputs": [],
-            "name": "_acceptAdmin",
-            "outputs": [
+                    "internalType": "uint256",
+                    "name": "cash",
+                    "type": "uint256"
+                },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "borrows",
                     "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xe9c714f2"
-        },
-        {
-            "constant": false,
-            "inputs": [
+                },
                 {
-                    "name": "newInterestRateModel",
-                    "type": "address"
-                }
-            ],
-            "name": "_setInterestRateModel",
-            "outputs": [
+                    "internalType": "uint256",
+                    "name": "reserves",
+                    "type": "uint256"
+                },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "reserveFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xf2b3abbd"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "interestRateModel",
+            "name": "getSupplyRate",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf3fdb15a"
+            "signature": "0xb8168816"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "admin",
+            "name": "isInterestRateModel",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "address"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf851a440"
+            "signature": "0x2191f92a"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowRatePerBlock",
+            "name": "multiplierPerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -9650,68 +19908,83 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf8f9da28"
+            "signature": "0x8726bb89"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "newReserveFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "cash",
                     "type": "uint256"
-                }
-            ],
-            "name": "_setReserveFactor",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "borrows",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "reserves",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xfca7820b"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "isCToken",
+            "name": "utilizationRate",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "pure",
             "type": "function",
-            "signature": "0xfe9c44ae"
-        },
+            "signature": "0x6e71e2d8"
+        }
+    ],
+    "cREP": [
         {
             "inputs": [
                 {
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "comptroller_",
                     "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": "uint256"
+                    "type": "uint8"
+                },
+                {
+                    "internalType": "address payable",
+                    "name": "admin_",
+                    "type": "address"
                 }
             ],
             "payable": false,
@@ -9719,100 +19992,88 @@
             "type": "constructor",
             "signature": "constructor"
         },
-        {
-            "payable": true,
-            "stateMutability": "payable",
-            "type": "fallback"
-        },
         {
             "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",
-            "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "minter",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "mintAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "mintTokens",
-                    "type": "uint256"
-                }
-            ],
-            "name": "Mint",
-            "type": "event",
-            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "redeemer",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "redeemTokens",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "Redeem",
+            "name": "Approval",
             "type": "event",
-            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
         },
         {
             "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"
                 }
@@ -9826,59 +20087,57 @@
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "payer",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "error",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "accountBorrows",
+                    "internalType": "uint256",
+                    "name": "info",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "totalBorrows",
+                    "internalType": "uint256",
+                    "name": "detail",
                     "type": "uint256"
                 }
             ],
-            "name": "RepayBorrow",
+            "name": "Failure",
             "type": "event",
-            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
         },
         {
             "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": "cTokenCollateral",
                     "type": "address"
                 },
                 {
                     "indexed": false,
+                    "internalType": "uint256",
                     "name": "seizeTokens",
                     "type": "uint256"
                 }
@@ -9892,496 +20151,273 @@
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "oldPendingAdmin",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "newPendingAdmin",
-                    "type": "address"
-                }
-            ],
-            "name": "NewPendingAdmin",
-            "type": "event",
-            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldAdmin",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "newAdmin",
-                    "type": "address"
-                }
-            ],
-            "name": "NewAdmin",
-            "type": "event",
-            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldComptroller",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "newComptroller",
-                    "type": "address"
-                }
-            ],
-            "name": "NewComptroller",
-            "type": "event",
-            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldInterestRateModel",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "newInterestRateModel",
-                    "type": "address"
-                }
-            ],
-            "name": "NewMarketInterestRateModel",
-            "type": "event",
-            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldReserveFactorMantissa",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "newReserveFactorMantissa",
-                    "type": "uint256"
-                }
-            ],
-            "name": "NewReserveFactor",
-            "type": "event",
-            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "admin",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "reduceAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "newTotalReserves",
-                    "type": "uint256"
-                }
-            ],
-            "name": "ReservesReduced",
-            "type": "event",
-            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "error",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "minter",
+                    "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "info",
+                    "internalType": "uint256",
+                    "name": "mintAmount",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "detail",
+                    "internalType": "uint256",
+                    "name": "mintTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "Failure",
+            "name": "Mint",
             "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "from",
-                    "type": "address"
-                },
-                {
-                    "indexed": true,
-                    "name": "to",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldAdmin",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "amount",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "newAdmin",
+                    "type": "address"
                 }
             ],
-            "name": "Transfer",
+            "name": "NewAdmin",
             "type": "event",
-            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "owner",
-                    "type": "address"
-                },
-                {
-                    "indexed": true,
-                    "name": "spender",
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "oldComptroller",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "amount",
-                    "type": "uint256"
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
                 }
             ],
-            "name": "Approval",
+            "name": "NewComptroller",
             "type": "event",
-            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
-        }
-    ],
-    "Base500bps_Slope1200bps": [
+            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+        },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "cash",
-                    "type": "uint256"
-                },
-                {
-                    "name": "borrows",
-                    "type": "uint256"
-                },
-                {
-                    "name": "_reserves",
-                    "type": "uint256"
-                }
-            ],
-            "name": "getBorrowRate",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "oldInterestRateModel",
+                    "type": "address"
                 },
                 {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x15f24053"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "multiplier",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x1b3ed722"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "baseRate",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x1f68f20a"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "isInterestRateModel",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "bool"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x2191f92a"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "blocksPerYear",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xa385fb96"
+            "name": "NewMarketInterestRateModel",
+            "type": "event",
+            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
         },
         {
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "baseRate_",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
                 },
                 {
-                    "name": "multiplier_",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
-        }
-    ],
-    "Timelock": [
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+        },
         {
+            "anonymous": false,
             "inputs": [
                 {
-                    "internalType": "address",
-                    "name": "admin_",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldReserveFactorMantissa",
+                    "type": "uint256"
                 },
                 {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "delay_",
+                    "name": "newReserveFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
+            "name": "NewReserveFactor",
+            "type": "event",
+            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "internalType": "bytes32",
-                    "name": "txHash",
-                    "type": "bytes32"
-                },
-                {
-                    "indexed": true,
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "target",
+                    "name": "redeemer",
                     "type": "address"
                 },
                 {
                     "indexed": false,
                     "internalType": "uint256",
-                    "name": "value",
+                    "name": "redeemAmount",
                     "type": "uint256"
                 },
-                {
-                    "indexed": false,
-                    "internalType": "string",
-                    "name": "signature",
-                    "type": "string"
-                },
-                {
-                    "indexed": false,
-                    "internalType": "bytes",
-                    "name": "data",
-                    "type": "bytes"
-                },
                 {
                     "indexed": false,
                     "internalType": "uint256",
-                    "name": "eta",
+                    "name": "redeemTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "CancelTransaction",
+            "name": "Redeem",
             "type": "event",
-            "signature": "0x2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf87"
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "internalType": "bytes32",
-                    "name": "txHash",
-                    "type": "bytes32"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "payer",
+                    "type": "address"
                 },
                 {
-                    "indexed": true,
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "target",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
                     "indexed": false,
                     "internalType": "uint256",
-                    "name": "value",
+                    "name": "repayAmount",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "internalType": "string",
-                    "name": "signature",
-                    "type": "string"
-                },
-                {
-                    "indexed": false,
-                    "internalType": "bytes",
-                    "name": "data",
-                    "type": "bytes"
+                    "internalType": "uint256",
+                    "name": "accountBorrows",
+                    "type": "uint256"
                 },
                 {
                     "indexed": false,
                     "internalType": "uint256",
-                    "name": "eta",
-                    "type": "uint256"
-                }
-            ],
-            "name": "ExecuteTransaction",
-            "type": "event",
-            "signature": "0xa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e7"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": true,
-                    "internalType": "address",
-                    "name": "newAdmin",
-                    "type": "address"
+                    "name": "totalBorrows",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewAdmin",
+            "name": "RepayBorrow",
             "type": "event",
-            "signature": "0x71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c"
+            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "benefactor",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
                     "internalType": "uint256",
-                    "name": "newDelay",
+                    "name": "addAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
                     "type": "uint256"
                 }
             ],
-            "name": "NewDelay",
+            "name": "ReservesAdded",
             "type": "event",
-            "signature": "0x948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c"
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
+                    "indexed": false,
                     "internalType": "address",
-                    "name": "newPendingAdmin",
+                    "name": "admin",
                     "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewPendingAdmin",
+            "name": "ReservesReduced",
             "type": "event",
-            "signature": "0x69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a756"
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": true,
-                    "internalType": "bytes32",
-                    "name": "txHash",
-                    "type": "bytes32"
+                    "internalType": "address",
+                    "name": "from",
+                    "type": "address"
                 },
                 {
                     "indexed": true,
                     "internalType": "address",
-                    "name": "target",
+                    "name": "to",
                     "type": "address"
                 },
                 {
                     "indexed": false,
                     "internalType": "uint256",
-                    "name": "value",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "internalType": "string",
-                    "name": "signature",
-                    "type": "string"
-                },
-                {
-                    "indexed": false,
-                    "internalType": "bytes",
-                    "name": "data",
-                    "type": "bytes"
-                },
-                {
-                    "indexed": false,
-                    "internalType": "uint256",
-                    "name": "eta",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "QueueTransaction",
+            "name": "Transfer",
             "type": "event",
-            "signature": "0x76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f"
-        },
-        {
-            "payable": true,
-            "stateMutability": "payable",
-            "type": "fallback"
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [],
-            "name": "GRACE_PERIOD",
+            "name": "_acceptAdmin",
             "outputs": [
                 {
                     "internalType": "uint256",
@@ -10390,14 +20426,20 @@
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xc1a287e2"
+            "signature": "0xe9c714f2"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "MAXIMUM_DELAY",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_addReserves",
             "outputs": [
                 {
                     "internalType": "uint256",
@@ -10406,14 +20448,20 @@
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x7d645fab"
+            "signature": "0x3e941010"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "MINIMUM_DELAY",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_reduceReserves",
             "outputs": [
                 {
                     "internalType": "uint256",
@@ -10422,76 +20470,102 @@
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb1b43ae5"
+            "signature": "0x601a0bf1"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "acceptAdmin",
-            "outputs": [],
+            "inputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
+                }
+            ],
+            "name": "_setComptroller",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x0e18b681"
+            "signature": "0x4576b5db"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "admin",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
+                }
+            ],
+            "name": "_setInterestRateModel",
             "outputs": [
                 {
-                    "internalType": "address",
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf851a440"
+            "signature": "0xf2b3abbd"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "internalType": "address",
-                    "name": "target",
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
                     "type": "address"
-                },
+                }
+            ],
+            "name": "_setPendingAdmin",
+            "outputs": [
                 {
                     "internalType": "uint256",
-                    "name": "value",
+                    "name": "",
                     "type": "uint256"
-                },
-                {
-                    "internalType": "string",
-                    "name": "signature",
-                    "type": "string"
-                },
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xb71d1a0c"
+        },
+        {
+            "constant": false,
+            "inputs": [
                 {
-                    "internalType": "bytes",
-                    "name": "data",
-                    "type": "bytes"
-                },
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_setReserveFactor",
+            "outputs": [
                 {
                     "internalType": "uint256",
-                    "name": "eta",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "cancelTransaction",
-            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x591fcdfe"
+            "signature": "0xfca7820b"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "delay",
+            "name": "accrualBlockNumber",
             "outputs": [
                 {
                     "internalType": "uint256",
@@ -10502,187 +20576,195 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6a42b8f8"
+            "signature": "0x6c540baf"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "internalType": "address",
-                    "name": "target",
-                    "type": "address"
-                },
-                {
-                    "internalType": "uint256",
-                    "name": "value",
-                    "type": "uint256"
-                },
-                {
-                    "internalType": "string",
-                    "name": "signature",
-                    "type": "string"
-                },
-                {
-                    "internalType": "bytes",
-                    "name": "data",
-                    "type": "bytes"
-                },
+            "inputs": [],
+            "name": "accrueInterest",
+            "outputs": [
                 {
                     "internalType": "uint256",
-                    "name": "eta",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "executeTransaction",
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa6afed95"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "admin",
             "outputs": [
                 {
-                    "internalType": "bytes",
+                    "internalType": "address payable",
                     "name": "",
-                    "type": "bytes"
+                    "type": "address"
                 }
             ],
-            "payable": true,
-            "stateMutability": "payable",
+            "payable": false,
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x0825f38f"
+            "signature": "0xf851a440"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "pendingAdmin",
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "spender",
+                    "type": "address"
+                }
+            ],
+            "name": "allowance",
             "outputs": [
                 {
-                    "internalType": "address",
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x26782247"
+            "signature": "0xdd62ed3e"
         },
         {
             "constant": false,
             "inputs": [
                 {
                     "internalType": "address",
-                    "name": "target",
+                    "name": "spender",
                     "type": "address"
                 },
                 {
                     "internalType": "uint256",
-                    "name": "value",
-                    "type": "uint256"
-                },
-                {
-                    "internalType": "string",
-                    "name": "signature",
-                    "type": "string"
-                },
-                {
-                    "internalType": "bytes",
-                    "name": "data",
-                    "type": "bytes"
-                },
-                {
-                    "internalType": "uint256",
-                    "name": "eta",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "queueTransaction",
+            "name": "approve",
             "outputs": [
                 {
-                    "internalType": "bytes32",
+                    "internalType": "bool",
                     "name": "",
-                    "type": "bytes32"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x3a66f901"
+            "signature": "0x095ea7b3"
         },
         {
             "constant": true,
             "inputs": [
                 {
-                    "internalType": "bytes32",
-                    "name": "",
-                    "type": "bytes32"
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
                 }
             ],
-            "name": "queuedTransactions",
+            "name": "balanceOf",
             "outputs": [
                 {
-                    "internalType": "bool",
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf2b06537"
+            "signature": "0x70a08231"
         },
         {
             "constant": false,
             "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOfUnderlying",
+            "outputs": [
                 {
                     "internalType": "uint256",
-                    "name": "delay_",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "setDelay",
-            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe177246e"
+            "signature": "0x3af9e669"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "internalType": "address",
-                    "name": "pendingAdmin_",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "borrow",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
                 }
             ],
-            "name": "setPendingAdmin",
-            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x4dd18bf5"
-        }
-    ],
-    "Base200bps_Slope3000bps": [
+            "signature": "0xc5ebeaec"
+        },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "cash",
-                    "type": "uint256"
-                },
-                {
-                    "name": "borrows",
-                    "type": "uint256"
-                },
-                {
-                    "name": "_reserves",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
                 }
             ],
-            "name": "getBorrowRate",
+            "name": "borrowBalanceCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
-                },
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x17bfdfbc"
+        },
+        {
+            "constant": true,
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "borrowBalanceStored",
+            "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -10690,14 +20772,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x15f24053"
+            "signature": "0x95dd9193"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "multiplier",
+            "name": "borrowIndex",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -10705,14 +20788,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x1b3ed722"
+            "signature": "0xaa5af0fd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "baseRate",
+            "name": "borrowRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -10720,223 +20804,289 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x1f68f20a"
+            "signature": "0xf8f9da28"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "isInterestRateModel",
+            "name": "comptroller",
             "outputs": [
                 {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "",
-                    "type": "bool"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x2191f92a"
+            "signature": "0x5fe3b567"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "blocksPerYear",
+            "name": "decimals",
             "outputs": [
                 {
+                    "internalType": "uint8",
                     "name": "",
-                    "type": "uint256"
+                    "type": "uint8"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xa385fb96"
+            "signature": "0x313ce567"
         },
         {
-            "inputs": [
-                {
-                    "name": "baseRate_",
-                    "type": "uint256"
-                },
+            "constant": false,
+            "inputs": [],
+            "name": "exchangeRateCurrent",
+            "outputs": [
                 {
-                    "name": "multiplier_",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
-        }
-    ],
-    "cREP": [
+            "type": "function",
+            "signature": "0xbd6d894d"
+        },
         {
             "constant": true,
             "inputs": [],
-            "name": "name",
+            "name": "exchangeRateStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x06fdde03"
+            "signature": "0x182df0f5"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "spender",
+                    "internalType": "address",
+                    "name": "account",
                     "type": "address"
-                },
-                {
-                    "name": "amount",
-                    "type": "uint256"
                 }
             ],
-            "name": "approve",
+            "name": "getAccountSnapshot",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x095ea7b3"
+            "signature": "0xc37f68e2"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "repayAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "repayBorrow",
+            "constant": true,
+            "inputs": [],
+            "name": "getCash",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x0e752702"
+            "signature": "0x3b1d21a2"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "reserveFactorMantissa",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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"
                 }
             ],
+            "name": "initialize",
+            "outputs": [],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x173b9904"
+            "signature": "0x1a31d465"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "account",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
                     "type": "address"
-                }
-            ],
-            "name": "borrowBalanceCurrent",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "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"
                 }
             ],
+            "name": "initialize",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x17bfdfbc"
+            "signature": "0x99d8c1b4"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "totalSupply",
+            "name": "interestRateModel",
             "outputs": [
                 {
+                    "internalType": "contract InterestRateModel",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x18160ddd"
+            "signature": "0xf3fdb15a"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "exchangeRateStored",
+            "name": "isCToken",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x182df0f5"
+            "signature": "0xfe9c44ae"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "src",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "dst",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
                 },
                 {
-                    "name": "amount",
-                    "type": "uint256"
+                    "internalType": "contract CTokenInterface",
+                    "name": "cTokenCollateral",
+                    "type": "address"
                 }
             ],
-            "name": "transferFrom",
+            "name": "liquidateBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x23b872dd"
+            "signature": "0xf5e3c462"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "mintAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrowBehalf",
+            "name": "mint",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -10944,49 +21094,53 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x2608f818"
+            "signature": "0xa0712d68"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "pendingAdmin",
+            "name": "name",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "address"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x26782247"
+            "signature": "0x06fdde03"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "decimals",
+            "name": "pendingAdmin",
             "outputs": [
                 {
+                    "internalType": "address payable",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x313ce567"
+            "signature": "0x26782247"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "balanceOfUnderlying",
+            "name": "redeem",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -10994,34 +21148,43 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x3af9e669"
+            "signature": "0xdb006a75"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "getCash",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "redeemUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x3b1d21a2"
+            "signature": "0x852a12e3"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newComptroller",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setComptroller",
+            "name": "repayBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -11029,49 +21192,74 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x4576b5db"
+            "signature": "0x0e752702"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "totalBorrows",
+            "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": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x47bd3718"
+            "signature": "0x2608f818"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "comptroller",
+            "name": "reserveFactorMantissa",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x5fe3b567"
+            "signature": "0x173b9904"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "reduceAmount",
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "_reduceReserves",
+            "name": "seize",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -11079,14 +21267,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x601a0bf1"
+            "signature": "0xb2a02ff1"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "initialExchangeRateMantissa",
+            "name": "supplyRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -11094,49 +21283,31 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x675d972c"
+            "signature": "0xae9d70b0"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "accrualBlockNumber",
+            "name": "symbol",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6c540baf"
+            "signature": "0x95d89b41"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "underlying",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "address"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x6f307dc3"
-        },
-        {
-            "constant": true,
-            "inputs": [
-                {
-                    "name": "owner",
-                    "type": "address"
-                }
-            ],
-            "name": "balanceOf",
+            "name": "totalBorrows",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -11144,7 +21315,7 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x70a08231"
+            "signature": "0x47bd3718"
         },
         {
             "constant": false,
@@ -11152,6 +21323,7 @@
             "name": "totalBorrowsCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -11161,32 +21333,13 @@
             "type": "function",
             "signature": "0x73acee98"
         },
-        {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "redeemUnderlying",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x852a12e3"
-        },
         {
             "constant": true,
             "inputs": [],
             "name": "totalReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -11198,30 +21351,11 @@
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "symbol",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "string"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x95d89b41"
-        },
-        {
-            "constant": true,
-            "inputs": [
-                {
-                    "name": "account",
-                    "type": "address"
-                }
-            ],
-            "name": "borrowBalanceStored",
+            "inputs": [],
+            "name": "totalSupply",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -11229,58 +21363,58 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95dd9193"
+            "signature": "0x18160ddd"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "mintAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "mint",
-            "outputs": [
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
+                },
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xa0712d68"
-        },
-        {
-            "constant": false,
-            "inputs": [],
-            "name": "accrueInterest",
+            "name": "transfer",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa6afed95"
+            "signature": "0xa9059cbb"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
+                    "name": "src",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
                     "name": "dst",
                     "type": "address"
                 },
                 {
+                    "internalType": "uint256",
                     "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "transfer",
+            "name": "transferFrom",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
                     "type": "bool"
                 }
@@ -11288,123 +21422,119 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0x23b872dd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowIndex",
+            "name": "underlying",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xaa5af0fd"
+            "signature": "0x6f307dc3"
+        }
+    ],
+    "WBTC": [
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "mintingFinished",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x05d2035b"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "supplyRatePerBlock",
+            "name": "name",
             "outputs": [
                 {
                     "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xae9d70b0"
+            "signature": "0x06fdde03"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
-                    "name": "borrower",
+                    "name": "_owner",
                     "type": "address"
                 },
                 {
-                    "name": "seizeTokens",
-                    "type": "uint256"
-                }
-            ],
-            "name": "seize",
-            "outputs": [
-                {
-                    "name": "",
+                    "name": "value",
                     "type": "uint256"
                 }
             ],
+            "name": "allocateTo",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb2a02ff1"
+            "signature": "0x08bca566"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newPendingAdmin",
+                    "name": "_spender",
                     "type": "address"
+                },
+                {
+                    "name": "_value",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setPendingAdmin",
+            "name": "approve",
             "outputs": [
                 {
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb71d1a0c"
+            "signature": "0x095ea7b3"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "exchangeRateCurrent",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "name": "_token",
+                    "type": "address"
                 }
             ],
+            "name": "reclaimToken",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xbd6d894d"
+            "signature": "0x17ffc320"
         },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "account",
-                    "type": "address"
-                }
-            ],
-            "name": "getAccountSnapshot",
+            "inputs": [],
+            "name": "totalSupply",
             "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
                 {
                     "name": "",
                     "type": "uint256"
@@ -11413,636 +21543,562 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xc37f68e2"
+            "signature": "0x18160ddd"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrowAmount",
+                    "name": "_from",
+                    "type": "address"
+                },
+                {
+                    "name": "_to",
+                    "type": "address"
+                },
+                {
+                    "name": "_value",
                     "type": "uint256"
                 }
             ],
-            "name": "borrow",
+            "name": "transferFrom",
             "outputs": [
                 {
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xc5ebeaec"
+            "signature": "0x23b872dd"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "redeemTokens",
-                    "type": "uint256"
-                }
-            ],
-            "name": "redeem",
+            "constant": true,
+            "inputs": [],
+            "name": "decimals",
             "outputs": [
                 {
                     "name": "",
-                    "type": "uint256"
+                    "type": "uint8"
                 }
             ],
             "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x313ce567"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "unpause",
+            "outputs": [],
+            "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xdb006a75"
+            "signature": "0x3f4ba83a"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
+                    "name": "_to",
                     "type": "address"
                 },
                 {
-                    "name": "spender",
-                    "type": "address"
+                    "name": "_amount",
+                    "type": "uint256"
                 }
             ],
-            "name": "allowance",
+            "name": "mint",
             "outputs": [
                 {
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xdd62ed3e"
+            "signature": "0x40c10f19"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "_acceptAdmin",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
+                    "name": "value",
                     "type": "uint256"
                 }
             ],
+            "name": "burn",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe9c714f2"
+            "signature": "0x42966c68"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "name": "newInterestRateModel",
-                    "type": "address"
-                }
-            ],
-            "name": "_setInterestRateModel",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
+            "inputs": [],
+            "name": "claimOwnership",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf2b3abbd"
+            "signature": "0x4e71e0c8"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "interestRateModel",
+            "name": "paused",
             "outputs": [
                 {
                     "name": "",
-                    "type": "address"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf3fdb15a"
+            "signature": "0x5c975abb"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
+                    "name": "_spender",
                     "type": "address"
                 },
                 {
-                    "name": "repayAmount",
+                    "name": "_subtractedValue",
                     "type": "uint256"
-                },
-                {
-                    "name": "cTokenCollateral",
-                    "type": "address"
                 }
             ],
-            "name": "liquidateBorrow",
+            "name": "decreaseApproval",
             "outputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "name": "success",
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf5e3c462"
+            "signature": "0x66188463"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "admin",
+            "inputs": [
+                {
+                    "name": "_owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOf",
             "outputs": [
                 {
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf851a440"
+            "signature": "0x70a08231"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [],
-            "name": "borrowRatePerBlock",
+            "name": "renounceOwnership",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x715018a6"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "finishMinting",
             "outputs": [
                 {
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf8f9da28"
+            "signature": "0x7d64bcb4"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "name": "newReserveFactorMantissa",
-                    "type": "uint256"
-                }
-            ],
-            "name": "_setReserveFactor",
+            "inputs": [],
+            "name": "pause",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x8456cb59"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "owner",
             "outputs": [
                 {
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xfca7820b"
+            "signature": "0x8da5cb5b"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "isCToken",
+            "name": "symbol",
             "outputs": [
                 {
                     "name": "",
-                    "type": "bool"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xfe9c44ae"
+            "signature": "0x95d89b41"
         },
         {
+            "constant": false,
             "inputs": [
                 {
-                    "name": "underlying_",
-                    "type": "address"
-                },
-                {
-                    "name": "comptroller_",
-                    "type": "address"
-                },
-                {
-                    "name": "interestRateModel_",
+                    "name": "_to",
                     "type": "address"
                 },
                 {
-                    "name": "initialExchangeRateMantissa_",
+                    "name": "_value",
                     "type": "uint256"
-                },
-                {
-                    "name": "name_",
-                    "type": "string"
-                },
-                {
-                    "name": "symbol_",
-                    "type": "string"
-                },
+                }
+            ],
+            "name": "transfer",
+            "outputs": [
                 {
-                    "name": "decimals_",
-                    "type": "uint256"
+                    "name": "",
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
+            "type": "function",
+            "signature": "0xa9059cbb"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "interestAccumulated",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrowIndex",
-                    "type": "uint256"
+                    "name": "_spender",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "totalBorrows",
+                    "name": "_addedValue",
                     "type": "uint256"
                 }
             ],
-            "name": "AccrueInterest",
-            "type": "event",
-            "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "minter",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "mintAmount",
-                    "type": "uint256"
-                },
+            "name": "increaseApproval",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "mintTokens",
-                    "type": "uint256"
+                    "name": "success",
+                    "type": "bool"
                 }
             ],
-            "name": "Mint",
-            "type": "event",
-            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xd73dd623"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "redeemer",
+                    "name": "_owner",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                },
+                    "name": "_spender",
+                    "type": "address"
+                }
+            ],
+            "name": "allowance",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "redeemTokens",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Redeem",
-            "type": "event",
-            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdd62ed3e"
         },
         {
-            "anonymous": false,
-            "inputs": [
+            "constant": true,
+            "inputs": [],
+            "name": "pendingOwner",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "borrower",
+                    "name": "",
                     "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrowAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "accountBorrows",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "totalBorrows",
-                    "type": "uint256"
                 }
             ],
-            "name": "Borrow",
-            "type": "event",
-            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xe30c3978"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "payer",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrower",
+                    "name": "newOwner",
                     "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "repayAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "accountBorrows",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "totalBorrows",
-                    "type": "uint256"
                 }
             ],
-            "name": "RepayBorrow",
-            "type": "event",
-            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+            "name": "transferOwnership",
+            "outputs": [],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xf2fde38b"
         },
         {
             "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "repayAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "cTokenCollateral",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "seizeTokens",
-                    "type": "uint256"
-                }
-            ],
-            "name": "LiquidateBorrow",
+            "inputs": [],
+            "name": "Pause",
+            "type": "event",
+            "signature": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625"
+        },
+        {
+            "anonymous": false,
+            "inputs": [],
+            "name": "Unpause",
             "type": "event",
-            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+            "signature": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldPendingAdmin",
+                    "indexed": true,
+                    "name": "burner",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "newPendingAdmin",
-                    "type": "address"
+                    "name": "value",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewPendingAdmin",
+            "name": "Burn",
             "type": "event",
-            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+            "signature": "0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldAdmin",
+                    "indexed": true,
+                    "name": "to",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "newAdmin",
-                    "type": "address"
+                    "name": "amount",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewAdmin",
+            "name": "Mint",
             "type": "event",
-            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+            "signature": "0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885"
+        },
+        {
+            "anonymous": false,
+            "inputs": [],
+            "name": "MintFinished",
+            "type": "event",
+            "signature": "0xae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa08"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldComptroller",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "newComptroller",
+                    "indexed": true,
+                    "name": "previousOwner",
                     "type": "address"
                 }
             ],
-            "name": "NewComptroller",
+            "name": "OwnershipRenounced",
             "type": "event",
-            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+            "signature": "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldInterestRateModel",
+                    "indexed": true,
+                    "name": "previousOwner",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newInterestRateModel",
+                    "indexed": true,
+                    "name": "newOwner",
                     "type": "address"
                 }
             ],
-            "name": "NewMarketInterestRateModel",
+            "name": "OwnershipTransferred",
             "type": "event",
-            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+            "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldReserveFactorMantissa",
-                    "type": "uint256"
+                    "indexed": true,
+                    "name": "owner",
+                    "type": "address"
+                },
+                {
+                    "indexed": true,
+                    "name": "spender",
+                    "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "newReserveFactorMantissa",
+                    "name": "value",
                     "type": "uint256"
                 }
             ],
-            "name": "NewReserveFactor",
+            "name": "Approval",
             "type": "event",
-            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "admin",
+                    "indexed": true,
+                    "name": "from",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "reduceAmount",
-                    "type": "uint256"
+                    "indexed": true,
+                    "name": "to",
+                    "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "newTotalReserves",
+                    "name": "value",
                     "type": "uint256"
                 }
             ],
-            "name": "ReservesReduced",
+            "name": "Transfer",
             "type": "event",
-            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
-        },
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+        }
+    ],
+    "SAI": [
         {
-            "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "error",
+                    "internalType": "uint256",
+                    "name": "_initialAmount",
                     "type": "uint256"
                 },
                 {
-                    "indexed": false,
-                    "name": "info",
-                    "type": "uint256"
+                    "internalType": "string",
+                    "name": "_tokenName",
+                    "type": "string"
                 },
                 {
-                    "indexed": false,
-                    "name": "detail",
-                    "type": "uint256"
+                    "internalType": "uint8",
+                    "name": "_decimalUnits",
+                    "type": "uint8"
+                },
+                {
+                    "internalType": "string",
+                    "name": "_tokenSymbol",
+                    "type": "string"
                 }
             ],
-            "name": "Failure",
-            "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": true,
-                    "name": "from",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
                     "indexed": true,
-                    "name": "to",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "value",
                     "type": "uint256"
                 }
             ],
-            "name": "Transfer",
+            "name": "Approval",
             "type": "event",
-            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": true,
-                    "name": "owner",
+                    "internalType": "address",
+                    "name": "from",
                     "type": "address"
                 },
                 {
                     "indexed": true,
-                    "name": "spender",
+                    "internalType": "address",
+                    "name": "to",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "value",
                     "type": "uint256"
                 }
             ],
-            "name": "Approval",
+            "name": "Transfer",
             "type": "event",
-            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
-        }
-    ],
-    "WBTC": [
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "mintingFinished",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "bool"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x05d2035b"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "name",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "string"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x06fdde03"
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "_owner",
                     "type": "address"
                 },
                 {
+                    "internalType": "uint256",
                     "name": "value",
                     "type": "uint256"
                 }
@@ -12055,86 +22111,80 @@
             "signature": "0x08bca566"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "_spender",
+                    "internalType": "address",
+                    "name": "_owner",
                     "type": "address"
                 },
                 {
-                    "name": "_value",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "_spender",
+                    "type": "address"
                 }
             ],
-            "name": "approve",
+            "name": "allowance",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x095ea7b3"
+            "signature": "0xdd62ed3e"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "_token",
+                    "internalType": "address",
+                    "name": "_spender",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_value",
+                    "type": "uint256"
                 }
             ],
-            "name": "reclaimToken",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x17ffc320"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "totalSupply",
+            "name": "approve",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x18160ddd"
+            "signature": "0x095ea7b3"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "_from",
-                    "type": "address"
-                },
-                {
-                    "name": "_to",
+                    "internalType": "address",
+                    "name": "_owner",
                     "type": "address"
-                },
-                {
-                    "name": "_value",
-                    "type": "uint256"
                 }
             ],
-            "name": "transferFrom",
+            "name": "balanceOf",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x23b872dd"
+            "signature": "0x70a08231"
         },
         {
             "constant": true,
@@ -12142,6 +22192,7 @@
             "name": "decimals",
             "outputs": [
                 {
+                    "internalType": "uint8",
                     "name": "",
                     "type": "uint8"
                 }
@@ -12153,29 +22204,49 @@
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "unpause",
-            "outputs": [],
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "_spender",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_subtractedValue",
+                    "type": "uint256"
+                }
+            ],
+            "name": "decreaseApproval",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x3f4ba83a"
+            "signature": "0x66188463"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "_to",
+                    "internalType": "address",
+                    "name": "_spender",
                     "type": "address"
                 },
                 {
-                    "name": "_amount",
+                    "internalType": "uint256",
+                    "name": "_addedValue",
                     "type": "uint256"
                 }
             ],
-            "name": "mint",
+            "name": "increaseApproval",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
                     "type": "bool"
                 }
@@ -12183,160 +22254,197 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x40c10f19"
+            "signature": "0xd73dd623"
         },
         {
-            "constant": false,
-            "inputs": [
+            "constant": true,
+            "inputs": [],
+            "name": "name",
+            "outputs": [
                 {
-                    "name": "value",
-                    "type": "uint256"
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
                 }
             ],
-            "name": "burn",
-            "outputs": [],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x42966c68"
+            "signature": "0x06fdde03"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "claimOwnership",
-            "outputs": [],
+            "name": "symbol",
+            "outputs": [
+                {
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x4e71e0c8"
+            "signature": "0x95d89b41"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "paused",
+            "name": "totalSupply",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x5c975abb"
+            "signature": "0x18160ddd"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "_spender",
+                    "internalType": "address",
+                    "name": "_to",
                     "type": "address"
                 },
                 {
-                    "name": "_subtractedValue",
+                    "internalType": "uint256",
+                    "name": "_value",
                     "type": "uint256"
                 }
             ],
-            "name": "decreaseApproval",
+            "name": "transfer",
             "outputs": [
                 {
-                    "name": "success",
+                    "internalType": "bool",
+                    "name": "",
                     "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x66188463"
+            "signature": "0xa9059cbb"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "_owner",
+                    "internalType": "address",
+                    "name": "_from",
                     "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "_to",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "_value",
+                    "type": "uint256"
                 }
             ],
-            "name": "balanceOf",
+            "name": "transferFrom",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x70a08231"
-        },
-        {
-            "constant": false,
-            "inputs": [],
-            "name": "renounceOwnership",
-            "outputs": [],
-            "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x715018a6"
-        },
+            "signature": "0x23b872dd"
+        }
+    ],
+    "REP": [
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "finishMinting",
+            "name": "name",
             "outputs": [
                 {
                     "name": "",
-                    "type": "bool"
+                    "type": "string"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x7d64bcb4"
+            "signature": "0x06fdde03"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "pause",
+            "inputs": [
+                {
+                    "name": "_owner",
+                    "type": "address"
+                },
+                {
+                    "name": "value",
+                    "type": "uint256"
+                }
+            ],
+            "name": "allocateTo",
             "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x8456cb59"
+            "signature": "0x08bca566"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "owner",
+            "constant": false,
+            "inputs": [
+                {
+                    "name": "_spender",
+                    "type": "address"
+                },
+                {
+                    "name": "_value",
+                    "type": "uint256"
+                }
+            ],
+            "name": "approve",
             "outputs": [
                 {
                     "name": "",
-                    "type": "address"
+                    "type": "bool"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x8da5cb5b"
+            "signature": "0x095ea7b3"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "symbol",
+            "name": "totalSupply",
             "outputs": [
                 {
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95d89b41"
+            "signature": "0x18160ddd"
         },
         {
             "constant": false,
             "inputs": [
+                {
+                    "name": "_from",
+                    "type": "address"
+                },
                 {
                     "name": "_to",
                     "type": "address"
@@ -12346,7 +22454,7 @@
                     "type": "uint256"
                 }
             ],
-            "name": "transfer",
+            "name": "transferFrom",
             "outputs": [
                 {
                     "name": "",
@@ -12356,7 +22464,22 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0x23b872dd"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "decimals",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "uint8"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x313ce567"
         },
         {
             "constant": false,
@@ -12366,21 +22489,21 @@
                     "type": "address"
                 },
                 {
-                    "name": "_addedValue",
+                    "name": "_subtractedValue",
                     "type": "uint256"
                 }
             ],
-            "name": "increaseApproval",
+            "name": "decreaseApproval",
             "outputs": [
                 {
-                    "name": "success",
+                    "name": "",
                     "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xd73dd623"
+            "signature": "0x66188463"
         },
         {
             "constant": true,
@@ -12388,13 +22511,9 @@
                 {
                     "name": "_owner",
                     "type": "address"
-                },
-                {
-                    "name": "_spender",
-                    "type": "address"
                 }
             ],
-            "name": "allowance",
+            "name": "balanceOf",
             "outputs": [
                 {
                     "name": "",
@@ -12404,125 +22523,118 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xdd62ed3e"
+            "signature": "0x70a08231"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "pendingOwner",
+            "name": "symbol",
             "outputs": [
                 {
                     "name": "",
-                    "type": "address"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xe30c3978"
+            "signature": "0x95d89b41"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newOwner",
-                    "type": "address"
-                }
-            ],
-            "name": "transferOwnership",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xf2fde38b"
-        },
-        {
-            "anonymous": false,
-            "inputs": [],
-            "name": "Pause",
-            "type": "event",
-            "signature": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625"
-        },
-        {
-            "anonymous": false,
-            "inputs": [],
-            "name": "Unpause",
-            "type": "event",
-            "signature": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": true,
-                    "name": "burner",
+                    "name": "_to",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "value",
+                    "name": "_value",
                     "type": "uint256"
                 }
             ],
-            "name": "Burn",
-            "type": "event",
-            "signature": "0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5"
+            "name": "transfer",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa9059cbb"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "to",
+                    "name": "_spender",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "amount",
+                    "name": "_addedValue",
                     "type": "uint256"
                 }
             ],
-            "name": "Mint",
-            "type": "event",
-            "signature": "0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885"
-        },
-        {
-            "anonymous": false,
-            "inputs": [],
-            "name": "MintFinished",
-            "type": "event",
-            "signature": "0xae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa08"
+            "name": "increaseApproval",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xd73dd623"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "previousOwner",
+                    "name": "_owner",
+                    "type": "address"
+                },
+                {
+                    "name": "_spender",
                     "type": "address"
                 }
             ],
-            "name": "OwnershipRenounced",
-            "type": "event",
-            "signature": "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820"
+            "name": "allowance",
+            "outputs": [
+                {
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdd62ed3e"
         },
         {
-            "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "previousOwner",
-                    "type": "address"
+                    "name": "_initialAmount",
+                    "type": "uint256"
                 },
                 {
-                    "indexed": true,
-                    "name": "newOwner",
-                    "type": "address"
+                    "name": "_tokenName",
+                    "type": "string"
+                },
+                {
+                    "name": "_decimalUnits",
+                    "type": "uint8"
+                },
+                {
+                    "name": "_tokenSymbol",
+                    "type": "string"
                 }
             ],
-            "name": "OwnershipTransferred",
-            "type": "event",
-            "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
             "anonymous": false,
@@ -12571,376 +22683,528 @@
             "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
         }
     ],
-    "REP": [
+    "cZRX": [
         {
-            "constant": true,
-            "inputs": [],
-            "name": "name",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x06fdde03"
+            "stateMutability": "nonpayable",
+            "type": "constructor",
+            "signature": "constructor"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "_owner",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "cashPrior",
+                    "type": "uint256"
                 },
                 {
-                    "name": "value",
+                    "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": "allocateTo",
-            "outputs": [],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x08bca566"
+            "name": "AccrueInterest",
+            "type": "event",
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "_spender",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "name": "_value",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "spender",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "approve",
-            "outputs": [
+            "name": "Approval",
+            "type": "event",
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "bool"
+                    "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"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x095ea7b3"
+            "name": "Borrow",
+            "type": "event",
+            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "totalSupply",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "error",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "info",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "detail",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x18160ddd"
+            "name": "Failure",
+            "type": "event",
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "_from",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "liquidator",
                     "type": "address"
                 },
                 {
-                    "name": "_to",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "_value",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
-                }
-            ],
-            "name": "transferFrom",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "bool"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x23b872dd"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "decimals",
-            "outputs": [
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "cTokenCollateral",
+                    "type": "address"
+                },
                 {
-                    "name": "",
-                    "type": "uint8"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x313ce567"
+            "name": "LiquidateBorrow",
+            "type": "event",
+            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "_spender",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "minter",
                     "type": "address"
                 },
                 {
-                    "name": "_subtractedValue",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "mintAmount",
                     "type": "uint256"
-                }
-            ],
-            "name": "decreaseApproval",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "bool"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "mintTokens",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x66188463"
+            "name": "Mint",
+            "type": "event",
+            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "_owner",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newAdmin",
                     "type": "address"
                 }
             ],
-            "name": "balanceOf",
-            "outputs": [
+            "name": "NewAdmin",
+            "type": "event",
+            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "oldComptroller",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x70a08231"
+            "name": "NewComptroller",
+            "type": "event",
+            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "symbol",
-            "outputs": [
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "string"
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "oldInterestRateModel",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x95d89b41"
+            "name": "NewMarketInterestRateModel",
+            "type": "event",
+            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "_to",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
                     "type": "address"
                 },
                 {
-                    "name": "_value",
-                    "type": "uint256"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
                 }
             ],
-            "name": "transfer",
-            "outputs": [
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "bool"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "oldReserveFactorMantissa",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xa9059cbb"
+            "name": "NewReserveFactor",
+            "type": "event",
+            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
         },
         {
-            "constant": false,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "_spender",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "redeemer",
                     "type": "address"
                 },
                 {
-                    "name": "_addedValue",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
                     "type": "uint256"
-                }
-            ],
-            "name": "increaseApproval",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "bool"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0xd73dd623"
+            "name": "Redeem",
+            "type": "event",
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
         },
         {
-            "constant": true,
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "_owner",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "payer",
                     "type": "address"
                 },
                 {
-                    "name": "_spender",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
-                }
-            ],
-            "name": "allowance",
-            "outputs": [
+                },
                 {
-                    "name": "",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "accountBorrows",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "totalBorrows",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xdd62ed3e"
+            "name": "RepayBorrow",
+            "type": "event",
+            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
         },
         {
+            "anonymous": false,
             "inputs": [
                 {
-                    "name": "_initialAmount",
-                    "type": "uint256"
-                },
-                {
-                    "name": "_tokenName",
-                    "type": "string"
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "benefactor",
+                    "type": "address"
                 },
                 {
-                    "name": "_decimalUnits",
-                    "type": "uint8"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
                 },
                 {
-                    "name": "_tokenSymbol",
-                    "type": "string"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
+                    "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
+            "name": "ReservesAdded",
+            "type": "event",
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "owner",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "admin",
                     "type": "address"
                 },
                 {
-                    "indexed": true,
-                    "name": "spender",
-                    "type": "address"
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "value",
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
                     "type": "uint256"
                 }
             ],
-            "name": "Approval",
+            "name": "ReservesReduced",
             "type": "event",
-            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": true,
+                    "internalType": "address",
                     "name": "from",
                     "type": "address"
                 },
                 {
                     "indexed": true,
+                    "internalType": "address",
                     "name": "to",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "value",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
             "name": "Transfer",
             "type": "event",
             "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
-        }
-    ],
-    "cZRX": [
+        },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [],
-            "name": "name",
+            "name": "_acceptAdmin",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x06fdde03"
+            "signature": "0xe9c714f2"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "spender",
-                    "type": "address"
-                },
-                {
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "addAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "approve",
+            "name": "_addReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x095ea7b3"
+            "signature": "0x3e941010"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrow",
+            "name": "_reduceReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -12948,34 +23212,43 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x0e752702"
+            "signature": "0x601a0bf1"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "reserveFactorMantissa",
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
+                }
+            ],
+            "name": "_setComptroller",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x173b9904"
+            "signature": "0x4576b5db"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "account",
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
                     "type": "address"
                 }
             ],
-            "name": "borrowBalanceCurrent",
+            "name": "_setInterestRateModel",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -12983,81 +23256,75 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x17bfdfbc"
+            "signature": "0xf2b3abbd"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "totalSupply",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x18160ddd"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "exchangeRateStored",
+            "name": "_setPendingAdmin",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x182df0f5"
+            "signature": "0xb71d1a0c"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "src",
-                    "type": "address"
-                },
-                {
-                    "name": "dst",
-                    "type": "address"
-                },
-                {
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "transferFrom",
+            "name": "_setReserveFactor",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x23b872dd"
+            "signature": "0xfca7820b"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "borrower",
-                    "type": "address"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "accrualBlockNumber",
+            "outputs": [
                 {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrowBehalf",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6c540baf"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "accrueInterest",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13065,14 +23332,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x2608f818"
+            "signature": "0xa6afed95"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "pendingAdmin",
+            "name": "admin",
             "outputs": [
                 {
+                    "internalType": "address payable",
                     "name": "",
                     "type": "address"
                 }
@@ -13080,14 +23348,26 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x26782247"
+            "signature": "0xf851a440"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "decimals",
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "spender",
+                    "type": "address"
+                }
+            ],
+            "name": "allowance",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13095,34 +23375,48 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x313ce567"
+            "signature": "0xdd62ed3e"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "amount",
+                    "type": "uint256"
                 }
             ],
-            "name": "balanceOfUnderlying",
+            "name": "approve",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x3af9e669"
+            "signature": "0x095ea7b3"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "getCash",
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
+                }
+            ],
+            "name": "balanceOf",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13130,19 +23424,21 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x3b1d21a2"
+            "signature": "0x70a08231"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newComptroller",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 }
             ],
-            "name": "_setComptroller",
+            "name": "balanceOfUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13150,49 +23446,43 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x4576b5db"
+            "signature": "0x3af9e669"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "totalBorrows",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x47bd3718"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "comptroller",
+            "name": "borrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x5fe3b567"
+            "signature": "0xc5ebeaec"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "reduceAmount",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
                 }
             ],
-            "name": "_reduceReserves",
+            "name": "borrowBalanceCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13200,14 +23490,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x601a0bf1"
+            "signature": "0x17bfdfbc"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "initialExchangeRateMantissa",
+            "inputs": [
+                {
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
+                }
+            ],
+            "name": "borrowBalanceStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13215,14 +23512,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x675d972c"
+            "signature": "0x95dd9193"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "accrualBlockNumber",
+            "name": "borrowIndex",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13230,69 +23528,63 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6c540baf"
+            "signature": "0xaa5af0fd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "underlying",
+            "name": "borrowRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6f307dc3"
+            "signature": "0xf8f9da28"
         },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "owner",
-                    "type": "address"
-                }
-            ],
-            "name": "balanceOf",
+            "inputs": [],
+            "name": "comptroller",
             "outputs": [
                 {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x70a08231"
+            "signature": "0x5fe3b567"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "totalBorrowsCurrent",
+            "name": "decimals",
             "outputs": [
                 {
+                    "internalType": "uint8",
                     "name": "",
-                    "type": "uint256"
+                    "type": "uint8"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x73acee98"
+            "signature": "0x313ce567"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "redeemUnderlying",
+            "inputs": [],
+            "name": "exchangeRateCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13300,14 +23592,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x852a12e3"
+            "signature": "0xbd6d894d"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "totalReserves",
+            "name": "exchangeRateStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13315,34 +23608,36 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x8f840ddd"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "symbol",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "string"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x95d89b41"
+            "signature": "0x182df0f5"
         },
         {
             "constant": true,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "account",
                     "type": "address"
                 }
             ],
-            "name": "borrowBalanceStored",
+            "name": "getAccountSnapshot",
             "outputs": [
                 {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13350,116 +23645,166 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95dd9193"
+            "signature": "0xc37f68e2"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "mintAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "mint",
+            "constant": true,
+            "inputs": [],
+            "name": "getCash",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xa0712d68"
+            "signature": "0x3b1d21a2"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "accrueInterest",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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"
                 }
             ],
+            "name": "initialize",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa6afed95"
+            "signature": "0x1a31d465"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "dst",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
                     "type": "address"
                 },
                 {
-                    "name": "amount",
+                    "internalType": "contract InterestRateModel",
+                    "name": "interestRateModel_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "initialExchangeRateMantissa_",
                     "type": "uint256"
-                }
-            ],
-            "name": "transfer",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "bool"
+                    "internalType": "string",
+                    "name": "name_",
+                    "type": "string"
+                },
+                {
+                    "internalType": "string",
+                    "name": "symbol_",
+                    "type": "string"
+                },
+                {
+                    "internalType": "uint8",
+                    "name": "decimals_",
+                    "type": "uint8"
                 }
             ],
+            "name": "initialize",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0x99d8c1b4"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowIndex",
+            "name": "interestRateModel",
             "outputs": [
                 {
+                    "internalType": "contract InterestRateModel",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xaa5af0fd"
+            "signature": "0xf3fdb15a"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "supplyRatePerBlock",
+            "name": "isCToken",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xae9d70b0"
+            "signature": "0xfe9c44ae"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
+                    "internalType": "address",
                     "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "seizeTokens",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
+                },
+                {
+                    "internalType": "contract CTokenInterface",
+                    "name": "cTokenCollateral",
+                    "type": "address"
                 }
             ],
-            "name": "seize",
+            "name": "liquidateBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13467,19 +23812,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb2a02ff1"
+            "signature": "0xf5e3c462"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newPendingAdmin",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setPendingAdmin",
+            "name": "mint",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13487,66 +23834,75 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb71d1a0c"
+            "signature": "0xa0712d68"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "exchangeRateCurrent",
+            "name": "name",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xbd6d894d"
+            "signature": "0x06fdde03"
         },
         {
             "constant": true,
+            "inputs": [],
+            "name": "pendingAdmin",
+            "outputs": [
+                {
+                    "internalType": "address payable",
+                    "name": "",
+                    "type": "address"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x26782247"
+        },
+        {
+            "constant": false,
             "inputs": [
                 {
-                    "name": "account",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "getAccountSnapshot",
+            "name": "redeem",
             "outputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xc37f68e2"
+            "signature": "0xdb006a75"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrowAmount",
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "borrow",
+            "name": "redeemUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13554,19 +23910,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xc5ebeaec"
+            "signature": "0x852a12e3"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "redeemTokens",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "redeem",
+            "name": "repayBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13574,58 +23932,74 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xdb006a75"
+            "signature": "0x0e752702"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "spender",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "allowance",
+            "name": "repayBorrowBehalf",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xdd62ed3e"
+            "signature": "0x2608f818"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "_acceptAdmin",
+            "name": "reserveFactorMantissa",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xe9c714f2"
+            "signature": "0x173b9904"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newInterestRateModel",
+                    "internalType": "address",
+                    "name": "liquidator",
+                    "type": "address"
+                },
+                {
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setInterestRateModel",
+            "name": "seize",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13633,42 +24007,63 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf2b3abbd"
+            "signature": "0xb2a02ff1"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "interestRateModel",
+            "name": "supplyRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf3fdb15a"
+            "signature": "0xae9d70b0"
         },
         {
-            "constant": false,
-            "inputs": [
+            "constant": true,
+            "inputs": [],
+            "name": "symbol",
+            "outputs": [
                 {
-                    "name": "borrower",
-                    "type": "address"
-                },
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95d89b41"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalBorrows",
+            "outputs": [
                 {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
-                },
-                {
-                    "name": "cTokenCollateral",
-                    "type": "address"
                 }
             ],
-            "name": "liquidateBorrow",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x47bd3718"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "totalBorrowsCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13676,29 +24071,31 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf5e3c462"
+            "signature": "0x73acee98"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "admin",
+            "name": "totalReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf851a440"
+            "signature": "0x8f840ddd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowRatePerBlock",
+            "name": "totalSupply",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -13706,72 +24103,126 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf8f9da28"
+            "signature": "0x18160ddd"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newReserveFactorMantissa",
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "_setReserveFactor",
+            "name": "transfer",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa9059cbb"
+        },
+        {
+            "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",
-            "signature": "0xfca7820b"
+            "signature": "0x23b872dd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "isCToken",
+            "name": "underlying",
             "outputs": [
                 {
+                    "internalType": "address",
                     "name": "",
-                    "type": "bool"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xfe9c44ae"
-        },
+            "signature": "0x6f307dc3"
+        }
+    ],
+    "cWBTC": [
         {
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "underlying_",
                     "type": "address"
                 },
                 {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "comptroller_",
                     "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": "uint256"
+                    "type": "uint8"
+                },
+                {
+                    "internalType": "address payable",
+                    "name": "admin_",
+                    "type": "address"
                 }
             ],
             "payable": false,
@@ -13784,90 +24235,83 @@
             "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",
-            "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
+            "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "minter",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "mintAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "mintTokens",
-                    "type": "uint256"
-                }
-            ],
-            "name": "Mint",
-            "type": "event",
-            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "redeemer",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "redeemTokens",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "Redeem",
+            "name": "Approval",
             "type": "event",
-            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
         },
         {
             "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"
                 }
@@ -13881,59 +24325,57 @@
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "payer",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "error",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "accountBorrows",
+                    "internalType": "uint256",
+                    "name": "info",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "totalBorrows",
+                    "internalType": "uint256",
+                    "name": "detail",
                     "type": "uint256"
                 }
             ],
-            "name": "RepayBorrow",
+            "name": "Failure",
             "type": "event",
-            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
+            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
         },
         {
             "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": "cTokenCollateral",
                     "type": "address"
                 },
                 {
                     "indexed": false,
+                    "internalType": "uint256",
                     "name": "seizeTokens",
                     "type": "uint256"
                 }
@@ -13947,29 +24389,39 @@
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "oldPendingAdmin",
+                    "internalType": "address",
+                    "name": "minter",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "newPendingAdmin",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "mintTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewPendingAdmin",
+            "name": "Mint",
             "type": "event",
-            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
+                    "internalType": "address",
                     "name": "oldAdmin",
                     "type": "address"
                 },
                 {
                     "indexed": false,
+                    "internalType": "address",
                     "name": "newAdmin",
                     "type": "address"
                 }
@@ -13983,11 +24435,13 @@
             "inputs": [
                 {
                     "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
                     "name": "oldComptroller",
                     "type": "address"
                 },
                 {
                     "indexed": false,
+                    "internalType": "contract ComptrollerInterface",
                     "name": "newComptroller",
                     "type": "address"
                 }
@@ -14001,11 +24455,13 @@
             "inputs": [
                 {
                     "indexed": false,
+                    "internalType": "contract InterestRateModel",
                     "name": "oldInterestRateModel",
                     "type": "address"
                 },
                 {
                     "indexed": false,
+                    "internalType": "contract InterestRateModel",
                     "name": "newInterestRateModel",
                     "type": "address"
                 }
@@ -14019,11 +24475,33 @@
             "inputs": [
                 {
                     "indexed": false,
+                    "internalType": "address",
+                    "name": "oldPendingAdmin",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "newPendingAdmin",
+                    "type": "address"
+                }
+            ],
+            "name": "NewPendingAdmin",
+            "type": "event",
+            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
                     "name": "oldReserveFactorMantissa",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
+                    "internalType": "uint256",
                     "name": "newReserveFactorMantissa",
                     "type": "uint256"
                 }
@@ -14037,145 +24515,282 @@
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "admin",
+                    "internalType": "address",
+                    "name": "redeemer",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "reduceAmount",
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "newTotalReserves",
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "ReservesReduced",
+            "name": "Redeem",
             "type": "event",
-            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": false,
-                    "name": "error",
+                    "internalType": "address",
+                    "name": "payer",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "info",
+                    "internalType": "uint256",
+                    "name": "accountBorrows",
                     "type": "uint256"
                 },
                 {
                     "indexed": false,
-                    "name": "detail",
+                    "internalType": "uint256",
+                    "name": "totalBorrows",
                     "type": "uint256"
                 }
             ],
-            "name": "Failure",
+            "name": "RepayBorrow",
             "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "from",
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "benefactor",
                     "type": "address"
                 },
                 {
-                    "indexed": true,
-                    "name": "to",
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
+                    "type": "uint256"
+                }
+            ],
+            "name": "ReservesAdded",
+            "type": "event",
+            "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5"
+        },
+        {
+            "anonymous": false,
+            "inputs": [
+                {
+                    "indexed": false,
+                    "internalType": "address",
+                    "name": "admin",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "amount",
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "newTotalReserves",
                     "type": "uint256"
                 }
             ],
-            "name": "Transfer",
+            "name": "ReservesReduced",
             "type": "event",
-            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
                     "indexed": true,
-                    "name": "owner",
+                    "internalType": "address",
+                    "name": "from",
                     "type": "address"
                 },
                 {
                     "indexed": true,
-                    "name": "spender",
+                    "internalType": "address",
+                    "name": "to",
                     "type": "address"
                 },
                 {
                     "indexed": false,
+                    "internalType": "uint256",
                     "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "Approval",
+            "name": "Transfer",
             "type": "event",
-            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
-        }
-    ],
-    "cWBTC": [
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+        },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [],
-            "name": "name",
+            "name": "_acceptAdmin",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xe9c714f2"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "addAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_addReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x3e941010"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "reduceAmount",
+                    "type": "uint256"
+                }
+            ],
+            "name": "_reduceReserves",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x601a0bf1"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "newComptroller",
+                    "type": "address"
+                }
+            ],
+            "name": "_setComptroller",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x4576b5db"
+        },
+        {
+            "constant": false,
+            "inputs": [
+                {
+                    "internalType": "contract InterestRateModel",
+                    "name": "newInterestRateModel",
+                    "type": "address"
+                }
+            ],
+            "name": "_setInterestRateModel",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x06fdde03"
+            "signature": "0xf2b3abbd"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "spender",
+                    "internalType": "address payable",
+                    "name": "newPendingAdmin",
                     "type": "address"
-                },
-                {
-                    "name": "amount",
-                    "type": "uint256"
                 }
             ],
-            "name": "approve",
+            "name": "_setPendingAdmin",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x095ea7b3"
+            "signature": "0xb71d1a0c"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "newReserveFactorMantissa",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrow",
+            "name": "_setReserveFactor",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14183,14 +24798,15 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x0e752702"
+            "signature": "0xfca7820b"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "reserveFactorMantissa",
+            "name": "accrualBlockNumber",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14198,19 +24814,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x173b9904"
+            "signature": "0x6c540baf"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "name": "account",
-                    "type": "address"
-                }
-            ],
-            "name": "borrowBalanceCurrent",
+            "inputs": [],
+            "name": "accrueInterest",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14218,111 +24830,91 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x17bfdfbc"
+            "signature": "0xa6afed95"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "totalSupply",
+            "name": "admin",
             "outputs": [
                 {
+                    "internalType": "address payable",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x18160ddd"
+            "signature": "0xf851a440"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "exchangeRateStored",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x182df0f5"
-        },
-        {
-            "constant": false,
             "inputs": [
                 {
-                    "name": "src",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "name": "dst",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
-                },
-                {
-                    "name": "amount",
-                    "type": "uint256"
                 }
             ],
-            "name": "transferFrom",
+            "name": "allowance",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x23b872dd"
+            "signature": "0xdd62ed3e"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 },
                 {
-                    "name": "repayAmount",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "repayBorrowBehalf",
+            "name": "approve",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x2608f818"
+            "signature": "0x095ea7b3"
         },
         {
             "constant": true,
-            "inputs": [],
-            "name": "pendingAdmin",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x26782247"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "decimals",
+            "name": "balanceOf",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14330,12 +24922,13 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x313ce567"
+            "signature": "0x70a08231"
         },
         {
             "constant": false,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "owner",
                     "type": "address"
                 }
@@ -14343,6 +24936,7 @@
             "name": "balanceOfUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14352,32 +24946,19 @@
             "type": "function",
             "signature": "0x3af9e669"
         },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "getCash",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x3b1d21a2"
-        },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newComptroller",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "borrowAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setComptroller",
+            "name": "borrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14385,64 +24966,59 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x4576b5db"
+            "signature": "0xc5ebeaec"
         },
         {
-            "constant": true,
-            "inputs": [],
-            "name": "totalBorrows",
-            "outputs": [
+            "constant": false,
+            "inputs": [
                 {
-                    "name": "",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x47bd3718"
-        },
-        {
-            "constant": true,
-            "inputs": [],
-            "name": "comptroller",
+            "name": "borrowBalanceCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x5fe3b567"
+            "signature": "0x17bfdfbc"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [
                 {
-                    "name": "reduceAmount",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "account",
+                    "type": "address"
                 }
             ],
-            "name": "_reduceReserves",
+            "name": "borrowBalanceStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x601a0bf1"
+            "signature": "0x95dd9193"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "initialExchangeRateMantissa",
+            "name": "borrowIndex",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14450,14 +25026,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x675d972c"
+            "signature": "0xaa5af0fd"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "accrualBlockNumber",
+            "name": "borrowRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14465,14 +25042,15 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6c540baf"
+            "signature": "0xf8f9da28"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "underlying",
+            "name": "comptroller",
             "outputs": [
                 {
+                    "internalType": "contract ComptrollerInterface",
                     "name": "",
                     "type": "address"
                 }
@@ -14480,104 +25058,84 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x6f307dc3"
+            "signature": "0x5fe3b567"
         },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "owner",
-                    "type": "address"
-                }
-            ],
-            "name": "balanceOf",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0x70a08231"
-        },
-        {
-            "constant": false,
             "inputs": [],
-            "name": "totalBorrowsCurrent",
+            "name": "decimals",
             "outputs": [
                 {
+                    "internalType": "uint8",
                     "name": "",
-                    "type": "uint256"
+                    "type": "uint8"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0x73acee98"
+            "signature": "0x313ce567"
         },
         {
             "constant": false,
-            "inputs": [
-                {
-                    "name": "redeemAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "redeemUnderlying",
-            "outputs": [
-                {
-                    "name": "",
-                    "type": "uint256"
-                }
-            ],
-            "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "function",
-            "signature": "0x852a12e3"
-        },
-        {
-            "constant": true,
             "inputs": [],
-            "name": "totalReserves",
+            "name": "exchangeRateCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "view",
+            "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0x8f840ddd"
+            "signature": "0xbd6d894d"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "symbol",
+            "name": "exchangeRateStored",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "string"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95d89b41"
+            "signature": "0x182df0f5"
         },
         {
             "constant": true,
             "inputs": [
                 {
+                    "internalType": "address",
                     "name": "account",
                     "type": "address"
                 }
             ],
-            "name": "borrowBalanceStored",
+            "name": "getAccountSnapshot",
             "outputs": [
                 {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "",
+                    "type": "uint256"
+                },
+                {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14585,116 +25143,166 @@
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0x95dd9193"
+            "signature": "0xc37f68e2"
         },
         {
-            "constant": false,
-            "inputs": [
-                {
-                    "name": "mintAmount",
-                    "type": "uint256"
-                }
-            ],
-            "name": "mint",
+            "constant": true,
+            "inputs": [],
+            "name": "getCash",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xa0712d68"
+            "signature": "0x3b1d21a2"
         },
         {
             "constant": false,
-            "inputs": [],
-            "name": "accrueInterest",
-            "outputs": [
+            "inputs": [
                 {
-                    "name": "",
+                    "internalType": "address",
+                    "name": "underlying_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
+                    "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"
                 }
             ],
+            "name": "initialize",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa6afed95"
+            "signature": "0x1a31d465"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "dst",
+                    "internalType": "contract ComptrollerInterface",
+                    "name": "comptroller_",
                     "type": "address"
                 },
                 {
-                    "name": "amount",
+                    "internalType": "contract InterestRateModel",
+                    "name": "interestRateModel_",
+                    "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "initialExchangeRateMantissa_",
                     "type": "uint256"
-                }
-            ],
-            "name": "transfer",
-            "outputs": [
+                },
                 {
-                    "name": "",
-                    "type": "bool"
+                    "internalType": "string",
+                    "name": "name_",
+                    "type": "string"
+                },
+                {
+                    "internalType": "string",
+                    "name": "symbol_",
+                    "type": "string"
+                },
+                {
+                    "internalType": "uint8",
+                    "name": "decimals_",
+                    "type": "uint8"
                 }
             ],
+            "name": "initialize",
+            "outputs": [],
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xa9059cbb"
+            "signature": "0x99d8c1b4"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowIndex",
+            "name": "interestRateModel",
             "outputs": [
                 {
+                    "internalType": "contract InterestRateModel",
                     "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xaa5af0fd"
+            "signature": "0xf3fdb15a"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "supplyRatePerBlock",
+            "name": "isCToken",
             "outputs": [
                 {
+                    "internalType": "bool",
                     "name": "",
-                    "type": "uint256"
+                    "type": "bool"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xae9d70b0"
+            "signature": "0xfe9c44ae"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
+                    "internalType": "address",
                     "name": "borrower",
                     "type": "address"
                 },
                 {
-                    "name": "seizeTokens",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
+                },
+                {
+                    "internalType": "contract CTokenInterface",
+                    "name": "cTokenCollateral",
+                    "type": "address"
                 }
             ],
-            "name": "seize",
+            "name": "liquidateBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14702,19 +25310,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb2a02ff1"
+            "signature": "0xf5e3c462"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newPendingAdmin",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "mintAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setPendingAdmin",
+            "name": "mint",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14722,66 +25332,53 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xb71d1a0c"
+            "signature": "0xa0712d68"
         },
         {
-            "constant": false,
+            "constant": true,
             "inputs": [],
-            "name": "exchangeRateCurrent",
+            "name": "name",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
+            "stateMutability": "view",
             "type": "function",
-            "signature": "0xbd6d894d"
+            "signature": "0x06fdde03"
         },
         {
             "constant": true,
-            "inputs": [
-                {
-                    "name": "account",
-                    "type": "address"
-                }
-            ],
-            "name": "getAccountSnapshot",
+            "inputs": [],
+            "name": "pendingAdmin",
             "outputs": [
                 {
+                    "internalType": "address payable",
                     "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
-                },
-                {
-                    "name": "",
-                    "type": "uint256"
+                    "type": "address"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xc37f68e2"
+            "signature": "0x26782247"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrowAmount",
+                    "internalType": "uint256",
+                    "name": "redeemTokens",
                     "type": "uint256"
                 }
             ],
-            "name": "borrow",
+            "name": "redeem",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14789,19 +25386,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xc5ebeaec"
+            "signature": "0xdb006a75"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "redeemTokens",
+                    "internalType": "uint256",
+                    "name": "redeemAmount",
                     "type": "uint256"
                 }
             ],
-            "name": "redeem",
+            "name": "redeemUnderlying",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14809,38 +25408,21 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xdb006a75"
+            "signature": "0x852a12e3"
         },
         {
-            "constant": true,
+            "constant": false,
             "inputs": [
                 {
-                    "name": "owner",
-                    "type": "address"
-                },
-                {
-                    "name": "spender",
-                    "type": "address"
-                }
-            ],
-            "name": "allowance",
-            "outputs": [
-                {
-                    "name": "",
+                    "internalType": "uint256",
+                    "name": "repayAmount",
                     "type": "uint256"
                 }
             ],
-            "payable": false,
-            "stateMutability": "view",
-            "type": "function",
-            "signature": "0xdd62ed3e"
-        },
-        {
-            "constant": false,
-            "inputs": [],
-            "name": "_acceptAdmin",
+            "name": "repayBorrow",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14848,19 +25430,26 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xe9c714f2"
+            "signature": "0x0e752702"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "newInterestRateModel",
+                    "internalType": "address",
+                    "name": "borrower",
                     "type": "address"
+                },
+                {
+                    "internalType": "uint256",
+                    "name": "repayAmount",
+                    "type": "uint256"
                 }
             ],
-            "name": "_setInterestRateModel",
+            "name": "repayBorrowBehalf",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14868,42 +25457,47 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf2b3abbd"
+            "signature": "0x2608f818"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "interestRateModel",
+            "name": "reserveFactorMantissa",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf3fdb15a"
+            "signature": "0x173b9904"
         },
         {
             "constant": false,
             "inputs": [
                 {
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "liquidator",
                     "type": "address"
                 },
                 {
-                    "name": "repayAmount",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "borrower",
+                    "type": "address"
                 },
                 {
-                    "name": "cTokenCollateral",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "seizeTokens",
+                    "type": "uint256"
                 }
             ],
-            "name": "liquidateBorrow",
+            "name": "seize",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14911,49 +25505,63 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xf5e3c462"
+            "signature": "0xb2a02ff1"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "admin",
+            "name": "supplyRatePerBlock",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "address"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf851a440"
+            "signature": "0xae9d70b0"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "borrowRatePerBlock",
+            "name": "symbol",
             "outputs": [
                 {
+                    "internalType": "string",
                     "name": "",
-                    "type": "uint256"
+                    "type": "string"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xf8f9da28"
+            "signature": "0x95d89b41"
         },
         {
-            "constant": false,
-            "inputs": [
+            "constant": true,
+            "inputs": [],
+            "name": "totalBorrows",
+            "outputs": [
                 {
-                    "name": "newReserveFactorMantissa",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "_setReserveFactor",
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x47bd3718"
+        },
+        {
+            "constant": false,
+            "inputs": [],
+            "name": "totalBorrowsCurrent",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
                     "type": "uint256"
                 }
@@ -14961,403 +25569,367 @@
             "payable": false,
             "stateMutability": "nonpayable",
             "type": "function",
-            "signature": "0xfca7820b"
+            "signature": "0x73acee98"
         },
         {
             "constant": true,
             "inputs": [],
-            "name": "isCToken",
+            "name": "totalReserves",
             "outputs": [
                 {
+                    "internalType": "uint256",
                     "name": "",
-                    "type": "bool"
+                    "type": "uint256"
                 }
             ],
             "payable": false,
             "stateMutability": "view",
             "type": "function",
-            "signature": "0xfe9c44ae"
+            "signature": "0x8f840ddd"
         },
         {
-            "inputs": [
-                {
-                    "name": "underlying_",
-                    "type": "address"
-                },
-                {
-                    "name": "comptroller_",
-                    "type": "address"
-                },
-                {
-                    "name": "interestRateModel_",
-                    "type": "address"
-                },
-                {
-                    "name": "initialExchangeRateMantissa_",
-                    "type": "uint256"
-                },
-                {
-                    "name": "name_",
-                    "type": "string"
-                },
-                {
-                    "name": "symbol_",
-                    "type": "string"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "totalSupply",
+            "outputs": [
                 {
-                    "name": "decimals_",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
             "payable": false,
-            "stateMutability": "nonpayable",
-            "type": "constructor",
-            "signature": "constructor"
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x18160ddd"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "interestAccumulated",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrowIndex",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "totalBorrows",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "AccrueInterest",
-            "type": "event",
-            "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "minter",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "mintAmount",
-                    "type": "uint256"
-                },
+            "name": "transfer",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "mintTokens",
-                    "type": "uint256"
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
                 }
             ],
-            "name": "Mint",
-            "type": "event",
-            "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa9059cbb"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "redeemer",
+                    "internalType": "address",
+                    "name": "src",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "redeemAmount",
-                    "type": "uint256"
+                    "internalType": "address",
+                    "name": "dst",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "redeemTokens",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "Redeem",
-            "type": "event",
-            "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929"
-        },
-        {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrowAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "accountBorrows",
-                    "type": "uint256"
-                },
+            "name": "transferFrom",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "totalBorrows",
-                    "type": "uint256"
+                    "internalType": "bool",
+                    "name": "",
+                    "type": "bool"
                 }
             ],
-            "name": "Borrow",
-            "type": "event",
-            "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80"
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x23b872dd"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "payer",
-                    "type": "address"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "underlying",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "borrower",
+                    "internalType": "address",
+                    "name": "",
                     "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "repayAmount",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "accountBorrows",
-                    "type": "uint256"
-                },
-                {
-                    "indexed": false,
-                    "name": "totalBorrows",
-                    "type": "uint256"
                 }
             ],
-            "name": "RepayBorrow",
-            "type": "event",
-            "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1"
-        },
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x6f307dc3"
+        }
+    ],
+    "TBTC": [
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "liquidator",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "borrower",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "repayAmount",
-                    "type": "uint256"
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "owner",
+                    "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "cTokenCollateral",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 },
                 {
                     "indexed": false,
-                    "name": "seizeTokens",
+                    "internalType": "uint256",
+                    "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "LiquidateBorrow",
+            "name": "Approval",
             "type": "event",
-            "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52"
+            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
         },
         {
             "anonymous": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldPendingAdmin",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "from",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newPendingAdmin",
+                    "indexed": true,
+                    "internalType": "address",
+                    "name": "to",
                     "type": "address"
+                },
+                {
+                    "indexed": false,
+                    "internalType": "uint256",
+                    "name": "amount",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewPendingAdmin",
+            "name": "Transfer",
             "type": "event",
-            "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9"
+            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldAdmin",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newAdmin",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 }
             ],
-            "name": "NewAdmin",
-            "type": "event",
-            "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc"
+            "name": "allowance",
+            "outputs": [
+                {
+                    "internalType": "uint256",
+                    "name": "remaining",
+                    "type": "uint256"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0xdd62ed3e"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldComptroller",
+                    "internalType": "address",
+                    "name": "spender",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
-                    "name": "newComptroller",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "amount",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewComptroller",
-            "type": "event",
-            "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d"
+            "name": "approve",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "success",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x095ea7b3"
         },
         {
-            "anonymous": false,
+            "constant": true,
             "inputs": [
                 {
-                    "indexed": false,
-                    "name": "oldInterestRateModel",
+                    "internalType": "address",
+                    "name": "owner",
                     "type": "address"
-                },
+                }
+            ],
+            "name": "balanceOf",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newInterestRateModel",
-                    "type": "address"
+                    "internalType": "uint256",
+                    "name": "balance",
+                    "type": "uint256"
                 }
             ],
-            "name": "NewMarketInterestRateModel",
-            "type": "event",
-            "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x70a08231"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "oldReserveFactorMantissa",
-                    "type": "uint256"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "decimals",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newReserveFactorMantissa",
-                    "type": "uint256"
+                    "internalType": "uint8",
+                    "name": "",
+                    "type": "uint8"
                 }
             ],
-            "name": "NewReserveFactor",
-            "type": "event",
-            "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x313ce567"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "admin",
-                    "type": "address"
-                },
-                {
-                    "indexed": false,
-                    "name": "reduceAmount",
-                    "type": "uint256"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "name",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "newTotalReserves",
-                    "type": "uint256"
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
                 }
             ],
-            "name": "ReservesReduced",
-            "type": "event",
-            "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x06fdde03"
         },
         {
-            "anonymous": false,
-            "inputs": [
-                {
-                    "indexed": false,
-                    "name": "error",
-                    "type": "uint256"
-                },
+            "constant": true,
+            "inputs": [],
+            "name": "symbol",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "info",
-                    "type": "uint256"
-                },
+                    "internalType": "string",
+                    "name": "",
+                    "type": "string"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x95d89b41"
+        },
+        {
+            "constant": true,
+            "inputs": [],
+            "name": "totalSupply",
+            "outputs": [
                 {
-                    "indexed": false,
-                    "name": "detail",
+                    "internalType": "uint256",
+                    "name": "",
                     "type": "uint256"
                 }
             ],
-            "name": "Failure",
-            "type": "event",
-            "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0"
+            "payable": false,
+            "stateMutability": "view",
+            "type": "function",
+            "signature": "0x18160ddd"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "from",
-                    "type": "address"
-                },
-                {
-                    "indexed": true,
-                    "name": "to",
+                    "internalType": "address",
+                    "name": "dst",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
+                    "internalType": "uint256",
                     "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "Transfer",
-            "type": "event",
-            "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
+            "name": "transfer",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "success",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0xa9059cbb"
         },
         {
-            "anonymous": false,
+            "constant": false,
             "inputs": [
                 {
-                    "indexed": true,
-                    "name": "owner",
+                    "internalType": "address",
+                    "name": "src",
                     "type": "address"
                 },
                 {
-                    "indexed": true,
-                    "name": "spender",
+                    "internalType": "address",
+                    "name": "dst",
                     "type": "address"
                 },
                 {
-                    "indexed": false,
+                    "internalType": "uint256",
                     "name": "amount",
                     "type": "uint256"
                 }
             ],
-            "name": "Approval",
-            "type": "event",
-            "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
+            "name": "transferFrom",
+            "outputs": [
+                {
+                    "internalType": "bool",
+                    "name": "success",
+                    "type": "bool"
+                }
+            ],
+            "payable": false,
+            "stateMutability": "nonpayable",
+            "type": "function",
+            "signature": "0x23b872dd"
         }
     ],
     "USDC": [
diff --git a/networks/ropsten.json b/networks/ropsten.json
index d78b4acb2..175ec17be 100644
--- a/networks/ropsten.json
+++ b/networks/ropsten.json
@@ -1,60 +1,79 @@
 {
     "Contracts": {
         "ZRX": "0x19787bcF63E228a6669d905E90aF397DCA313CFC",
-        "cUSDC": "0x43a1363AFB28235720FCbDF0C2dAb7759091F7e0",
-        "PriceOracle": "0x5dEA9621f23e79003eCC294b4cc1e4c9362dFECc",
-        "PriceOracleProxy": "0xc7E20CF485b8E0Bcec3e2fCc23e3aD93b1b0cB39",
+        "cTBTC": "0xB40d042a65Dd413Ae0fd85bECF8D722e16bC46F1",
+        "cUSDC": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF",
+        "PriceOracle": "0x9B8FBeF10F8c2E5c88a522DB2Ba6A1929D568699",
+        "PriceOracleProxy": "0x6d61f13f1F68d00A8477d73091b882c26c910417",
         "Maximillion": "0xE77Ce01B692FcF66E2F632e518b9449D18D582d8",
-        "GovernorAlphaHarness": "0x95aACAf2342dcF58C08d221404f370c4b1BBD6E6",
-        "cDAI": "0x2B536482a01E620eE111747F8334B395a42A555E",
+        "GovernorAlpha": "0xc5BFEd3Bb38a3C4078d4f130F57Ca4c560551d45",
+        "cDAI": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF",
         "DAI": "0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd",
-        "StdComptroller": "0xe622DB19D5bf1F4e61Dd57FB11FE887100E5e59E",
-        "Unitroller": "0xb081cf57B1e422B3E627544Ec95992CBe8Eaf9cb",
-        "Comptroller": "0xb081cf57B1e422B3E627544Ec95992CBe8Eaf9cb",
-        "Comp": "0x2dBd55A346c1db79062f1B07e8BeB963534b9d7E",
-        "cBAT": "0x189CA88bE39C9c1B8c8dd437F5ff1DB1f584b14b",
-        "Base0bps_Slope2000bps": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa",
+        "StdComptroller": "0x70cBa46d2e933030E2f274AE58c951C800548AeF",
+        "Unitroller": "0xe03718b458a2E912141CF3fC8daB648362ee7463",
+        "Comptroller": "0xe03718b458a2E912141CF3fC8daB648362ee7463",
+        "Comp": "0x1Fe16De955718CFAb7A44605458AB023838C2793",
+        "cBAT": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1",
+        "Base0bps_Slope2000bps": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05",
         "BAT": "0x9636246bf34E688c6652Af544418B38eB51D2c43",
-        "cETH": "0x42a628e0c5F3767930097B34b08dCF77e78e4F2B",
-        "Base500bps_Slope1200bps": "0xbF7A7169562078c96f0eC1A8aFD6aE50f12e5A99",
+        "cErc20Delegate": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0",
+        "StdComptrollerG1": "0xA4d7E82dA57339020cbB3cA2B59D173AcDCa3504",
+        "cETH": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D",
+        "Base500bps_Slope1200bps": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C",
+        "cSAI": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D",
         "Timelock": "0x18646F4a178404b1c986390Ac808236D37229A11",
-        "Base200bps_Slope3000bps": "0x6e894660985207feb7cf89Faf048998c71E8EE89",
-        "cREP": "0xA3C2c1618214549281E1b15dee9D682C8aa0DC1C",
+        "Base200bps_Slope3000bps": "0x43479626A968a65230Db7fc6b375D5de003E367C",
+        "cREP": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809",
         "WBTC": "0xD83F707f003A1f0B1535028AB356FCE2667ab855",
+        "SAI": "0x6f964c8C8c31b89d553fFdB30ef8F667CfBd0B9F",
         "REP": "0x0A1e4D0B5c71B955c0a5993023fc48bA6E380496",
-        "cZRX": "0xDff375162cfE7D77473C1BEC4560dEDE974E138c",
-        "cWBTC": "0x06E728D7907C164649427D2ACFD4c81669D453Bf",
+        "cZRX": "0x3A728dD027AD6F76Cdea227d5Cf5ba7ce9390A3d",
+        "cWBTC": "0x4D15eE7DE1f86248c986f5AE7dCE855b1c1A8806",
+        "TBTC": "0x083f652051b9CdBf65735f98d83cc329725Aa957",
         "USDC": "0x8a9447df1FB47209D36204e6D56767a33bf20f9f"
     },
     "Blocks": {
         "ZRX": 5970747,
-        "cUSDC": 5970770,
-        "PriceOracle": 5970733,
-        "PriceOracleProxy": 5970796,
+        "cTBTC": 7308359,
+        "cUSDC": 7308350,
+        "PriceOracle": 7309390,
+        "PriceOracleProxy": 7309420,
         "Maximillion": 5970773,
-        "GovernorAlphaHarness": 7209023,
-        "cDAI": 5970763,
+        "GovernorAlpha": 7404122,
+        "cDAI": 7308357,
         "DAI": 5970751,
-        "StdComptroller": 5970737,
-        "Unitroller": 5970735,
-        "Comp": 7209021,
-        "cBAT": 5970761,
-        "Base0bps_Slope2000bps": 5970744,
+        "StdComptroller": 7308325,
+        "Unitroller": 7308316,
+        "Comp": 7404113,
+        "cBAT": 7308342,
+        "Base0bps_Slope2000bps": 7308334,
         "BAT": 5970749,
-        "cETH": 5970768,
-        "Base500bps_Slope1200bps": 5970743,
+        "cErc20Delegate": 7308354,
+        "StdComptrollerG1": 7308318,
+        "cETH": 7308348,
+        "Base500bps_Slope1200bps": 7308331,
+        "cSAI": 7308344,
         "Timelock": 7209019,
-        "Base200bps_Slope3000bps": 5970745,
-        "cREP": 5970764,
+        "Base200bps_Slope3000bps": 7308336,
+        "cREP": 7308346,
         "WBTC": 5970757,
+        "SAI": 7308338,
         "REP": 5970753,
-        "cZRX": 5970759,
-        "cWBTC": 5970772,
+        "cZRX": 7308340,
+        "cWBTC": 7308352,
         "USDC": 5970755
     },
     "PriceOracle": {
         "description": "Simple Price Oracle",
-        "address": "0x5dEA9621f23e79003eCC294b4cc1e4c9362dFECc"
+        "address": "0x9B8FBeF10F8c2E5c88a522DB2Ba6A1929D568699"
+    },
+    "PriceOracleProxy": {
+        "description": "Price Oracle Proxy",
+        "cETH": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D",
+        "cUSDC": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF",
+        "cSAI": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D",
+        "cDAI": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF",
+        "address": "0x6d61f13f1F68d00A8477d73091b882c26c910417"
     },
     "Maximillion": {
         "description": "Maximillion",
@@ -63,11 +82,16 @@
     },
     "Unitroller": {
         "description": "Unitroller",
-        "address": "0xb081cf57B1e422B3E627544Ec95992CBe8Eaf9cb"
+        "address": "0xe03718b458a2E912141CF3fC8daB648362ee7463"
     },
     "Comptroller": {
+        "StdComptrollerG1": {
+            "address": "0xA4d7E82dA57339020cbB3cA2B59D173AcDCa3504",
+            "contract": "ComptrollerG1",
+            "description": "StandardG1 Comptroller Impl"
+        },
         "StdComptroller": {
-            "address": "0xe622DB19D5bf1F4e61Dd57FB11FE887100E5e59E",
+            "address": "0x70cBa46d2e933030E2f274AE58c951C800548AeF",
             "contract": "Comptroller",
             "description": "Standard Comptroller Impl"
         }
@@ -77,13 +101,13 @@
         "symbol": "COMP",
         "name": "Compound Governance Token",
         "decimals": 18,
-        "address": "0x2dBd55A346c1db79062f1B07e8BeB963534b9d7E"
+        "address": "0x1Fe16De955718CFAb7A44605458AB023838C2793"
     },
     "Governor": {
-        "GovernorAlphaHarness": {
-            "name": "GovernorAlphaHarness",
-            "contract": "GovernorAlphaHarness",
-            "address": "0x95aACAf2342dcF58C08d221404f370c4b1BBD6E6"
+        "GovernorAlpha": {
+            "name": "GovernorAlpha",
+            "contract": "GovernorAlpha",
+            "address": "0xc5BFEd3Bb38a3C4078d4f130F57Ca4c560551d45"
         }
     },
     "Timelock": {
@@ -93,28 +117,33 @@
     },
     "Constructors": {
         "ZRX": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002307800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035a52580000000000000000000000000000000000000000000000000000000000",
-        "cUSDC": "0x0000000000000000000000008a9447df1fb47209d36204e6d56767a33bf20f9f000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb0000000000000000000000005592ec0cfb4dbc12d3ab100b257153436a1f0fea0000000000000000000000000000000000000000000000000000b5e620f4800000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016436f6d706f756e642055534420436f696e20f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000056355534443000000000000000000000000000000000000000000000000000000",
+        "cTBTC": "0x000000000000000000000000083f652051b9cdbf65735f98d83cc329725aa957000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee7463000000000000000000000000c04b0d3107736c32e19f1c62b2af67be61d63a05000000000000000000000000000000000000000006765c793fa10079d0000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726000000000000000000000000cec4a43ebb02f9b80916f1c718338169d6d5c1f000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000001f436f6d706f756e642054727573746c65737320426974636f696e20f09f9388000000000000000000000000000000000000000000000000000000000000000005635442544300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000",
+        "cUSDC": "0x0000000000000000000000008a9447df1fb47209d36204e6d56767a33bf20f9f000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee7463000000000000000000000000c04b0d3107736c32e19f1c62b2af67be61d63a050000000000000000000000000000000000000000000000000000b5e620f48000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000016436f6d706f756e642055534420436f696e20f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000056355534443000000000000000000000000000000000000000000000000000000",
         "PriceOracle": "0x",
-        "PriceOracleProxy": "0x000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb0000000000000000000000005dea9621f23e79003ecc294b4cc1e4c9362dfecc00000000000000000000000042a628e0c5f3767930097b34b08dcf77e78e4f2b",
+        "PriceOracleProxy": "0x000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee74630000000000000000000000009b8fbef10f8c2e5c88a522db2ba6a1929d5686990000000000000000000000001d70b01a2c3e3b2e56fcdcefe50d5c5d70109a5d00000000000000000000000020572e4c090f15667cf7378e16fad2ea0e2f3eff000000000000000000000000ccaf265e7492c0d9b7c2f0018bf6382ba7f0148d0000000000000000000000006ce27497a64fffb5517aa4aee908b1e7eb63b9ff",
         "Maximillion": "0x00000000000000000000000042a628e0c5f3767930097b34b08dcf77e78e4f2b",
-        "GovernorAlphaHarness": "0x00000000000000000000000018646f4a178404b1c986390ac808236d37229a110000000000000000000000002dbd55a346c1db79062f1b07e8beb963534b9d7e000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726",
-        "cDAI": "0x000000000000000000000000b5e5d0f8c0cba267cd3d7035d6adc8eba7df7cdd000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb000000000000000000000000bf7a7169562078c96f0ec1a8afd6ae50f12e5a99000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000011436f6d706f756e642044616920f09f938800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046344414900000000000000000000000000000000000000000000000000000000",
+        "GovernorAlpha": "0x00000000000000000000000018646f4a178404b1c986390ac808236d37229a110000000000000000000000001Fe16De955718CFAb7A44605458AB023838C2793000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726",
+        "cDAI": "0x000000000000000000000000b5e5d0f8c0cba267cd3d7035d6adc8eba7df7cdd000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee7463000000000000000000000000d87ba7a50b2e7e660f678a895e4b72e7cb4ccd9c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726000000000000000000000000cec4a43ebb02f9b80916f1c718338169d6d5c1f000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000021436f6d706f756e64204d756c7469436f6c6c61746572616c2044414920f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004634441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000",
         "DAI": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003446169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034441490000000000000000000000000000000000000000000000000000000000",
         "StdComptroller": "0x",
         "Unitroller": "0x",
         "Comp": "0x000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726",
-        "cBAT": "0x0000000000000000000000009636246bf34e688c6652af544418b38eb51d2c43000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb0000000000000000000000006e894660985207feb7cf89faf048998c71e8ee89000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000023436f6d706f756e6420426173696320417474656e74696f6e20546f6b656e20f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046342415400000000000000000000000000000000000000000000000000000000",
+        "cBAT": "0x0000000000000000000000009636246bf34e688c6652af544418b38eb51d2c43000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee746300000000000000000000000043479626a968a65230db7fc6b375d5de003e367c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000023436f6d706f756e6420426173696320417474656e74696f6e20546f6b656e20f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046342415400000000000000000000000000000000000000000000000000000000",
         "Base0bps_Slope2000bps": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb140000",
         "BAT": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000015426173696320417474656e74696f6e20546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000034241540000000000000000000000000000000000000000000000000000000000",
-        "cETH": "0x000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb0000000000000000000000005592ec0cfb4dbc12d3ab100b257153436a1f0fea000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420457468657220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046345544800000000000000000000000000000000000000000000000000000000",
+        "cErc20Delegate": "0x",
+        "StdComptrollerG1": "0x",
+        "cETH": "0x000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee7463000000000000000000000000c04b0d3107736c32e19f1c62b2af67be61d63a05000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420457468657220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046345544800000000000000000000000000000000000000000000000000000000",
         "Base500bps_Slope1200bps": "0x00000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000000001aa535d3d0c0000",
+        "cSAI": "0x0000000000000000000000006f964c8c8c31b89d553ffdb30ef8f667cfbd0b9f000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee7463000000000000000000000000d87ba7a50b2e7e660f678a895e4b72e7cb4ccd9c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000011436f6d706f756e642053414920f09f938800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046353414900000000000000000000000000000000000000000000000000000000",
         "Timelock": "0x000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000078",
         "Base200bps_Slope3000bps": "0x00000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000429d069189e0000",
-        "cREP": "0x0000000000000000000000000a1e4d0b5c71b955c0a5993023fc48ba6e380496000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb0000000000000000000000006e894660985207feb7cf89faf048998c71e8ee89000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420417567757220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000",
+        "cREP": "0x0000000000000000000000000a1e4d0b5c71b955c0a5993023fc48ba6e380496000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee746300000000000000000000000043479626a968a65230db7fc6b375d5de003e367c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420417567757220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000",
         "WBTC": "0x",
+        "SAI": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003536169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035341490000000000000000000000000000000000000000000000000000000000",
         "REP": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000005417567757200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035245500000000000000000000000000000000000000000000000000000000000",
-        "cZRX": "0x00000000000000000000000019787bcf63e228a6669d905e90af397dca313cfc000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb0000000000000000000000006e894660985207feb7cf89faf048998c71e8ee89000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010436f6d706f756e6420307820f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004635a525800000000000000000000000000000000000000000000000000000000",
-        "cWBTC": "0x000000000000000000000000d83f707f003a1f0b1535028ab356fce2667ab855000000000000000000000000b081cf57b1e422b3e627544ec95992cbe8eaf9cb0000000000000000000000006e894660985207feb7cf89faf048998c71e8ee8900000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000019436f6d706f756e6420577261707065642042544320f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000",
+        "cZRX": "0x00000000000000000000000019787bcf63e228a6669d905e90af397dca313cfc000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee746300000000000000000000000043479626a968a65230db7fc6b375d5de003e367c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000010436f6d706f756e6420307820f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004635a525800000000000000000000000000000000000000000000000000000000",
+        "cWBTC": "0x000000000000000000000000d83f707f003a1f0b1535028ab356fce2667ab855000000000000000000000000e03718b458a2e912141cf3fc8dab648362ee746300000000000000000000000043479626a968a65230db7fc6b375d5de003e367c00000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000019436f6d706f756e6420577261707065642042544320f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000",
         "USDC": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000855534420436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000"
     },
     "Tokens": {
@@ -126,6 +155,16 @@
             "contract": "FaucetToken",
             "address": "0x19787bcF63E228a6669d905E90aF397DCA313CFC"
         },
+        "cTBTC": {
+            "name": "Compound Trustless Bitcoin 📈",
+            "symbol": "cTBTC",
+            "decimals": 8,
+            "underlying": "0x083f652051b9CdBf65735f98d83cc329725Aa957",
+            "contract": "CErc20Delegator",
+            "initial_exchange_rate_mantissa": "2000000000000000000000000000",
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0xB40d042a65Dd413Ae0fd85bECF8D722e16bC46F1"
+        },
         "cUSDC": {
             "name": "Compound USD Coin 📈",
             "symbol": "cUSDC",
@@ -133,16 +172,18 @@
             "underlying": "0x8a9447df1FB47209D36204e6D56767a33bf20f9f",
             "contract": "CErc20",
             "initial_exchange_rate_mantissa": "200000000000000",
-            "address": "0x43a1363AFB28235720FCbDF0C2dAb7759091F7e0"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF"
         },
         "cDAI": {
-            "name": "Compound Dai 📈",
+            "name": "Compound MultiCollateral DAI 📈",
             "symbol": "cDAI",
             "decimals": 8,
             "underlying": "0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd",
-            "contract": "CErc20",
+            "contract": "CErc20Delegator",
             "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0x2B536482a01E620eE111747F8334B395a42A555E"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF"
         },
         "DAI": {
             "description": "Standard",
@@ -155,9 +196,9 @@
         "COMP": {
             "contract": "Comp",
             "symbol": "COMP",
-            "name": "Compound Governance Token",
+            "name": "Compound",
             "decimals": 18,
-            "address": "0x2dBd55A346c1db79062f1B07e8BeB963534b9d7E"
+            "address": "0x1Fe16De955718CFAb7A44605458AB023838C2793"
         },
         "cBAT": {
             "name": "Compound Basic Attention Token 📈",
@@ -166,7 +207,8 @@
             "underlying": "0x9636246bf34E688c6652Af544418B38eB51D2c43",
             "contract": "CErc20",
             "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0x189CA88bE39C9c1B8c8dd437F5ff1DB1f584b14b"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1"
         },
         "BAT": {
             "description": "NonStandard",
@@ -183,7 +225,18 @@
             "underlying": "",
             "contract": "CEther",
             "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0x42a628e0c5F3767930097B34b08dCF77e78e4F2B"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D"
+        },
+        "cSAI": {
+            "name": "Compound SAI 📈",
+            "symbol": "cSAI",
+            "decimals": 8,
+            "underlying": "0x6f964c8C8c31b89d553fFdB30ef8F667CfBd0B9F",
+            "contract": "CErc20",
+            "initial_exchange_rate_mantissa": "200000000000000000000000000",
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D"
         },
         "cREP": {
             "name": "Compound Augur 📈",
@@ -192,7 +245,8 @@
             "underlying": "0x0A1e4D0B5c71B955c0a5993023fc48bA6E380496",
             "contract": "CErc20",
             "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0xA3C2c1618214549281E1b15dee9D682C8aa0DC1C"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809"
         },
         "WBTC": {
             "description": "WBTC",
@@ -202,6 +256,14 @@
             "contract": "WBTCToken",
             "address": "0xD83F707f003A1f0B1535028AB356FCE2667ab855"
         },
+        "SAI": {
+            "description": "Standard",
+            "name": "Sai",
+            "symbol": "SAI",
+            "decimals": 18,
+            "contract": "FaucetToken",
+            "address": "0x6f964c8C8c31b89d553fFdB30ef8F667CfBd0B9F"
+        },
         "REP": {
             "description": "Standard",
             "name": "Augur",
@@ -217,7 +279,8 @@
             "underlying": "0x19787bcF63E228a6669d905E90aF397DCA313CFC",
             "contract": "CErc20",
             "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0xDff375162cfE7D77473C1BEC4560dEDE974E138c"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x3A728dD027AD6F76Cdea227d5Cf5ba7ce9390A3d"
         },
         "cWBTC": {
             "name": "Compound Wrapped BTC 📈",
@@ -226,7 +289,16 @@
             "underlying": "0xD83F707f003A1f0B1535028AB356FCE2667ab855",
             "contract": "CErc20",
             "initial_exchange_rate_mantissa": "20000000000000000",
-            "address": "0x06E728D7907C164649427D2ACFD4c81669D453Bf"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x4D15eE7DE1f86248c986f5AE7dCE855b1c1A8806"
+        },
+        "TBTC": {
+            "description": "Existing",
+            "decimals": 18,
+            "name": "Trustless Bitcoin",
+            "symbol": "TBTC",
+            "contract": "ExistingToken",
+            "address": "0x083f652051b9CdBf65735f98d83cc329725Aa957"
         },
         "USDC": {
             "description": "Standard",
@@ -237,15 +309,43 @@
             "address": "0x8a9447df1FB47209D36204e6D56767a33bf20f9f"
         }
     },
+    "CTokenDelegate": {
+        "cErc20Delegate": {
+            "address": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0",
+            "contract": "CErc20Delegate",
+            "description": "Standard CErc20 Delegate"
+        }
+    },
     "cTokens": {
-        "cZRX": {
-            "name": "Compound 0x 📈",
-            "symbol": "cZRX",
+        "cTBTC": {
+            "name": "Compound Trustless Bitcoin 📈",
+            "symbol": "cTBTC",
             "decimals": 8,
-            "underlying": "0x19787bcF63E228a6669d905E90aF397DCA313CFC",
+            "underlying": "0x083f652051b9CdBf65735f98d83cc329725Aa957",
+            "contract": "CErc20Delegator",
+            "initial_exchange_rate_mantissa": "2000000000000000000000000000",
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0xB40d042a65Dd413Ae0fd85bECF8D722e16bC46F1"
+        },
+        "cUSDC": {
+            "name": "Compound USD Coin 📈",
+            "symbol": "cUSDC",
+            "decimals": 8,
+            "underlying": "0x8a9447df1FB47209D36204e6D56767a33bf20f9f",
             "contract": "CErc20",
+            "initial_exchange_rate_mantissa": "200000000000000",
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF"
+        },
+        "cDAI": {
+            "name": "Compound MultiCollateral DAI 📈",
+            "symbol": "cDAI",
+            "decimals": 8,
+            "underlying": "0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd",
+            "contract": "CErc20Delegator",
             "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0xDff375162cfE7D77473C1BEC4560dEDE974E138c"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF"
         },
         "cBAT": {
             "name": "Compound Basic Attention Token 📈",
@@ -254,16 +354,28 @@
             "underlying": "0x9636246bf34E688c6652Af544418B38eB51D2c43",
             "contract": "CErc20",
             "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0x189CA88bE39C9c1B8c8dd437F5ff1DB1f584b14b"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1"
         },
-        "cDAI": {
-            "name": "Compound Dai 📈",
-            "symbol": "cDAI",
+        "cETH": {
+            "name": "Compound Ether 📈",
+            "symbol": "cETH",
             "decimals": 8,
-            "underlying": "0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd",
+            "underlying": "",
+            "contract": "CEther",
+            "initial_exchange_rate_mantissa": "200000000000000000000000000",
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D"
+        },
+        "cSAI": {
+            "name": "Compound SAI 📈",
+            "symbol": "cSAI",
+            "decimals": 8,
+            "underlying": "0x6f964c8C8c31b89d553fFdB30ef8F667CfBd0B9F",
             "contract": "CErc20",
             "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0x2B536482a01E620eE111747F8334B395a42A555E"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D"
         },
         "cREP": {
             "name": "Compound Augur 📈",
@@ -272,25 +384,18 @@
             "underlying": "0x0A1e4D0B5c71B955c0a5993023fc48bA6E380496",
             "contract": "CErc20",
             "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0xA3C2c1618214549281E1b15dee9D682C8aa0DC1C"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809"
         },
-        "cETH": {
-            "name": "Compound Ether 📈",
-            "symbol": "cETH",
-            "decimals": 8,
-            "underlying": "",
-            "contract": "CEther",
-            "initial_exchange_rate_mantissa": "200000000000000000000000000",
-            "address": "0x42a628e0c5F3767930097B34b08dCF77e78e4F2B"
-        },
-        "cUSDC": {
-            "name": "Compound USD Coin 📈",
-            "symbol": "cUSDC",
+        "cZRX": {
+            "name": "Compound 0x 📈",
+            "symbol": "cZRX",
             "decimals": 8,
-            "underlying": "0x8a9447df1FB47209D36204e6D56767a33bf20f9f",
+            "underlying": "0x19787bcF63E228a6669d905E90aF397DCA313CFC",
             "contract": "CErc20",
-            "initial_exchange_rate_mantissa": "200000000000000",
-            "address": "0x43a1363AFB28235720FCbDF0C2dAb7759091F7e0"
+            "initial_exchange_rate_mantissa": "200000000000000000000000000",
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x3A728dD027AD6F76Cdea227d5Cf5ba7ce9390A3d"
         },
         "cWBTC": {
             "name": "Compound Wrapped BTC 📈",
@@ -299,7 +404,8 @@
             "underlying": "0xD83F707f003A1f0B1535028AB356FCE2667ab855",
             "contract": "CErc20",
             "initial_exchange_rate_mantissa": "20000000000000000",
-            "address": "0x06E728D7907C164649427D2ACFD4c81669D453Bf"
+            "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726",
+            "address": "0x4D15eE7DE1f86248c986f5AE7dCE855b1c1A8806"
         }
     },
     "InterestRateModel": {
@@ -309,7 +415,7 @@
             "description": "WhitePaper baseRate=50000000000000000 multiplier=120000000000000000",
             "base": "50000000000000000",
             "slope": "120000000000000000",
-            "address": "0xbF7A7169562078c96f0eC1A8aFD6aE50f12e5A99"
+            "address": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C"
         },
         "Base0bps_Slope2000bps": {
             "name": "Base0bps_Slope2000bps",
@@ -317,7 +423,7 @@
             "description": "WhitePaper baseRate=0 multiplier=200000000000000000",
             "base": "0",
             "slope": "200000000000000000",
-            "address": "0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa"
+            "address": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05"
         },
         "Base200bps_Slope3000bps": {
             "name": "Base200bps_Slope3000bps",
@@ -325,7 +431,7 @@
             "description": "WhitePaper baseRate=20000000000000000 multiplier=300000000000000000",
             "base": "20000000000000000",
             "slope": "300000000000000000",
-            "address": "0x6e894660985207feb7cf89Faf048998c71E8EE89"
+            "address": "0x43479626A968a65230Db7fc6b375D5de003E367C"
         }
     }
 }
\ No newline at end of file
diff --git a/package.json b/package.json
index 85e3b4ec9..1fd0aab47 100644
--- a/package.json
+++ b/package.json
@@ -1,19 +1,19 @@
 {
-  "name": "compound-protocol",
+  "name": "compound-money-market",
   "version": "0.2.1",
-  "description": "The Compound Protocol",
+  "description": "The Compound Money Market",
   "main": "index.js",
   "scripts": {
     "compile": "./script/compile",
     "console": "if node -v | grep -E \"v(12|13)\" > /dev/null; then flags=\"-n --experimental-repl-await\"; fi; npx $flags saddle console",
     "coverage": "./script/coverage",
-    "deploy": "./scenario/script/repl -s ./script/scen/deploy.scen",
+    "deploy": "./scenario/script/repl -s ./scenario/scen/deploy.scen",
     "lint": "./script/lint",
     "repl": "./scenario/script/repl",
     "test": "./script/test",
     "test:prepare": "NO_RUN=true ./script/test"
   },
-  "repository": "git@github.com:compound-finance/compound-protocol.git",
+  "repository": "git@github.com:compound-finance/money-market.git",
   "author": "Compound Finance",
   "license": "UNLICENSED",
   "devDependencies": {
@@ -24,7 +24,7 @@
     "solparse": "^2.2.8"
   },
   "dependencies": {
-    "eth-saddle": "0.1.9"
+    "eth-saddle": "0.1.10"
   },
   "resolutions": {
     "scrypt.js": "https://registry.npmjs.org/@compound-finance/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz",
diff --git a/saddle.config.js b/saddle.config.js
index 346847240..eba1ef7db 100644
--- a/saddle.config.js
+++ b/saddle.config.js
@@ -10,6 +10,7 @@ module.exports = {
     shell: process.env['SADDLE_SHELL'] || '/bin/bash'
   },
   // build_dir: ".build",                                   // Directory to place built contracts
+  extra_build_files: ['remote/*.json'],                     // Additional build files to deep merge
   // coverage_dir: "coverage",                              // Directory to place coverage files
   // coverage_ignore: [],                                   // List of files to ignore for coverage
   contracts: process.env['SADDLE_CONTRACTS'] || "{contracts,contracts/**,tests/Contracts}/*.sol",
@@ -170,6 +171,17 @@ module.exports = {
     });
   },
   write_network_file: (network, value) => {
-    // Do nothing
+    const fs = require('fs');
+    const path = require('path');
+    const util = require('util');
+
+    const networkFile = path.join(process.cwd(), 'networks', `${network}.json`);
+    return util.promisify(fs.readFile)(networkFile).then((json) => {
+      return util.promisify(fs.writeFile)(networkFile,
+      JSON.stringify({
+        ...JSON.parse(json),
+        'Contracts': value
+      }, null, 4));
+    });
   }
 }
diff --git a/scenario/package.json b/scenario/package.json
index e55e2702b..bc0ec9776 100644
--- a/scenario/package.json
+++ b/scenario/package.json
@@ -1,12 +1,12 @@
 {
-  "name": "compound-scenarios",
+  "name": "compound-money-market",
   "version": "0.2.1",
-  "description": "The Compound Scenario Runner",
+  "description": "The Compound Money Market",
   "main": "index.js",
   "scripts": {
     "build": "./script/webpack"
   },
-  "repository": "git@github.com:compound-finance/compound-protocol.git",
+  "repository": "git@github.com:compound-finance/money-market.git",
   "author": "Compound Finance",
   "license": "UNLICENSED",
   "devDependencies": {
@@ -21,7 +21,7 @@
   },
   "dependencies": {
     "bignumber.js": "8.0.1",
-    "eth-saddle": "0.1.9",
+    "eth-saddle": "0.1.10",
     "ethers": "^4.0.0-beta.1",
     "immutable": "^4.0.0-rc.12",
     "truffle-flattener": "^1.3.0",
diff --git a/scenario/src/Builder/Erc20Builder.ts b/scenario/src/Builder/Erc20Builder.ts
index 6f80ca478..d6b139d57 100644
--- a/scenario/src/Builder/Erc20Builder.ts
+++ b/scenario/src/Builder/Erc20Builder.ts
@@ -45,7 +45,7 @@ export async function buildErc20(world: World, from: string, event: Event): Prom
     new Fetcher<{ symbol: StringV, address: AddressV, name: StringV }, TokenData>(`
         #### Existing
 
-        * "Existing symbol:<String> address:<Address>" - Wrap an existing Erc20 token
+        * "Existing symbol:<String> address:<Address> name:<String>" - Wrap an existing Erc20 token
           * E.g. "Erc20 Deploy Existing DAI 0x123...
       `,
       "Existing",
@@ -56,7 +56,7 @@ export async function buildErc20(world: World, from: string, event: Event): Prom
       ],
       async (world, { symbol, name, address }) => {
         const existingToken = await ExistingToken.at<Erc20>(world, address.val);
-                                                                   const tokenName = name.val === undefined ? symbol.val : name.val;
+        const tokenName = name.val === undefined ? symbol.val : name.val;
         const decimals = await existingToken.methods.decimals().call();
 
         return {
diff --git a/scenario/src/Contract/PriceOracleProxy.ts b/scenario/src/Contract/PriceOracleProxy.ts
index 155c06a60..7d8323c5d 100644
--- a/scenario/src/Contract/PriceOracleProxy.ts
+++ b/scenario/src/Contract/PriceOracleProxy.ts
@@ -3,6 +3,7 @@ import {Callable, Sendable} from '../Invokation';
 
 interface PriceOracleProxyMethods {
   getUnderlyingPrice(asset: string): Callable<number>
+  v1PriceOracle(): Callable<string>;
 }
 
 export interface PriceOracleProxy extends Contract {
diff --git a/scenario/src/Value/CTokenValue.ts b/scenario/src/Value/CTokenValue.ts
index c246a57a5..24a7008f4 100644
--- a/scenario/src/Value/CTokenValue.ts
+++ b/scenario/src/Value/CTokenValue.ts
@@ -3,7 +3,6 @@ import { World } from '../World';
 import { CToken } from '../Contract/CToken';
 import { CErc20Delegator } from '../Contract/CErc20Delegator';
 import { Erc20 } from '../Contract/Erc20';
-import { InterestRateModel } from '../Contract/InterestRateModel';
 import {
   getAddressV,
   getCoreValue,
@@ -43,6 +42,10 @@ export async function getCErc20DelegatorV(world: World, event: Event): Promise<C
   return getWorldContractByAddress<CErc20Delegator>(world, address.val);
 }
 
+async function getInterestRateModel(world: World, cToken: CToken): Promise<AddressV> {
+  return new AddressV(await cToken.methods.interestRateModel().call());
+}
+
 async function cTokenAddress(world: World, cToken: CToken): Promise<AddressV> {
   return new AddressV(cToken._address);
 }
@@ -123,6 +126,20 @@ export function cTokenFetchers() {
       { namePos: 1 }
     ),
 
+    new Fetcher<{ cToken: CToken }, AddressV>(`
+        #### InterestRateModel
+
+        * "CToken <CToken> InterestRateModel" - Returns the interest rate model of CToken contract
+          * E.g. "CToken cZRX InterestRateModel" - Returns cZRX's interest rate model
+      `,
+      "InterestRateModel",
+      [
+        new Arg("cToken", getCTokenV)
+      ],
+      (world, { cToken }) => getInterestRateModel(world, cToken),
+      { namePos: 1 }
+    ),
+
     new Fetcher<{ cToken: CToken }, AddressV>(`
         #### Admin
 
diff --git a/scenario/src/Value/PriceOracleProxyValue.ts b/scenario/src/Value/PriceOracleProxyValue.ts
index 2eabec18e..cb1143806 100644
--- a/scenario/src/Value/PriceOracleProxyValue.ts
+++ b/scenario/src/Value/PriceOracleProxyValue.ts
@@ -15,12 +15,27 @@ export async function getPriceOracleProxyAddress(world: World, priceOracleProxy:
   return new AddressV(priceOracleProxy._address);
 }
 
+export async function getV1PriceOracle(world: World, priceOracleProxy: PriceOracleProxy): Promise<AddressV> {
+  return new AddressV(await priceOracleProxy.methods.v1PriceOracle().call());
+}
+
 async function getPrice(world: World, priceOracleProxy: PriceOracleProxy, asset: string): Promise<NumberV> {
   return new NumberV(await priceOracleProxy.methods.getUnderlyingPrice(asset).call());
 }
 
 export function priceOracleProxyFetchers() {
   return [
+    new Fetcher<{priceOracleProxy: PriceOracleProxy}, AddressV>(`
+        #### V1PriceOracle
+
+        * "V1PriceOracle" - Gets the address of the v1 Price
+      `,
+      "V1PriceOracle",
+      [
+        new Arg("priceOracleProxy", getPriceOracleProxy, {implicit: true})
+      ],
+      (world, {priceOracleProxy}) => getV1PriceOracle(world, priceOracleProxy)
+    ),
     new Fetcher<{priceOracleProxy: PriceOracleProxy}, AddressV>(`
         #### Address
 
diff --git a/scenario/src/Value/TimelockValue.ts b/scenario/src/Value/TimelockValue.ts
index c80bc6f67..b4046bfb8 100644
--- a/scenario/src/Value/TimelockValue.ts
+++ b/scenario/src/Value/TimelockValue.ts
@@ -19,10 +19,6 @@ async function getPendingAdmin(world: World, timelock: Timelock): Promise<Addres
   return new AddressV(await timelock.methods.pendingAdmin().call());
 }
 
-async function getBlockTimestamp(world: World, timelock: Timelock): Promise<NumberV> {
-  return new NumberV(await timelock.methods.blockTimestamp().call());
-}
-
 async function getDelay(world: World, timelock: Timelock): Promise<NumberV> {
   return new NumberV(await timelock.methods.delay().call());
 }
@@ -63,16 +59,6 @@ export function timelockFetchers() {
       [new Arg('timelock', getTimelock, { implicit: true })],
       (world, { timelock }) => getPendingAdmin(world, timelock)
     ),
-    new Fetcher<{ timelock: Timelock }, NumberV>(
-      `
-        #### BlockTimestamp
-
-        * "BlockTimestamp" - Gets the blockTimestamp of the Timelock
-      `,
-      'BlockTimestamp',
-      [new Arg('timelock', getTimelock, { implicit: true })],
-      (world, { timelock }) => getBlockTimestamp(world, timelock)
-    ),
     new Fetcher<{ timelock: Timelock }, NumberV>(
       `
         #### Delay
diff --git a/scenario/yarn.lock b/scenario/yarn.lock
index 6de1ff3c1..f7aa9b4f3 100644
--- a/scenario/yarn.lock
+++ b/scenario/yarn.lock
@@ -3916,10 +3916,10 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2:
     json-rpc-random-id "^1.0.0"
     xtend "^4.0.1"
 
-eth-saddle@0.1.9:
-  version "0.1.9"
-  resolved "https://registry.yarnpkg.com/eth-saddle/-/eth-saddle-0.1.9.tgz#8d2754528eb5d15b0b0ed83e41550a5bba12e32d"
-  integrity sha512-XjiaBsdhpJ6bjVxzur3yOx3XYfOVmWW4e5+7EirCcjYO0hnFcjpDOD02wE5y0ss1bNj9XB9TYVQL6BDoZw+DSQ==
+eth-saddle@0.1.10:
+  version "0.1.10"
+  resolved "https://registry.yarnpkg.com/eth-saddle/-/eth-saddle-0.1.10.tgz#b51cb72029d1505b101f4bd0ff8dabccde1d9fd9"
+  integrity sha512-VGhIzXv0M4GpQsW5EVj734AZmn7TNYCrqvK8LIq9ozMI/xGHIxxp/Mt0TZwdxQPyrJpCLHeOKcoghqacKwD2Lw==
   dependencies:
     "@0x/sol-tracing-utils" "^7.0.3"
     "@0x/subproviders" "^6.0.0"
diff --git a/spec/certora/Comp/transfer.cvl b/spec/certora/Comp/transfer.cvl
index 9c8b56694..0cb38fd95 100644
--- a/spec/certora/Comp/transfer.cvl
+++ b/spec/certora/Comp/transfer.cvl
@@ -3,7 +3,6 @@ transferDelegates(address src, address dst, uint amount) {
     env e1;
     require e1.block.number > e0.block.number;
 
-    // XXX why sinvoke everywhere? should only need on transfer?
     address srcRep = sinvoke delegates(e0, src);
     address dstRep = sinvoke delegates(e0, dst);
 
@@ -14,9 +13,9 @@ transferDelegates(address src, address dst, uint amount) {
     uint dstVotesPrior = sinvoke getCurrentVotes(e0, dstRep);
 
     // Bound the number of checkpoints to prevent solver timeout / unwinding assertion violation
-    uint nCheckpoints;
-    require nCheckpoints == 0; // XXX
-    require sinvoke numCheckpoints(e0, srcRep) == nCheckpoints && sinvoke numCheckpoints(e0, dstRep) == nCheckpoints;
+    uint32 nCheckpoints;
+    require nCheckpoints == 1; // XXX
+    require invoke numCheckpoints(e0, srcRep) == nCheckpoints && invoke numCheckpoints(e0, dstRep) == nCheckpoints;
 
     // Ensure the checkpoints are sane
     require sinvoke certoraOrdered(e0, src);
diff --git a/spec/certora/Governor/state.cvl b/spec/certora/Governor/state.cvl
new file mode 100644
index 000000000..59417e194
--- /dev/null
+++ b/spec/certora/Governor/state.cvl
@@ -0,0 +1,118 @@
+validStatesAndTransitions() {
+    // Possible states
+    uint PENDING = 0;
+    uint ACTIVE = 1;
+    uint CANCELED = 2;
+    uint DEFEATED = 3;
+    uint SUCCEEDED = 4;
+    uint QUEUED = 5;
+    uint EXPIRED = 6;
+    uint EXECUTED = 7;
+
+    env e0;
+    env e1;
+    require e1.block.number == e0.block.number + 1;
+    require e1.block.timestamp > e0.block.timestamp;
+    require e1.block.timestamp - e0.block.timestamp < sinvoke certoraTimelockGracePeriod(e0);
+    require sinvoke certoraTimelockDelay(e0) > 0;
+
+    // XXX cannot propose
+    /* uint proposalId = sinvoke certoraPropose(e0); */
+    /* require invoke certoraProposalLength(e0, proposalId) <= 5; */
+    uint proposalId;
+    uint nProposals = sinvoke proposalCount(e0);
+    require proposalId < nProposals;
+
+    // Ensure the executed flag is not (arbitrarily) set if eta has not been set yet
+    require sinvoke certoraProposalEta(e0, proposalId) == 0 => !sinvoke certoraProposalExecuted(e0, proposalId);
+
+    uint startBlock = sinvoke certoraProposalStart(e0, proposalId);
+    uint endBlock = sinvoke certoraProposalEnd(e0, proposalId);
+    uint stateNow = sinvoke certoraProposalState(e0, proposalId);
+    require startBlock < endBlock; // i.e. votingPeriod > 0
+
+    // Do something
+    method fun1; calldataarg arg1;
+    invoke fun1(e0, arg1);
+
+    // Do something else
+    // XXX takes days to run, but catches violations in queue-execute
+    //  but also thinks timelock delay = 0 according to output report
+    /* method fun2; calldataarg arg2; */
+    /* invoke fun2(e0, arg2); */
+
+    uint startBlockNext = sinvoke certoraProposalStart(e1, proposalId);
+    uint endBlockNext = sinvoke certoraProposalEnd(e1, proposalId);
+    uint stateNext = sinvoke certoraProposalState(e1, proposalId);
+
+    assert startBlockNext == startBlock, "Start block may not change";
+    assert endBlockNext == endBlock, "End block may not change";
+
+    // Possibilities based on time
+
+    assert (e0.block.number <= startBlock) => (
+        stateNow == CANCELED ||
+        stateNow == PENDING
+     ), "Prior to voting, may only be pending or canceled";
+
+    assert (e0.block.number > startBlock && e0.block.number <= endBlock) => (
+        stateNow == CANCELED ||
+        stateNow == ACTIVE
+     ), "During voting, may only be active or canceled";
+
+    assert (e0.block.number > endBlock) => (
+        stateNow == CANCELED ||
+        stateNow == DEFEATED ||
+        stateNow == SUCCEEDED ||
+        stateNow == QUEUED ||
+        stateNow == EXPIRED ||
+        stateNow == EXECUTED
+     ), "After voting, must be in a viable state";
+
+    /* // Allowed transitions */
+
+    assert (stateNow == PENDING) => (
+        (stateNext == CANCELED) ||
+        (stateNext == ACTIVE && e1.block.number > startBlock) ||
+        (stateNext == PENDING)
+     ), "From pending, must either become canceled, active, or remain pending";
+
+    assert (stateNow == ACTIVE) => (
+        (stateNext == CANCELED) ||
+        ((
+         stateNext == DEFEATED ||
+         stateNext == SUCCEEDED ||
+         stateNext == QUEUED ||
+         stateNext == EXPIRED ||
+         stateNext == EXECUTED
+        ) && e1.block.number > endBlock) ||
+        (stateNext == ACTIVE)
+     ), "From active, must either become canceled, a viable next statem or remain active";
+
+    assert (stateNow == CANCELED) => (stateNext == CANCELED), "Once canceled, always canceled";
+
+    assert (stateNow == DEFEATED) => (
+        stateNext == CANCELED ||
+        stateNext == DEFEATED
+     ), "From defeated, must either become canceled, or remain defeated";
+
+    assert (stateNow == SUCCEEDED) => (
+        stateNext == CANCELED ||
+        stateNext == QUEUED ||
+        stateNext == SUCCEEDED
+     ), "From succeeded, must either become canceled, queued, or remain succeeded";
+
+    assert (stateNow == QUEUED) => (
+        stateNext == CANCELED ||
+        stateNext == EXPIRED ||
+        stateNext == EXECUTED ||
+        stateNext == QUEUED
+     ), "From queued, must either become canceled, expired, executed, or remain queued";
+
+    assert (stateNow == EXPIRED) => (
+        stateNext == CANCELED ||
+        stateNext == EXPIRED
+     ), "From expired, must either become canceled, or remain expired";
+
+    assert (stateNow == EXECUTED) => (stateNext == EXECUTED), "Once executed, always executed";
+}
diff --git a/spec/certora/Governor/votes.cvl b/spec/certora/Governor/votes.cvl
new file mode 100644
index 000000000..937ccc578
--- /dev/null
+++ b/spec/certora/Governor/votes.cvl
@@ -0,0 +1,43 @@
+voteOnce(uint proposalId, bool support) {
+    env e0;
+    env e1;
+    require e0.msg.sender == e1.msg.sender;
+
+    uint nProposals = sinvoke proposalCount(e0);
+    require proposalId < nProposals;
+
+    invoke castVote(e0, proposalId, support);
+    bool firstVoteReverted = lastReverted;
+
+    invoke castVote(e1, proposalId, support);
+    bool secondVoteReverted = lastReverted;
+
+    assert !firstVoteReverted => secondVoteReverted, "Second vote succeeded after first";
+}
+
+votesSum(uint proposalId, bool support, address voterA, address voterB) {
+    env e0;
+    env e1;
+    require e0.msg.sender == voterA;
+    require e1.msg.sender == voterB;
+
+    uint nProposals = sinvoke proposalCount(e0);
+    require proposalId < nProposals;
+
+    uint preVotesFor = sinvoke certoraProposalVotesFor(e0, proposalId);
+    uint preVotesAgainst = sinvoke certoraProposalVotesAgainst(e0, proposalId);
+
+    sinvoke castVote(e0, proposalId, support);
+    sinvoke castVote(e1, proposalId, support);
+
+    uint postVotesFor = sinvoke certoraProposalVotesFor(e1, proposalId);
+    uint postVotesAgainst = sinvoke certoraProposalVotesAgainst(e1, proposalId);
+
+    uint voterAVotes = sinvoke certoraVoterVotes(e1, proposalId, voterA);
+    uint voterBVotes = sinvoke certoraVoterVotes(e1, proposalId, voterB);
+
+    // XXX violates?
+    assert postVotesFor >= preVotesFor, "Cannot reduce votes for";
+    assert postVotesAgainst >= preVotesAgainst, "Cannot reduce votes against";
+    assert postVotesFor - preVotesFor + postVotesAgainst - preVotesAgainst == voterAVotes + voterBVotes, "Delta votes equals voter votes";
+}
diff --git a/spec/certora/contracts/CDaiDelegateCertora.sol b/spec/certora/contracts/CDaiDelegateCertora.sol
index 2205608ee..6a8c2b977 100644
--- a/spec/certora/contracts/CDaiDelegateCertora.sol
+++ b/spec/certora/contracts/CDaiDelegateCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/CDaiDelegate.sol";
 
diff --git a/spec/certora/contracts/CErc20DelegateCertora.sol b/spec/certora/contracts/CErc20DelegateCertora.sol
index 1129807a5..ee3ec3ec9 100644
--- a/spec/certora/contracts/CErc20DelegateCertora.sol
+++ b/spec/certora/contracts/CErc20DelegateCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/CErc20Delegate.sol";
 import "../../../contracts/EIP20Interface.sol";
diff --git a/spec/certora/contracts/CErc20DelegatorCertora.sol b/spec/certora/contracts/CErc20DelegatorCertora.sol
index c530235b2..87394538c 100644
--- a/spec/certora/contracts/CErc20DelegatorCertora.sol
+++ b/spec/certora/contracts/CErc20DelegatorCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/CErc20Delegator.sol";
 import "../../../contracts/EIP20Interface.sol";
diff --git a/spec/certora/contracts/CErc20ImmutableCertora.sol b/spec/certora/contracts/CErc20ImmutableCertora.sol
index ba4eac4b5..1b345086f 100644
--- a/spec/certora/contracts/CErc20ImmutableCertora.sol
+++ b/spec/certora/contracts/CErc20ImmutableCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/CErc20Immutable.sol";
 import "../../../contracts/EIP20Interface.sol";
diff --git a/spec/certora/contracts/CEtherCertora.sol b/spec/certora/contracts/CEtherCertora.sol
index 5f494d874..6ac66c429 100644
--- a/spec/certora/contracts/CEtherCertora.sol
+++ b/spec/certora/contracts/CEtherCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/CEther.sol";
 
diff --git a/spec/certora/contracts/CTokenCollateral.sol b/spec/certora/contracts/CTokenCollateral.sol
index 3844a5324..c36105432 100644
--- a/spec/certora/contracts/CTokenCollateral.sol
+++ b/spec/certora/contracts/CTokenCollateral.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/CErc20Immutable.sol";
 import "../../../contracts/EIP20Interface.sol";
diff --git a/spec/certora/contracts/CompCertora.sol b/spec/certora/contracts/CompCertora.sol
index e22ee9a5e..487647607 100644
--- a/spec/certora/contracts/CompCertora.sol
+++ b/spec/certora/contracts/CompCertora.sol
@@ -1,11 +1,11 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/Governance/Comp.sol";
 
 contract CompCertora is Comp {
     constructor(address grantor) Comp(grantor) public {}
 
-    function certoraOrdered(address account) external returns (bool) {
+    function certoraOrdered(address account) external view returns (bool) {
         uint32 nCheckpoints = numCheckpoints[account];
         for (uint32 i = 1; i < nCheckpoints; i++) {
             if (checkpoints[account][i - 1].fromBlock >= checkpoints[account][i].fromBlock) {
@@ -13,23 +13,15 @@ contract CompCertora is Comp {
             }
         }
 
-        Checkpoint storage last = checkpoints[account][nCheckpoints - 1];
-        if (nCheckpoints == 0) {
-            // we rely on 0 initialization when there are no checkpoints
-            if (last.fromBlock != 0 || last.votes != 0) {
-                return false;
-            }
-        } else {
-            // otherwise make sure the last checkpoint is not past the current block
-            if (checkpoints[account][nCheckpoints - 1].fromBlock > block.number) {
-                return false;
-            }
+        // make sure the checkpoints are also all before the current block
+        if (nCheckpoints > 0 && checkpoints[account][nCheckpoints - 1].fromBlock > block.number) {
+            return false;
         }
 
         return true;
     }
 
-    function certoraScan(address account, uint blockNumber) external returns (uint) {
+    function certoraScan(address account, uint blockNumber) external view returns (uint) {
         // find most recent checkpoint from before blockNumber
         for (uint32 i = numCheckpoints[account]; i != 0; i--) {
             Checkpoint memory cp = checkpoints[account][i-1];
diff --git a/spec/certora/contracts/ComptrollerCertora.sol b/spec/certora/contracts/ComptrollerCertora.sol
index 61b7669b0..5f78d1691 100644
--- a/spec/certora/contracts/ComptrollerCertora.sol
+++ b/spec/certora/contracts/ComptrollerCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/Comptroller.sol";
 
diff --git a/spec/certora/contracts/GovernorAlphaCertora.sol b/spec/certora/contracts/GovernorAlphaCertora.sol
index 438569bbb..27e59c686 100644
--- a/spec/certora/contracts/GovernorAlphaCertora.sol
+++ b/spec/certora/contracts/GovernorAlphaCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 pragma experimental ABIEncoderV2;
 
 import "../../../contracts/Governance/GovernorAlpha.sol";
@@ -8,10 +8,14 @@ contract GovernorAlphaCertora is GovernorAlpha {
 
     constructor(address timelock_, address comp_, address guardian_) GovernorAlpha(timelock_, comp_, guardian_) public {}
 
-    function certoraPropose() public returns (uint) {
-        // XXX certora can't compile Gov yet (string[])
-        return propose(proposal.targets, proposal.values, proposal.signatures, proposal.calldatas, "Motion to do something");
-    }
+    // XXX breaks solver
+    /* function certoraPropose() public returns (uint) { */
+    /*     return propose(proposal.targets, proposal.values, proposal.signatures, proposal.calldatas, "Motion to do something"); */
+    /* } */
+
+    /* function certoraProposalLength(uint proposalId) public returns (uint) { */
+    /*     return proposals[proposalId].targets.length; */
+    /* } */
 
     function certoraProposalStart(uint proposalId) public returns (uint) {
         return proposals[proposalId].startBlock;
@@ -21,7 +25,35 @@ contract GovernorAlphaCertora is GovernorAlpha {
         return proposals[proposalId].endBlock;
     }
 
+    function certoraProposalEta(uint proposalId) public returns (uint) {
+        return proposals[proposalId].eta;
+    }
+
+    function certoraProposalExecuted(uint proposalId) public returns (bool) {
+        return proposals[proposalId].executed;
+    }
+
     function certoraProposalState(uint proposalId) public returns (uint) {
         return uint(state(proposalId));
     }
+
+    function certoraProposalVotesFor(uint proposalId) public returns (uint) {
+        return proposals[proposalId].forVotes;
+    }
+
+    function certoraProposalVotesAgainst(uint proposalId) public returns (uint) {
+        return proposals[proposalId].againstVotes;
+    }
+
+    function certoraVoterVotes(uint proposalId, address voter) public returns (uint) {
+        return proposals[proposalId].receipts[voter].votes;
+    }
+
+    function certoraTimelockDelay() public returns (uint) {
+        return timelock.delay();
+    }
+
+    function certoraTimelockGracePeriod() public returns (uint) {
+        return timelock.GRACE_PERIOD();
+    }
 }
diff --git a/spec/certora/contracts/InterestRateModelModel.sol b/spec/certora/contracts/InterestRateModelModel.sol
index 907fc5cf9..85b044961 100644
--- a/spec/certora/contracts/InterestRateModelModel.sol
+++ b/spec/certora/contracts/InterestRateModelModel.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/Exponential.sol";
 import "../../../contracts/InterestRateModel.sol";
diff --git a/spec/certora/contracts/MathCertora.sol b/spec/certora/contracts/MathCertora.sol
index 370579b7a..5e853739e 100644
--- a/spec/certora/contracts/MathCertora.sol
+++ b/spec/certora/contracts/MathCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 contract MathCertora {
 
diff --git a/spec/certora/contracts/MaximillionCertora.sol b/spec/certora/contracts/MaximillionCertora.sol
index 226b3f305..c178836b0 100644
--- a/spec/certora/contracts/MaximillionCertora.sol
+++ b/spec/certora/contracts/MaximillionCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/Maximillion.sol";
 
diff --git a/spec/certora/contracts/PriceOracleModel.sol b/spec/certora/contracts/PriceOracleModel.sol
index d6ef5f5fe..030c73e69 100644
--- a/spec/certora/contracts/PriceOracleModel.sol
+++ b/spec/certora/contracts/PriceOracleModel.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/PriceOracle.sol";
 
diff --git a/spec/certora/contracts/SimulationInterface.sol b/spec/certora/contracts/SimulationInterface.sol
index 9e309612a..3a7f61b4a 100644
--- a/spec/certora/contracts/SimulationInterface.sol
+++ b/spec/certora/contracts/SimulationInterface.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 interface SimulationInterface {
     function dummy() external;
diff --git a/spec/certora/contracts/TimelockCertora.sol b/spec/certora/contracts/TimelockCertora.sol
index e2ac77b17..f434717bf 100644
--- a/spec/certora/contracts/TimelockCertora.sol
+++ b/spec/certora/contracts/TimelockCertora.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/Timelock.sol";
 
diff --git a/spec/certora/contracts/UnderlyingModelNonStandard.sol b/spec/certora/contracts/UnderlyingModelNonStandard.sol
index b72ee1206..4711d9ba6 100644
--- a/spec/certora/contracts/UnderlyingModelNonStandard.sol
+++ b/spec/certora/contracts/UnderlyingModelNonStandard.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/EIP20NonStandardInterface.sol";
 
diff --git a/spec/certora/contracts/UnderlyingModelWithFee.sol b/spec/certora/contracts/UnderlyingModelWithFee.sol
index 5bf4959da..8c09dd758 100644
--- a/spec/certora/contracts/UnderlyingModelWithFee.sol
+++ b/spec/certora/contracts/UnderlyingModelWithFee.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../../contracts/EIP20NonStandardInterface.sol";
 
diff --git a/spec/certora/contracts/mcd/Dai.sol b/spec/certora/contracts/mcd/Dai.sol
index 2269277bf..522aaaf2a 100644
--- a/spec/certora/contracts/mcd/Dai.sol
+++ b/spec/certora/contracts/mcd/Dai.sol
@@ -13,7 +13,7 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./lib.sol";
 
diff --git a/spec/certora/contracts/mcd/Lib.sol b/spec/certora/contracts/mcd/Lib.sol
index d6a4727bb..afa8bd069 100644
--- a/spec/certora/contracts/mcd/Lib.sol
+++ b/spec/certora/contracts/mcd/Lib.sol
@@ -11,7 +11,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 contract LibNote {
     event LogNote(
diff --git a/spec/certora/contracts/mcd/Pot.sol b/spec/certora/contracts/mcd/Pot.sol
index b5d1a3779..d5ac37417 100644
--- a/spec/certora/contracts/mcd/Pot.sol
+++ b/spec/certora/contracts/mcd/Pot.sol
@@ -15,7 +15,7 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./lib.sol";
 
diff --git a/spec/certora/contracts/mcd/Vat.sol b/spec/certora/contracts/mcd/Vat.sol
index afb9bb354..ce379dbcd 100644
--- a/spec/certora/contracts/mcd/Vat.sol
+++ b/spec/certora/contracts/mcd/Vat.sol
@@ -15,7 +15,7 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 contract Vat {
     // --- Auth ---
diff --git a/spec/certora/contracts/mcd/join.sol b/spec/certora/contracts/mcd/join.sol
index 35f989a37..7d008d5b6 100644
--- a/spec/certora/contracts/mcd/join.sol
+++ b/spec/certora/contracts/mcd/join.sol
@@ -15,7 +15,7 @@
 // You should have received a copy of the GNU Affero General Public License
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./lib.sol";
 
diff --git a/spec/scenario/Comp/Comp.scen b/spec/scenario/Comp/Comp.scen
index b601240a3..fda4cfda9 100644
--- a/spec/scenario/Comp/Comp.scen
+++ b/spec/scenario/Comp/Comp.scen
@@ -1,7 +1,7 @@
 
 Test "Check Name"
     Comp Deploy Geoff
-    Assert Equal (Comp Name) "Compound Governance Token"
+    Assert Equal (Comp Name) "Compound"
 
 Test "Check Symbol"
     Comp Deploy Geoff
diff --git a/tests/Contracts/CErc20DelegateHarness.sol b/tests/Contracts/CErc20DelegateHarness.sol
index d0925d71c..1f23d8a1a 100644
--- a/tests/Contracts/CErc20DelegateHarness.sol
+++ b/tests/Contracts/CErc20DelegateHarness.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../contracts/CErc20Delegate.sol";
 
diff --git a/tests/Contracts/CEtherScenario.sol b/tests/Contracts/CEtherScenario.sol
index 77b2ee4a1..3b829560d 100644
--- a/tests/Contracts/CEtherScenario.sol
+++ b/tests/Contracts/CEtherScenario.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../contracts/CEther.sol";
 import "./ComptrollerScenario.sol";
diff --git a/tests/Contracts/CEvil.sol b/tests/Contracts/CEvil.sol
index d2755c9aa..ecbb3673d 100644
--- a/tests/Contracts/CEvil.sol
+++ b/tests/Contracts/CEvil.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./CErc20Scenario.sol";
 
diff --git a/tests/Contracts/ComptrollerBorked.sol b/tests/Contracts/ComptrollerBorked.sol
index 508ab7891..0e8fcf245 100644
--- a/tests/Contracts/ComptrollerBorked.sol
+++ b/tests/Contracts/ComptrollerBorked.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "../../contracts/Comptroller.sol";
 import "../../contracts/PriceOracle.sol";
diff --git a/tests/Contracts/Const.sol b/tests/Contracts/Const.sol
index 55f49db21..200894304 100644
--- a/tests/Contracts/Const.sol
+++ b/tests/Contracts/Const.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 contract ConstBase {
     uint public constant C = 1;
diff --git a/tests/Contracts/EIP20NonCompliantHarness.sol b/tests/Contracts/EIP20NonCompliantHarness.sol
index a4a108316..6d48780b2 100644
--- a/tests/Contracts/EIP20NonCompliantHarness.sol
+++ b/tests/Contracts/EIP20NonCompliantHarness.sol
@@ -3,7 +3,7 @@ Implements `transfer` and `transferForm` with 64-bit return values, just to be
 especially non-compliant and stress safe token.
 .*/
 
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 contract EIP20NonCompliantHarness {
     bool garbage;
diff --git a/tests/Contracts/FeeToken.sol b/tests/Contracts/FeeToken.sol
index 22544c172..990703f09 100644
--- a/tests/Contracts/FeeToken.sol
+++ b/tests/Contracts/FeeToken.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./FaucetToken.sol";
 import "./SafeMath.sol";
diff --git a/tests/Contracts/MathHelpers.sol b/tests/Contracts/MathHelpers.sol
index 48dc97b63..72de990fc 100644
--- a/tests/Contracts/MathHelpers.sol
+++ b/tests/Contracts/MathHelpers.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 contract MathHelpers {
 
diff --git a/tests/Contracts/StandardToken.sol b/tests/Contracts/StandardToken.sol
index ddf2a909d..26f704b45 100644
--- a/tests/Contracts/StandardToken.sol
+++ b/tests/Contracts/StandardToken.sol
@@ -1,4 +1,4 @@
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 import "./BasicToken.sol";
 import "./ERC20.sol";
diff --git a/tests/Contracts/WBTC.sol b/tests/Contracts/WBTC.sol
index 5297fa6fd..9162c0823 100644
--- a/tests/Contracts/WBTC.sol
+++ b/tests/Contracts/WBTC.sol
@@ -2,7 +2,7 @@
  *Submitted for verification at Etherscan.io on 2018-11-24
 */
 
-pragma solidity ^0.5.12;
+pragma solidity ^0.5.16;
 
 // File: openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol
 
diff --git a/tests/Governance/CompTest.js b/tests/Governance/CompTest.js
index 88b57536f..677e067f6 100644
--- a/tests/Governance/CompTest.js
+++ b/tests/Governance/CompTest.js
@@ -9,7 +9,7 @@ const {
 const EIP712 = require('../Utils/EIP712');
 
 describe('Comp', () => {
-  const name = 'Compound Governance Token';
+  const name = 'Compound';
   const symbol = 'COMP';
 
   let root, a1, a2, accounts, chainId;
diff --git a/tests/Models/DAIInterestRateModelTest.js b/tests/Models/DAIInterestRateModelTest.js
index 042eef619..3dac04f8f 100644
--- a/tests/Models/DAIInterestRateModelTest.js
+++ b/tests/Models/DAIInterestRateModelTest.js
@@ -71,6 +71,8 @@ async function getKovanFork() {
 describe('DAIInterestRateModel', () => {
   describe("constructor", () => {
     it.skip("sets jug and ilk address and pokes", async () => {
+      // NB: Going back a certain distance requires an archive node, currently that add-on is $250/mo
+      //  https://community.infura.io/t/error-returned-error-project-id-does-not-have-access-to-archive-state/847
       const {kovan, root, accounts} = await getKovanFork();
 
       // TODO: Get contract craz
diff --git a/yarn.lock b/yarn.lock
index d6eb93933..adaef1585 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3379,10 +3379,10 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2:
     json-rpc-random-id "^1.0.0"
     xtend "^4.0.1"
 
-eth-saddle@0.1.9:
-  version "0.1.9"
-  resolved "https://registry.yarnpkg.com/eth-saddle/-/eth-saddle-0.1.9.tgz#8d2754528eb5d15b0b0ed83e41550a5bba12e32d"
-  integrity sha512-XjiaBsdhpJ6bjVxzur3yOx3XYfOVmWW4e5+7EirCcjYO0hnFcjpDOD02wE5y0ss1bNj9XB9TYVQL6BDoZw+DSQ==
+eth-saddle@0.1.10:
+  version "0.1.10"
+  resolved "https://registry.yarnpkg.com/eth-saddle/-/eth-saddle-0.1.10.tgz#b51cb72029d1505b101f4bd0ff8dabccde1d9fd9"
+  integrity sha512-VGhIzXv0M4GpQsW5EVj734AZmn7TNYCrqvK8LIq9ozMI/xGHIxxp/Mt0TZwdxQPyrJpCLHeOKcoghqacKwD2Lw==
   dependencies:
     "@0x/sol-tracing-utils" "^7.0.3"
     "@0x/subproviders" "^6.0.0"