From 6858417c91921208c0b3ff342b11065c09665b1b Mon Sep 17 00:00:00 2001 From: Geoffrey Hayes Date: Wed, 11 Dec 2019 18:22:01 -0800 Subject: [PATCH] Add Comp Token and Governor Alpha [2.5] This patch adds the Comp Token and Governor Alpha contracts. The Comp token represents the administrative rights of the protocol, divided into 10,000,000 fungible tokens. These tokens have governance rights in the Governor contract, which in turn will become the admin of the Compound Timelock that administers the Compound Comptroller and cToken contracts. The Comp Token is a basic Erc-20 with an ability to delegate to third parties. The goal of delegation is that an account could delegate his/her voting rights in the Governor to a hot-wallet or trusted third-party which is paying closer attention to governance proposals. The Governor Alpha system is a simple vote-based governor which allows Comp Token holders to propose and ratify specific Ethereum actions. For instance, a user with sufficient tokens could propose supporting a new market in the Compound Comptroller. All Comp Token delegees will then have the ability over some period to vote on that proposal, and if its ratified, it can be automatically executed (through the Compound Timelock). Delegation is unique in the fact it's tracked by block, forever, for each account. This allows us to say "how many delegated votes existed for X account at block Y." We then say that your votes for a given proposal are the amount of votes you had delegated at the time the proposal was created. In this way, we prevent sybil attacks without forcing users to lock tokens before voting. --- .circleci/config.yml | 8 +- .gitignore | 3 +- .soliumrc.json | 1 + Makefile | 15 +- README.md | 46 +- contracts/EIP20Interface.sol | 3 + contracts/Governance/Comp.sol | 285 + contracts/Governance/GovernorAlpha.sol | 302 + contracts/SafeMath.sol | 49 +- migrations/.gitkeep | 0 networks/goerli-abi.json | 22579 ++++++++++++---- networks/goerli.json | 322 +- package.json | 21 +- saddle.config.js | 108 +- scenario/package.json | 17 +- scenario/script/repl | 6 +- scenario/src/Accounts.ts | 1 + scenario/src/Builder/CTokenBuilder.ts | 2 +- scenario/src/Builder/CompBuilder.ts | 110 + scenario/src/Builder/GovernorBuilder.ts | 85 + scenario/src/Contract.ts | 30 +- scenario/src/Contract/Comp.ts | 41 + scenario/src/Contract/Counter.ts | 12 + scenario/src/Contract/Governor.ts | 53 + scenario/src/Contract/Timelock.ts | 1 + scenario/src/ContractLookup.ts | 33 + scenario/src/CoreEvent.ts | 139 +- scenario/src/CoreValue.ts | 122 +- scenario/src/Event/AssertionEvent.ts | 140 +- scenario/src/Event/CompEvent.ts | 270 + scenario/src/Event/GovGuardianEvent.ts | 112 + scenario/src/Event/GovernorEvent.ts | 209 + scenario/src/Event/ProposalEvent.ts | 127 + scenario/src/Event/TimelockEvent.ts | 24 + scenario/src/Event/TrxEvent.ts | 4 +- scenario/src/EventBuilder.ts | 231 + scenario/src/Hypothetical.ts | 4 +- scenario/src/Invokation.ts | 2 +- scenario/src/Networks.ts | 4 +- scenario/src/Repl.ts | 4 - scenario/src/Utils.ts | 6 +- scenario/src/Value.ts | 34 +- scenario/src/Value/CompValue.ts | 202 + scenario/src/Value/GovernorValue.ts | 87 + scenario/src/Value/ProposalValue.ts | 159 + scenario/src/World.ts | 18 +- scenario/tsconfig.json | 6 +- scenario/yarn.lock | 2301 +- script/build_scenarios | 16 +- script/compile | 6 +- script/coverage | 4 +- script/ganache | 11 - script/test | 13 +- script/verify | 6 +- spec/certora/Comp/comp.cvl | 23 + spec/certora/Governor/governor_alpha.cvl | 10 + spec/certora/Math/int.cvl | 11 + spec/certora/contracts/CompCertora.sol | 40 + .../contracts/GovernorAlphaCertora.sol | 7 + spec/scenario/Comp/Comp.scen | 274 + spec/scenario/Governor/Cancel.scen | 99 + spec/scenario/Governor/Execute.scen | 106 + spec/scenario/Governor/Guardian.scen | 68 + spec/scenario/Governor/Propose.scen | 91 + spec/scenario/Governor/Queue.scen | 126 + spec/scenario/Governor/Upgrade.scen | 63 + spec/scenario/Governor/Vote.scen | 72 + spec/scenario/Timelock.scen | 27 +- tests/CompilerTest.js | 51 + tests/Contracts/CompScenario.sol | 31 + tests/Contracts/Const.sol | 31 + tests/Contracts/Counter.sol | 28 + tests/Contracts/Structs.sol | 29 + tests/Contracts/TimelockHarness.sol | 16 - tests/Governance/CompScenarioTest.js | 50 + tests/Governance/CompTest.js | 131 + .../Governance/GovernorAlpha/CastVoteTest.js | 184 + tests/Governance/GovernorAlpha/ProposeTest.js | 143 + tests/Governance/GovernorAlpha/StateTest.js | 157 + tests/Matchers.js | 16 +- tests/Models/DAIInterestRateModelTest.js | 20 +- tests/TimelockTest.js | 55 +- tests/Utils/Compound.js | 24 +- tests/Utils/EIP712.js | 122 + tests/Utils/Ethereum.js | 78 +- truffle.js | 108 - yarn.lock | 3605 +-- 87 files changed, 24750 insertions(+), 9540 deletions(-) create mode 100644 contracts/Governance/Comp.sol create mode 100644 contracts/Governance/GovernorAlpha.sol delete mode 100644 migrations/.gitkeep create mode 100644 scenario/src/Builder/CompBuilder.ts create mode 100644 scenario/src/Builder/GovernorBuilder.ts create mode 100644 scenario/src/Contract/Comp.ts create mode 100644 scenario/src/Contract/Counter.ts create mode 100644 scenario/src/Contract/Governor.ts create mode 100644 scenario/src/Event/CompEvent.ts create mode 100644 scenario/src/Event/GovGuardianEvent.ts create mode 100644 scenario/src/Event/GovernorEvent.ts create mode 100644 scenario/src/Event/ProposalEvent.ts create mode 100644 scenario/src/EventBuilder.ts create mode 100644 scenario/src/Value/CompValue.ts create mode 100644 scenario/src/Value/GovernorValue.ts create mode 100644 scenario/src/Value/ProposalValue.ts delete mode 100755 script/ganache create mode 100644 spec/certora/Comp/comp.cvl create mode 100644 spec/certora/Governor/governor_alpha.cvl create mode 100644 spec/certora/contracts/CompCertora.sol create mode 100644 spec/certora/contracts/GovernorAlphaCertora.sol create mode 100644 spec/scenario/Comp/Comp.scen create mode 100644 spec/scenario/Governor/Cancel.scen create mode 100644 spec/scenario/Governor/Execute.scen create mode 100644 spec/scenario/Governor/Guardian.scen create mode 100644 spec/scenario/Governor/Propose.scen create mode 100644 spec/scenario/Governor/Queue.scen create mode 100644 spec/scenario/Governor/Upgrade.scen create mode 100644 spec/scenario/Governor/Vote.scen create mode 100644 tests/CompilerTest.js create mode 100644 tests/Contracts/CompScenario.sol create mode 100644 tests/Contracts/Const.sol create mode 100644 tests/Contracts/Counter.sol create mode 100644 tests/Contracts/Structs.sol create mode 100644 tests/Governance/CompScenarioTest.js create mode 100644 tests/Governance/CompTest.js create mode 100644 tests/Governance/GovernorAlpha/CastVoteTest.js create mode 100644 tests/Governance/GovernorAlpha/ProposeTest.js create mode 100644 tests/Governance/GovernorAlpha/StateTest.js create mode 100644 tests/Utils/EIP712.js delete mode 100644 truffle.js diff --git a/.circleci/config.yml b/.circleci/config.yml index 561bc7601..81d5c061b 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.12/solc-static-linux -O /usr/local/bin/solc + sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.13/solc-static-linux -O /usr/local/bin/solc sudo chmod +x /usr/local/bin/solc - checkout - restore_cache: @@ -61,7 +61,7 @@ jobs: - store_artifacts: path: ~/junit parallelism: 3 - resource_class: large + resource_class: xlarge verify: docker: @@ -81,7 +81,7 @@ jobs: steps: - run: | - sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.12/solc-static-linux -O /usr/local/bin/solc + sudo wget https://github.com/ethereum/solidity/releases/download/v0.5.13/solc-static-linux -O /usr/local/bin/solc sudo chmod +x /usr/local/bin/solc - checkout - restore_cache: @@ -137,7 +137,7 @@ jobs: - codecov/upload: file: ~/repo/coverage/coverage-final.json parallelism: 10 - resource_class: large + resource_class: xlarge lint: docker: diff --git a/.gitignore b/.gitignore index 15b148bb3..4418d2283 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,5 @@ scenario/build/webpack.js scenario/.tscache tests/scenarios/ junit.xml -.build \ No newline at end of file +.build +.last_confs \ No newline at end of file diff --git a/.soliumrc.json b/.soliumrc.json index ea58a045c..c3600c074 100644 --- a/.soliumrc.json +++ b/.soliumrc.json @@ -13,6 +13,7 @@ "error", 200 ], + "security/no-block-members": "off", "security/no-inline-assembly": "off", "security/no-low-level-calls": "off" } diff --git a/Makefile b/Makefile index eb809a419..8f73e3432 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,19 @@ spec/certora/Math/%.cvl: --verify \ MathCertora:$@ +spec/certora/Comp/%.cvl: + $(CERTORA_RUN) \ + spec/certora/contracts/CompCertora.sol \ + --settings -b=4,-graphDrawLimit=0 \ + --verify \ + CompCertora:$@ + +spec/certora/Governor/%.cvl: + $(CERTORA_RUN) \ + spec/certora/contracts/GovernorAlphaCertora.sol \ + --verify \ + GovernorAlphaCertora:$@ + spec/certora/Comptroller/%.cvl: $(CERTORA_RUN) \ spec/certora/contracts/ComptrollerCertora.sol \ @@ -41,7 +54,7 @@ spec/certora/cDAI/%.cvl: spec/certora/contracts/mcd/pot.sol:Pot \ spec/certora/contracts/mcd/vat.sol:Vat \ spec/certora/contracts/mcd/join.sol:DaiJoin \ - contracts/test/BoolComptroller.sol \ + tests/Contracts/BoolComptroller.sol \ --link \ CDaiDelegateCertora:comptroller=BoolComptroller \ CDaiDelegateCertora:underlying=Dai \ diff --git a/README.md b/README.md index e433b44a6..4dd5217fa 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,16 @@ We detail a few of the core contracts in the Compound protocol.
The risk model contract, which validates permissible user actions and disallows actions if they do not fit certain risk parameters. For instance, the Comptroller enforces that each borrowing user must maintain a sufficient collateral balance across all cTokens.
+
+
Comp
+
The Compound Governance Token (COMP). Holders of this token have the ability to govern the protocol via the governor contract.
+
+ +
+
Governor Alpha
+
The administrator of the Compound timelock contract. Holders of Comp token may create and vote on proposals which will be queued into the Compound timelock and then have effects on Compound cToken and Copmtroller contracts. This contract may be replaced in the future with a beta version.
+
+
InterestRateModel
Contracts which define interest rate models. These models algorithmically determine interest rates based on the current utilization of a given market (that is, how much of the supplied assets are liquid versus borrowed).
@@ -73,28 +83,12 @@ You can then compile and deploy the contracts with: Note: this project does not use truffle migrations. The command above is the best way to deploy contracts. To view the addresses of contracts, please inspect the `networks/development.json` file that is produced as an artifact of that command. -Console -------- - -After you deploy, as above, you can run a truffle console with the following command: - - yarn run console - -This command will create a truffle-like build directory and start a truffle console, thus you can then run: - - truffle(rinkeby)> cDAI.deployed().then((cdai) => cdai.borrowRatePerBlock.call()) - - -You can also specify a network (rinkeby, ropsten, kovan, goerli or mainnet): - - yarn run console rinkeby - REPL ---- The Compound Protocol has a simple scenario evaluation tool to test and evaluate scenarios which could occur on the blockchain. This is primarily used for constructing high-level integration tests. The tool also has a REPL to interact with local the Compound Protocol (similar to `truffle console`). - yarn run repl + yarn repl > Read CToken cBAT Address Command: Read CToken cBAT Address @@ -113,12 +107,6 @@ Mocha contract tests are defined under the [test directory](https://github.com/c yarn run test -or with inspection (visit chrome://inspect) and look for a remote target after running: - - node --inspect node_modules/truffle-core/cli.js test - -Assertions used in our tests are provided by [ChaiJS](http://chaijs.com). - Integration Specs ----------------- @@ -133,7 +121,6 @@ Code Coverage ------------- To run code coverage, run: - scripts/ganache-coverage # run ganache in coverage mode yarn run coverage Linting @@ -153,18 +140,9 @@ To run in docker: # Run a shell to the built image docker run -it compound-protocol /bin/sh -From within a docker shell, you can interact locally with the protocol via ganache and truffle: - - > ganache-cli & - > yarn run deploy - > yarn run console - truffle(development)> cDAI.deployed().then((contract) => cdai = contract); - truffle(development)> cdai.borrowRatePerBlock.call().then((rate) => rate.toNumber()) - 20 - Discussion ---------- For any concerns with the protocol, visit us on [Discord](https://compound.finance/discord) to discuss. -_© Copyright 2019, Compound Labs, Inc._ +_© Copyright 2020, Compound Labs, Inc._ diff --git a/contracts/EIP20Interface.sol b/contracts/EIP20Interface.sol index 0c8935aae..f0f8e69bf 100644 --- a/contracts/EIP20Interface.sol +++ b/contracts/EIP20Interface.sol @@ -5,6 +5,9 @@ pragma solidity ^0.5.12; * https://eips.ethereum.org/EIPS/eip-20 */ interface EIP20Interface { + function name() external view returns (string memory); + function symbol() external view returns (string memory); + function decimals() external view returns (uint8); /** * @notice Get the total number of tokens in circulation diff --git a/contracts/Governance/Comp.sol b/contracts/Governance/Comp.sol new file mode 100644 index 000000000..091d3452b --- /dev/null +++ b/contracts/Governance/Comp.sol @@ -0,0 +1,285 @@ +pragma solidity ^0.5.12; +pragma experimental ABIEncoderV2; + +import "../EIP20Interface.sol"; +import "../SafeMath.sol"; + +/** + * @title Compound's Governance Token Contract + * @notice Immutable tokens for Compound Governors + * @author Compound + */ +contract Comp is EIP20Interface { + using SafeMath for uint; + + /// @notice EIP-20 token name for this token + string public constant name = "Compound Governance Token"; + + /// @notice EIP-20 token symbol for this token + string public constant symbol = "COMP"; + + /// @notice EIP-20 token decimals for this token + uint8 public constant decimals = 18; + + /// @notice Total number of tokens in circulation + uint public constant totalSupply = 10000000e18; // 10 million Comp + + /// @notice Official record of token balances for each account + mapping (address => uint) public balanceOf; + + /// @notice Allowance amounts on behalf of others + mapping (address => mapping (address => uint)) public allowance; + + /// @notice A record of each accounts delegate + mapping (address => address) public delegates; + + /// @notice A checkpoint for marking number of votes from a given block + struct Checkpoint { + uint32 fromBlock; + uint96 votes; + } + + /// @notice A record of votes checkpoints for each account, by index + mapping (address => mapping (uint32 => Checkpoint)) public checkpoints; + + /// @notice The number of checkpoints for each account + mapping (address => uint32) public numCheckpoints; + + /// @notice The EIP-712 typehash for the contract's domain + bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); + + /// @notice The EIP-712 typehash for the delegation struct used by the contract + bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)"); + + /// @notice A record of states for signing / validating signatures + mapping (address => uint) public nonces; + + /// @notice An event thats emitted when an account changes their delegate + event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate); + + /// @notice An event thats emitted when a delegate account's vote balance changes + event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance); + + /** + * @notice Construct a new Comp token + * @param account The initial account to grant all the tokens + */ + constructor(address account) public { + balanceOf[account] = totalSupply; + emit Transfer(address(0), account, totalSupply); + } + + /** + * @notice Approve `spender` to transfer up to `amount` from `src` + * @dev This will overwrite the approval amount for `spender` + * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) + * @param spender The address of the account which may transfer tokens + * @param amount The number of tokens that are approved (2^256-1 means infinite) + * @return Whether or not the approval succeeded + */ + function approve(address spender, uint amount) external returns (bool) { + allowance[msg.sender][spender] = amount; + + emit Approval(msg.sender, spender, amount); + return true; + } + + /** + * @notice Transfer `amount` tokens from `msg.sender` to `dst` + * @param dst The address of the destination account + * @param amount The number of tokens to transfer + * @return Whether or not the transfer succeeded + */ + function transfer(address dst, uint amount) external returns (bool) { + _transferTokens(msg.sender, dst, amount); + return true; + } + + /** + * @notice Transfer `amount` tokens from `src` to `dst` + * @param src The address of the source account + * @param dst The address of the destination account + * @param amount The number of tokens to transfer + * @return Whether or not the transfer succeeded + */ + function transferFrom(address src, address dst, uint amount) external returns (bool) { + address spender = msg.sender; + uint spenderAllowance = allowance[src][spender]; + + if (spender != src && spenderAllowance != uint(-1)) { + uint newAllowance = spenderAllowance.sub(amount, "Comp::transferFrom: transfer amount exceeds spender allowance"); + allowance[src][spender] = newAllowance; + + emit Approval(src, spender, newAllowance); + } + + _transferTokens(src, dst, amount); + return true; + } + + /** + * @notice Delegate votes from `msg.sender` to `delegatee` + * @param delegatee The address to delegate votes to + */ + function delegate(address delegatee) public { + return _delegate(msg.sender, delegatee); + } + + /** + * @notice Delegates votes from signatory to `delegatee` + * @param delegatee The address to delegate votes to + * @param nonce The contract state required to match the signature + * @param expiry The time at which to expire the signature + * @param v The recovery byte of the signature + * @param r Half of the ECDSA signature pair + * @param s Half of the ECDSA signature pair + */ + function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public { + bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); + bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry)); + bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); + address signatory = ecrecover(digest, v, r, s); + require(signatory != address(0), "Comp::delegateBySig: invalid signature"); + require(nonce == nonces[signatory]++, "Comp::delegateBySig: invalid nonce"); + require(now <= expiry, "Comp::delegateBySig: signature expired"); + return _delegate(signatory, delegatee); + } + + /** + * @notice Gets the current votes balance for `account` + * @param account The address to get votes balance + * @return The number of current votes for `account` + */ + function getCurrentVotes(address account) external view returns (uint96) { + uint32 length = numCheckpoints[account]; + return length == 0 ? 0 : checkpoints[account][length - 1].votes; + } + + /** + * @notice Determine the prior number of votes for an account as of a block number + * @dev Block number must be a finalized block or else this function will revert to prevent misinformation. + * @param account The address of the account to check + * @param blockNumber The block number to get the vote balance at + * @return The number of votes the account had as of the given block + */ + function getPriorVotes(address account, uint blockNumber) public view returns (uint96) { + require(blockNumber < block.number, "Comp::getPriorVotes: not yet determined"); + + uint32 length = numCheckpoints[account]; + if (length == 0) { + return 0; + } + + // First check most recent balance + if (checkpoints[account][length - 1].fromBlock <= blockNumber) { + return checkpoints[account][length - 1].votes; + } + + // Next check implicit zero balance + if (checkpoints[account][0].fromBlock > blockNumber) { + return 0; + } + + uint32 lower = 0; + uint32 upper = length - 1; + while (upper > lower) { + uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow + Checkpoint memory cp = checkpoints[account][center]; + if (cp.fromBlock == blockNumber) { + return cp.votes; + } else if (cp.fromBlock < blockNumber) { + lower = center; + } else { + upper = center - 1; + } + } + return checkpoints[account][lower].votes; + } + + function _delegate(address delegator, address delegatee) internal { + address currentDelegate = delegates[delegator]; + uint delegatorBalance = balanceOf[delegator]; + delegates[delegator] = delegatee; + + emit DelegateChanged(delegator, currentDelegate, delegatee); + + if (currentDelegate != delegatee && delegatorBalance > 0) { + _decreaseVotes(currentDelegate, delegatorBalance); + _increaseVotes(delegatee, delegatorBalance); + } + } + + function _pushCheckpoint(address delegatee, uint fromBlock, uint96 votes) internal { + require(fromBlock < 2**32, "Comp::_pushCheckpoint: block number exceeds 32 bits"); + checkpoints[delegatee][numCheckpoints[delegatee]++] = Checkpoint(uint32(fromBlock), votes); + } + + function _transferTokens(address src, address dst, uint amount) internal { + require(src != address(0), "Comp::_transferTokens: cannot transfer from the zero address"); + require(dst != address(0), "Comp::_transferTokens: cannot transfer to the zero address"); + + balanceOf[src] = balanceOf[src].sub(amount, "Comp::_transferTokens: transfer amount exceeds balance"); + balanceOf[dst] = balanceOf[dst].add(amount, "Comp::_transferTokens: transfer amount overflows"); + emit Transfer(src, dst, amount); + + address srcDelegate = delegates[src]; + address dstDelegate = delegates[dst]; + if (srcDelegate != dstDelegate) { + _decreaseVotes(srcDelegate, amount); + _increaseVotes(dstDelegate, amount); + } + } + + function _decreaseVotes(address delegatee, uint amount) internal { + if (delegatee == address(0)) { + return; + } + + uint32 length = numCheckpoints[delegatee]; + + Checkpoint storage currentCheckpoint = checkpoints[delegatee][length - 1]; + uint96 currentVotes = currentCheckpoint.votes; + uint96 newVotesAmount = uint96(uint(currentVotes).sub(amount, "Comp::_decreaseVotes: vote amount exceeds previous vote balance")); + + if (currentCheckpoint.fromBlock < block.number) { + _pushCheckpoint(delegatee, block.number, newVotesAmount); + } else { + currentCheckpoint.votes = newVotesAmount; + } + + emit DelegateVotesChanged(delegatee, uint(currentVotes), uint(newVotesAmount)); + } + + function _increaseVotes(address delegatee, uint amount) internal { + if (delegatee == address(0)) { + return; + } + + uint32 length = numCheckpoints[delegatee]; + + uint96 currentVotesAmount; + uint96 newVotesAmount; + + if (length == 0) { + currentVotesAmount = 0; + newVotesAmount = uint96(amount); + _pushCheckpoint(delegatee, block.number, newVotesAmount); + } else if (checkpoints[delegatee][length - 1].fromBlock < block.number) { + currentVotesAmount = checkpoints[delegatee][length - 1].votes; + newVotesAmount = uint96(uint(currentVotesAmount).add(amount, "Comp::_increaseVotes: vote amount overflows")); + _pushCheckpoint(delegatee, block.number, newVotesAmount); + } else { + currentVotesAmount = checkpoints[delegatee][length - 1].votes; + newVotesAmount = uint96(uint(currentVotesAmount).add(amount, "Comp::_increaseVotes: vote amount overflows")); + checkpoints[delegatee][length - 1].votes = newVotesAmount; + } + + emit DelegateVotesChanged(delegatee, currentVotesAmount, newVotesAmount); + } + + function getChainId() internal pure returns (uint) { + uint256 chainId; + assembly { chainId := chainid() } + return chainId; + } +} diff --git a/contracts/Governance/GovernorAlpha.sol b/contracts/Governance/GovernorAlpha.sol new file mode 100644 index 000000000..caf126d43 --- /dev/null +++ b/contracts/Governance/GovernorAlpha.sol @@ -0,0 +1,302 @@ +pragma solidity ^0.5.12; +pragma experimental ABIEncoderV2; + +import "../SafeMath.sol"; + +interface TimelockInterface { + function delay() external view returns (uint); + function GRACE_PERIOD() external view returns (uint); + function acceptAdmin() external; + function queueTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external returns (bytes32); + function cancelTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external; + function executeTransaction(address target, uint value, string calldata signature, bytes calldata data, uint eta) external payable returns (bytes memory); +} + +interface CompInterface { + function getPriorVotes(address account, uint blockNumber) external view returns (uint96); +} + +contract GovernorAlpha { + using SafeMath for uint; + + /// @notice The name of this contract + string public constant name = "Compound Governor Alpha"; + + /// @notice The number of votes in support of a proposal required in order for a quorum to be reached and for a vote to succeed + function quorumVotes() public pure returns (uint) { return 600000e18; } // 600,000 = 6% of Comp + + /// @notice The number of votes required in order for a voter to become a proposer + function proposalThreshold() public pure returns (uint) { return 400000e18; } // 400,000 = 4% of Comp + + /// @notice The delay before voting on a proposal may take place, once proposed + function votingDelay() public pure returns (uint) { return 1; } + + /// @notice The duration of voting on a proposal, in blocks + function votingPeriod() public pure returns (uint) { return 17280; } // 3 days in blocks + + /// @notice The address of the Compound Protocol Timelock + TimelockInterface public timelock; + + /// @notice The address of the Compound Governance Token + CompInterface public comp; + + /// @notice The address of the Governor Guardian + address public guardian; + + /// @notice The total number of proposals + uint public proposalCount; + + struct Proposal { + /// @notice Unique id for looking up a proposal + uint id; + + /// @notice Creator of the proposal + address proposer; + + /// @notice The timestamp that the proposal will be available for execution, set once the vote succeeds + uint eta; + + /// @notice the ordered list of target addresses for calls to be made + address[] targets; + + /// @notice The ordered list of values (i.e. msg.value) to be passed to the calls to be made + uint[] values; + + /// @notice The ordered list of function signatures to be called + string[] signatures; + + /// @notice The ordered list of calldata to be passed to each call + bytes[] calldatas; + + /// @notice The block at which voting begins: holders must delegate their votes prior to this block + uint startBlock; + + /// @notice The block at which voting ends: votes must be cast prior to this block + uint endBlock; + + /// @notice Current number of votes in favor of this proposal + uint forVotes; + + /// @notice Current number of votes in opposition to this proposal + uint againstVotes; + + /// @notice Flag marking whether the proposal has been canceled + bool canceled; + + /// @notice Flag marking whether the proposal has been executed + bool executed; + + /// @notice Receipts of ballots for the entire set of voters + mapping (address => Receipt) receipts; + } + + /// @notice Ballot receipt record for a voter + struct Receipt { + /// @notice Whether or not a vote has been cast + bool hasVoted; + + /// @notice Whether or not the voter supports the proposal + bool support; + + /// @notice The number of votes the voter had, which were cast + uint96 votes; + } + + /// @notice Possible states that a proposal may be in + enum ProposalState { + Pending, + Active, + Canceled, + Defeated, + Succeeded, + Queued, + Expired, + Executed + } + + /// @notice The official record of all proposals ever proposed + mapping (uint => Proposal) public proposals; + + /// @notice The latest proposal for each proposer + mapping (address => uint) public latestProposalIds; + + /// @notice The EIP-712 typehash for the contract's domain + bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)"); + + /// @notice The EIP-712 typehash for the ballot struct used by the contract + bytes32 public constant BALLOT_TYPEHASH = keccak256("Ballot(uint256 proposalId,bool support)"); + + /// @notice An event emitted when a new proposal is created + event NewProposal(uint id, string description); + + /// @notice An event emitted when a vote has been cast on a proposal + event VoteCast(uint proposalId, bool support, uint votes); + + /// @notice An event emitted when a proposal has been canceled + event ProposalCanceled(uint id); + + /// @notice An event emitted when a proposal has been queued in the Timelock + event ProposalQueued(uint id, uint eta); + + /// @notice An event emitted when a proposal has been executed in the Timelock + event ProposalExecuted(uint id, uint eta); + + constructor(address timelock_, address comp_, address guardian_) public { + timelock = TimelockInterface(timelock_); + comp = CompInterface(comp_); + guardian = guardian_; + } + + function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) public returns (uint) { + require(comp.getPriorVotes(msg.sender, block.number.sub(1)) > proposalThreshold(), "GovernorAlpha::propose: proposer votes below proposal threshold"); + require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "GovernorAlpha::propose: proposal function information arity mismatch"); + require(targets.length != 0, "GovernorAlpha::propose: must provide actions"); + + uint latestProposalId = latestProposalIds[msg.sender]; + if (latestProposalId != 0) { + ProposalState proposersLatestProposalState = state(latestProposalId); + require(proposersLatestProposalState != ProposalState.Active, "GovernorAlpha::propose: one live proposal per proposer, found an already active proposal"); + require(proposersLatestProposalState != ProposalState.Pending, "GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal"); + } + + proposalCount++; + Proposal memory newProposal = Proposal({ + id: proposalCount, + proposer: msg.sender, + eta: 0, + targets: targets, + values: values, + signatures: signatures, + calldatas: calldatas, + startBlock: block.number.add(votingDelay()), + endBlock: block.number.add(votingDelay()).add(votingPeriod()), + forVotes: 0, + againstVotes: 0, + canceled: false, + executed: false + }); + + proposals[newProposal.id] = newProposal; + latestProposalIds[newProposal.proposer] = newProposal.id; + + emit NewProposal(newProposal.id, description); + return newProposal.id; + } + + function queue(uint proposalId) public { + require(state(proposalId) == ProposalState.Succeeded, "GovernorAlpha::queue: proposal can only be queued if it is succeeded"); + Proposal storage proposal = proposals[proposalId]; + proposal.eta = block.timestamp.add(timelock.delay()); + for (uint i = 0; i < proposal.targets.length; i++) { + timelock.queueTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta); + } + emit ProposalQueued(proposalId, proposal.eta); + } + + function execute(uint proposalId) public payable { + require(state(proposalId) == ProposalState.Queued, "GovernorAlpha::execute: proposal can only be executed if it is queued"); + Proposal storage proposal = proposals[proposalId]; + proposal.executed = true; + for (uint i = 0; i < proposal.targets.length; i++) { + timelock.executeTransaction.value(proposal.values[i])(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta); + } + emit ProposalExecuted(proposalId, proposal.eta); + } + + function cancel(uint proposalId) public { + ProposalState state = state(proposalId); + require(state != ProposalState.Executed, "GovernorAlpha::cancel: cannot cancel executed proposal"); + + Proposal storage proposal = proposals[proposalId]; + require(msg.sender == guardian || comp.getPriorVotes(proposal.proposer, block.number.sub(1)) < proposalThreshold(), "GovernorAlpha::cancel: proposer above threshold"); + + proposal.canceled = true; + for (uint i = 0; i < proposal.targets.length; i++) { + timelock.cancelTransaction(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta); + } + + emit ProposalCanceled(proposalId); + } + + function getProposalFunctionData(uint proposalId) public view returns (address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas) { + Proposal memory p = proposals[proposalId]; + return (p.targets, p.values, p.signatures, p.calldatas); + } + + function getReceipt(uint proposalId, address voter) public view returns (Receipt memory) { + return proposals[proposalId].receipts[voter]; + } + + function state(uint proposalId) public view returns (ProposalState) { + require(proposalCount >= proposalId && proposalId > 0, "GovernorAlpha::state: invalid proposal id"); + Proposal memory proposal = proposals[proposalId]; + + if (proposal.canceled == true) return ProposalState.Canceled; + if (block.number <= proposal.startBlock) { return ProposalState.Pending; } + if (block.number <= proposal.endBlock) { return ProposalState.Active; } + if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < quorumVotes()) { return ProposalState.Defeated; } + if (proposal.eta == 0) { return ProposalState.Succeeded; } + if (proposal.executed) { return ProposalState.Executed; } + if (block.timestamp >= proposal.eta.add(timelock.GRACE_PERIOD())) { return ProposalState.Expired; } + return ProposalState.Queued; + } + + function castVote(uint proposalId, bool support) public { + return _castVote(msg.sender, proposalId, support); + } + + function castVoteBySig(uint proposalId, bool support, uint8 v, bytes32 r, bytes32 s) public { + bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))); + bytes32 structHash = keccak256(abi.encode(BALLOT_TYPEHASH, proposalId, support)); + bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); + address signatory = ecrecover(digest, v, r, s); + require(signatory != address(0), "GovernorAlpha::castVoteBySig: invalid signature"); + return _castVote(signatory, proposalId, support); + } + + function _castVote(address voter, uint proposalId, bool support) internal { + require(state(proposalId) == ProposalState.Active, "GovernorAlpha::castVote: voting is closed"); + Proposal storage proposal = proposals[proposalId]; + Receipt storage receipt = proposal.receipts[voter]; + require(receipt.hasVoted == false, "GovernorAlpha::castVote: voter already voted"); + uint96 votes = comp.getPriorVotes(voter, proposal.startBlock); + + if (support) { + proposal.forVotes = proposal.forVotes.add(votes); + } else { + proposal.againstVotes = proposal.againstVotes.add(votes); + } + + receipt.hasVoted = true; + receipt.support = support; + receipt.votes = votes; + + emit VoteCast(proposalId, support, votes); + } + + function __acceptAdmin() public { + require(msg.sender == guardian, "GovernorAlpha::__acceptAdmin: sender must be gov guardian"); + timelock.acceptAdmin(); + } + + function __abdicate() public { + require(msg.sender == guardian, "GovernorAlpha::__abdicate: sender must be gov guardian"); + guardian = address(0); + } + + function __queueSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public { + require(msg.sender == guardian, "GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian"); + timelock.queueTransaction(address(timelock), 0, "setPendingAdmin(address)", abi.encode(newPendingAdmin), eta); + } + + function __executeSetTimelockPendingAdmin(address newPendingAdmin, uint eta) public { + require(msg.sender == guardian, "GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian"); + timelock.executeTransaction(address(timelock), 0, "setPendingAdmin(address)", abi.encode(newPendingAdmin), eta); + } + + function getChainId() internal pure returns (uint) { + uint256 chainId; + assembly { chainId := chainid() } + return chainId; + } +} diff --git a/contracts/SafeMath.sol b/contracts/SafeMath.sol index 5374faf51..d42f81ce8 100644 --- a/contracts/SafeMath.sol +++ b/contracts/SafeMath.sol @@ -18,8 +18,7 @@ pragma solidity ^0.5.12; */ library SafeMath { /** - * @dev Returns the addition of two unsigned integers, reverting on - * overflow. + * @dev Returns the addition of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `+` operator. * @@ -34,29 +33,39 @@ library SafeMath { } /** - * @dev Returns the subtraction of two unsigned integers, reverting on - * overflow (when the result is negative). + * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow. + * + * Counterpart to Solidity's `+` operator. + * + * Requirements: + * - Addition cannot overflow. + */ + function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { + uint256 c = a + b; + require(c >= a, errorMessage); + + return c; + } + + /** + * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: - * - Subtraction cannot overflow. + * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { - return sub(a, b, "SafeMath: subtraction overflow"); + return sub(a, b, "SafeMath: subtraction underflow"); } /** - * @dev Returns the subtraction of two unsigned integers, reverting with custom message on - * overflow (when the result is negative). + * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: - * - Subtraction cannot overflow. - * - * NOTE: This is a feature of the next version of OpenZeppelin Contracts. - * @dev Get it via `npm install @openzeppelin/contracts@next`. + * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); @@ -66,8 +75,7 @@ library SafeMath { } /** - * @dev Returns the multiplication of two unsigned integers, reverting on - * overflow. + * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * @@ -89,8 +97,8 @@ library SafeMath { } /** - * @dev Returns the integer division of two unsigned integers. Reverts on - * division by zero. The result is rounded towards zero. + * @dev Returns the integer division of two unsigned integers. + * Reverts on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity @@ -104,8 +112,8 @@ library SafeMath { } /** - * @dev Returns the integer division of two unsigned integers. Reverts with custom message on - * division by zero. The result is rounded towards zero. + * @dev Returns the integer division of two unsigned integers. + * Reverts with custom message on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity @@ -113,8 +121,6 @@ library SafeMath { * * Requirements: * - The divisor cannot be zero. - * NOTE: This is a feature of the next version of OpenZeppelin Contracts. - * @dev Get it via `npm install @openzeppelin/contracts@next`. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 @@ -150,9 +156,6 @@ library SafeMath { * * Requirements: * - The divisor cannot be zero. - * - * NOTE: This is a feature of the next version of OpenZeppelin Contracts. - * @dev Get it via `npm install @openzeppelin/contracts@next`. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); diff --git a/migrations/.gitkeep b/migrations/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/networks/goerli-abi.json b/networks/goerli-abi.json index 1694872a4..9c59dadc5 100644 --- a/networks/goerli-abi.json +++ b/networks/goerli-abi.json @@ -1,69 +1,124 @@ { "ZRX": [ { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ + "inputs": [ { - "name": "", + "internalType": "uint256", + "name": "_initialAmount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_tokenName", + "type": "string" + }, + { + "internalType": "uint8", + "name": "_decimalUnits", + "type": "uint8" + }, + { + "internalType": "string", + "name": "_tokenSymbol", "type": "string" } ], "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x06fdde03" + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_owner", + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", "type": "address" }, { + "indexed": false, + "internalType": "uint256", "name": "value", "type": "uint256" } ], - "name": "allocateTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x08bca566" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_spender", + "indexed": true, + "internalType": "address", + "name": "from", "type": "address" }, { - "name": "_value", + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "name": "approve", - "outputs": [ + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": false, + "inputs": [ { - "name": "", - "type": "bool" + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], + "name": "allocateTo", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0x08bca566" }, { "constant": true, - "inputs": [], - "name": "totalSupply", + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -71,27 +126,26 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x18160ddd" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "_from", - "type": "address" - }, - { - "name": "_to", + "internalType": "address", + "name": "_spender", "type": "address" }, { + "internalType": "uint256", "name": "_value", "type": "uint256" } ], - "name": "transferFrom", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -99,7 +153,29 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "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": true, @@ -107,6 +183,7 @@ "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", "type": "uint8" } @@ -120,10 +197,12 @@ "constant": false, "inputs": [ { + "internalType": "address", "name": "_spender", "type": "address" }, { + "internalType": "uint256", "name": "_subtractedValue", "type": "uint256" } @@ -131,6 +210,7 @@ "name": "decreaseApproval", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -141,24 +221,47 @@ "signature": "0x66188463" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "_owner", + "internalType": "address", + "name": "_spender", "type": "address" + }, + { + "internalType": "uint256", + "name": "_addedValue", + "type": "uint256" } ], - "name": "balanceOf", + "name": "increaseApproval", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd73dd623" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0x06fdde03" }, { "constant": true, @@ -166,6 +269,7 @@ "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", "type": "string" } @@ -175,14 +279,32 @@ "type": "function", "signature": "0x95d89b41" }, + { + "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": "_to", "type": "address" }, { + "internalType": "uint256", "name": "_value", "type": "uint256" } @@ -190,6 +312,7 @@ "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -203,17 +326,25 @@ "constant": false, "inputs": [ { - "name": "_spender", + "internalType": "address", + "name": "_from", "type": "address" }, { - "name": "_addedValue", + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "increaseApproval", + "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -221,49 +352,51 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd73dd623" - }, + "signature": "0x23b872dd" + } + ], + "cUSDC": [ { - "constant": true, "inputs": [ { - "name": "_owner", + "internalType": "address", + "name": "underlying_", "type": "address" }, { - "name": "_spender", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", "type": "address" - } - ], - "name": "allowance", - "outputs": [ + }, { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdd62ed3e" - }, - { - "inputs": [ + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, { - "name": "_initialAmount", + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" }, { - "name": "_tokenName", + "internalType": "string", + "name": "name_", "type": "string" }, { - "name": "_decimalUnits", + "internalType": "string", + "name": "symbol_", + "type": "string" + }, + { + "internalType": "uint8", + "name": "decimals_", "type": "uint8" }, { - "name": "_tokenSymbol", - "type": "string" + "internalType": "address payable", + "name": "admin_", + "type": "address" } ], "payable": false, @@ -275,80 +408,8518 @@ "anonymous": false, "inputs": [ { - "indexed": true, - "name": "owner", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "cashPrior", + "type": "uint256" }, { - "indexed": true, - "name": "spender", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "interestAccumulated", + "type": "uint256" }, { "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "borrowIndex", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "Approval", + "name": "AccrueInterest", "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { "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": "value", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "Transfer", + "name": "Approval", "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - } - ], - "cUSDC": [ + "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": [ + { + "inputs": [ + { + "internalType": "contract CEther", + "name": "cEther_", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "constant": true, + "inputs": [], + "name": "cEther", + "outputs": [ + { + "internalType": "contract CEther", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x19b68c00" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + } + ], + "name": "repayBehalf", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x9f35c3d5" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "contract CEther", + "name": "cEther_", + "type": "address" + } + ], + "name": "repayBehalfExplicit", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x367b7f05" + } + ], + "CNT1": [ + { + "constant": true, + "inputs": [], + "name": "count", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06661abd" + }, + { + "constant": true, + "inputs": [], + "name": "count2", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x1d63e24d" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "decrement", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x3a9ebefd" + }, + { + "constant": true, + "inputs": [], + "name": "doRevert", + "outputs": [], + "payable": false, + "stateMutability": "pure", + "type": "function", + "signature": "0xafc874d2" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "increment", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x7cf5dab0" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount2", + "type": "uint256" + } + ], + "name": "increment", + "outputs": [], + "payable": true, + "stateMutability": "payable", + "type": "function", + "signature": "0x924ba506" + }, + { + "constant": true, + "inputs": [], + "name": "notZero", + "outputs": [], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x19a50d4a" + } + ], + "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" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "name": "NewProposal", + "type": "event", + "signature": "0xa9ef596c73fbcfb4a78bc139b1a19c35247c1f37d2489c0513ad2dd3eb7d8c6b" + }, + { + "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": "uint256", + "name": "eta", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event", + "signature": "0xf758fc91e01b00ea6b4a6138756f7f28e021f9bf21db6dbf8c36c88eb737257a" + }, + { + "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": "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": "0xee358b70feb31defabe34f41b973e45e9d6d5742b67e164e6d15ad5c5ae606e4" + }, + { + "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": 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": "getProposalFunctionData", + "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": "0x6adfc1cf" + }, + { + "constant": true, + "inputs": [], + "name": "guardian", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x452a9320" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "proposalId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "voter", + "type": "address" + } + ], + "name": "hasVoted", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x43859632" + }, + { + "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": "proposalCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xda35c664" + }, + { + "constant": true, + "inputs": [], + "name": "proposalThreshold", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "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": "view", + "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" + } + ], + "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" + } + ], + "GovernorAlpha2": [ + { + "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" + }, + { + "indexed": false, + "internalType": "string", + "name": "description", + "type": "string" + } + ], + "name": "NewProposal", + "type": "event", + "signature": "0xa9ef596c73fbcfb4a78bc139b1a19c35247c1f37d2489c0513ad2dd3eb7d8c6b" + }, + { + "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": "uint256", + "name": "eta", + "type": "uint256" + } + ], + "name": "ProposalExecuted", + "type": "event", + "signature": "0xf758fc91e01b00ea6b4a6138756f7f28e021f9bf21db6dbf8c36c88eb737257a" + }, + { + "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": "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": "0xee358b70feb31defabe34f41b973e45e9d6d5742b67e164e6d15ad5c5ae606e4" + }, + { + "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": "getProposalFunctionData", + "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": "0x6adfc1cf" + }, + { + "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": "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" + } + ], + "DAI": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_initialAmount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_tokenName", + "type": "string" + }, + { + "internalType": "uint8", + "name": "_decimalUnits", + "type": "uint8" + }, + { + "internalType": "string", + "name": "_tokenSymbol", + "type": "string" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "allocateTo", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x08bca566" + }, + { + "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": "_value", + "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": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "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": "0x66188463" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_addedValue", + "type": "uint256" + } + ], + "name": "increaseApproval", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd73dd623" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "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": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + } + ], + "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": "name", + "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": [ { - "name": "", - "type": "string" + "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": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x06fdde03" + "signature": "0x6a56947e" }, { - "constant": false, + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, "inputs": [ { - "name": "spender", + "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" }, { - "name": "amount", + "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": "approve", + "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" } @@ -356,19 +8927,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0x56133fc8" }, { "constant": false, "inputs": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "newCloseFactorMantissa", "type": "uint256" } ], - "name": "repayBorrow", + "name": "_setCloseFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -376,34 +8949,48 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x0e752702" + "signature": "0x317b0b77" }, { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", + "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": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x173b9904" + "signature": "0xe4028eee" }, { "constant": false, "inputs": [ { - "name": "account", - "type": "address" + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" } ], - "name": "borrowBalanceCurrent", + "name": "_setLiquidationIncentive", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -411,57 +8998,43 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x17bfdfbc" + "signature": "0x4fd42e17" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "uint256", + "name": "newMaxAssets", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", + "name": "_setMaxAssets", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x182df0f5" + "signature": "0xd9226ced" }, { "constant": false, "inputs": [ { - "name": "src", - "type": "address" - }, - { - "name": "dst", - "type": "address" - }, - { - "name": "amount", - "type": "uint256" + "internalType": "bool", + "name": "state", + "type": "bool" } ], - "name": "transferFrom", + "name": "_setMintPaused", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -469,23 +9042,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0x9845f280" }, { "constant": false, "inputs": [ { - "name": "borrower", + "internalType": "address", + "name": "newPauseGuardian", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" } ], - "name": "repayBorrowBehalf", + "name": "_setPauseGuardian", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -493,84 +9064,87 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x2608f818" + "signature": "0x5f5af1aa" }, { - "constant": true, - "inputs": [], - "name": "pendingAdmin", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "contract PriceOracle", + "name": "newOracle", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x26782247" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", + "name": "_setPriceOracle", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x313ce567" + "signature": "0x55ee1fe1" }, { "constant": false, "inputs": [ { - "name": "owner", - "type": "address" + "internalType": "bool", + "name": "state", + "type": "bool" } ], - "name": "balanceOfUnderlying", + "name": "_setSeizePaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x3af9e669" + "signature": "0x2d70db78" }, { - "constant": true, - "inputs": [], - "name": "getCash", + "constant": false, + "inputs": [ + { + "internalType": "bool", + "name": "state", + "type": "bool" + } + ], + "name": "_setTransferPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x8ebf6364" }, { "constant": false, "inputs": [ { - "name": "newComptroller", + "internalType": "contract CToken", + "name": "cToken", "type": "address" } ], - "name": "_setComptroller", + "name": "_supportMarket", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -578,29 +9152,42 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4576b5db" + "signature": "0xa76b3fda" }, { "constant": true, - "inputs": [], - "name": "totalBorrows", - "outputs": [ + "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": "0x47bd3718" + "signature": "0xdce15449" }, { "constant": true, "inputs": [], - "name": "comptroller", + "name": "admin", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -608,19 +9195,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5fe3b567" + "signature": "0xf851a440" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], - "name": "_reduceReserves", + "name": "borrowAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -628,64 +9227,84 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0xda3d454c" }, { "constant": true, "inputs": [], - "name": "initialExchangeRateMantissa", + "name": "borrowGuardianPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x675d972c" + "signature": "0x9530f644" }, { - "constant": true, - "inputs": [], - "name": "accrualBlockNumber", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], + "name": "borrowVerify", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x6c540baf" + "signature": "0x5c778605" }, { "constant": true, - "inputs": [], - "name": "underlying", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "contract CToken", + "name": "cToken", + "type": "address" + } + ], + "name": "checkMembership", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6f307dc3" + "signature": "0x929fe9a1" }, { "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", + "inputs": [], + "name": "closeFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -693,104 +9312,171 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0xe8755446" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "totalBorrowsCurrent", + "name": "comptrollerImplementation", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x73acee98" + "signature": "0xbb82aa5e" }, { "constant": false, "inputs": [ { - "name": "redeemAmount", - "type": "uint256" + "internalType": "address[]", + "name": "cTokens", + "type": "address[]" } ], - "name": "redeemUnderlying", + "name": "enterMarkets", "outputs": [ { + "internalType": "uint256[]", "name": "", - "type": "uint256" + "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x852a12e3" + "signature": "0xc2998238" }, { - "constant": true, - "inputs": [], - "name": "totalReserves", + "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": "0x8f840ddd" + "signature": "0xede4edd0" }, { "constant": true, - "inputs": [], - "name": "symbol", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountLiquidity", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0x5ec88c79" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" } ], - "name": "borrowBalanceStored", + "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": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95dd9193" + "signature": "0x007e3dd2" }, { "constant": false, "inputs": [ { - "name": "mintAmount", + "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": "mint", + "name": "liquidateBorrowAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -798,53 +9484,77 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa0712d68" + "signature": "0x5fc7e71e" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", - "outputs": [ + "inputs": [ { - "name": "", + "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": "0xa6afed95" + "signature": "0x47ef3b3b" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "dst", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" }, { - "name": "amount", + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "uint256", + "name": "actualRepayAmount", "type": "uint256" } ], - "name": "transfer", + "name": "liquidateCalculateSeizeTokens", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xa9059cbb" - }, - { - "constant": true, - "inputs": [], - "name": "borrowIndex", - "outputs": [ + "type": "uint256" + }, { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -852,14 +9562,15 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0xc488847b" }, { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "liquidationIncentiveMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -867,47 +9578,74 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0x4ada90af" }, { - "constant": false, + "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": "seize", + "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": "0xb2a02ff1" + "signature": "0x94b2294b" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "minter", "type": "address" + }, + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" } ], - "name": "_setPendingAdmin", + "name": "mintAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -915,125 +9653,142 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb71d1a0c" + "signature": "0x4ef4c3e1" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "exchangeRateCurrent", + "name": "mintGuardianPaused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xbd6d894d" + "signature": "0x5dce0515" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "cToken", "type": "address" - } - ], - "name": "getAccountSnapshot", - "outputs": [ - { - "name": "", - "type": "uint256" }, { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "minter", + "type": "address" }, { - "name": "", + "internalType": "uint256", + "name": "actualMintAmount", "type": "uint256" }, { - "name": "", + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], + "name": "mintVerify", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xc37f68e2" + "signature": "0x41c728b9" }, { - "constant": false, - "inputs": [ - { - "name": "borrowAmount", - "type": "uint256" - } - ], - "name": "borrow", + "constant": true, + "inputs": [], + "name": "oracle", "outputs": [ { + "internalType": "contract PriceOracle", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0x7dc0d1d0" }, { - "constant": false, - "inputs": [ - { - "name": "redeemTokens", - "type": "uint256" - } - ], - "name": "redeem", + "constant": true, + "inputs": [], + "name": "pauseGuardian", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xdb006a75" + "signature": "0x24a3d622" }, { "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" - }, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ { - "name": "spender", + "internalType": "address", + "name": "", "type": "address" } ], - "name": "allowance", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": true, + "inputs": [], + "name": "pendingComptrollerImplementation", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0xdcfbc0c7" }, { "constant": false, - "inputs": [], - "name": "_acceptAdmin", + "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" } @@ -1041,62 +9796,67 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe9c714f2" + "signature": "0xeabe7d91" }, { "constant": false, "inputs": [ { - "name": "newInterestRateModel", + "internalType": "address", + "name": "cToken", "type": "address" - } - ], - "name": "_setInterestRateModel", - "outputs": [ + }, + { + "internalType": "address", + "name": "redeemer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, { - "name": "", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], + "name": "redeemVerify", + "outputs": [], "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": "0x51dff989" }, { "constant": false, "inputs": [ { - "name": "borrower", + "internalType": "address", + "name": "cToken", "type": "address" }, { - "name": "repayAmount", - "type": "uint256" + "internalType": "address", + "name": "payer", + "type": "address" }, { - "name": "cTokenCollateral", + "internalType": "address", + "name": "borrower", "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" } ], - "name": "liquidateBorrow", + "name": "repayBorrowAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -1104,49 +9864,77 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf5e3c462" + "signature": "0x24008a62" }, { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "address", + "name": "cToken", "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf851a440" - }, - { - "constant": true, - "inputs": [], - "name": "borrowRatePerBlock", - "outputs": [ + }, { - "name": "", + "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": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xf8f9da28" + "signature": "0x1ededc91" }, { "constant": false, "inputs": [ { - "name": "newReserveFactorMantissa", + "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": "_setReserveFactor", + "name": "seizeAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -1154,14 +9942,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xfca7820b" + "signature": "0xd02f7351" }, { "constant": true, "inputs": [], - "name": "isCToken", + "name": "seizeGuardianPaused", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -1169,456 +9958,522 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe9c44ae" + "signature": "0xac0b0bb7" }, { + "constant": false, "inputs": [ { - "name": "underlying_", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { - "name": "comptroller_", + "internalType": "address", + "name": "cTokenBorrowed", "type": "address" }, { - "name": "interestRateModel_", + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "name": "initialExchangeRateMantissa_", - "type": "uint256" - }, - { - "name": "name_", - "type": "string" - }, - { - "name": "symbol_", - "type": "string" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "name": "decimals_", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], + "name": "seizeVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "type": "function", + "signature": "0x6d35bf91" }, { - "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": "src", + "type": "address" }, { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" - } - ], - "name": "AccrueInterest", - "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "minter", + "internalType": "address", + "name": "dst", "type": "address" }, { - "indexed": false, - "name": "mintAmount", + "internalType": "uint256", + "name": "transferTokens", "type": "uint256" - }, + } + ], + "name": "transferAllowed", + "outputs": [ { - "indexed": false, - "name": "mintTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbdcdc258" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "redeemer", - "type": "address" - }, - { - "indexed": false, - "name": "redeemAmount", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "transferGuardianPaused", + "outputs": [ { - "indexed": false, - "name": "redeemTokens", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "Redeem", - "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x87f76303" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "cToken", "type": "address" }, { - "indexed": false, - "name": "borrowAmount", - "type": "uint256" + "internalType": "address", + "name": "src", + "type": "address" }, { - "indexed": false, - "name": "accountBorrows", - "type": "uint256" + "internalType": "address", + "name": "dst", + "type": "address" }, { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "transferTokens", "type": "uint256" } ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" - }, + "name": "transferVerify", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x6a56947e" + } + ], + "Comp": [ { - "anonymous": false, "inputs": [ - { - "indexed": false, - "name": "payer", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", - "type": "address" - }, - { - "indexed": false, - "name": "repayAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "accountBorrows", - "type": "uint256" - }, - { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" + { + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "RepayBorrow", - "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "liquidator", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "indexed": false, - "name": "repayAmount", - "type": "uint256" - }, - { - "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": "delegator", "type": "address" }, { - "indexed": false, - "name": "newPendingAdmin", + "indexed": true, + "internalType": "address", + "name": "fromDelegate", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toDelegate", "type": "address" } ], - "name": "NewPendingAdmin", + "name": "DelegateChanged", "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "signature": "0x3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "oldAdmin", + "indexed": true, + "internalType": "address", + "name": "delegate", "type": "address" }, { "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "uint256", + "name": "previousBalance", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newBalance", + "type": "uint256" } ], - "name": "NewAdmin", + "name": "DelegateVotesChanged", "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "signature": "0xdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "oldComptroller", + "indexed": true, + "internalType": "address", + "name": "from", "type": "address" }, { - "indexed": false, - "name": "newComptroller", + "indexed": true, + "internalType": "address", + "name": "to", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "NewComptroller", + "name": "Transfer", "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "DELEGATION_TYPEHASH", + "outputs": [ { - "indexed": false, - "name": "oldInterestRateModel", - "type": "address" - }, + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xe7a324dc" + }, + { + "constant": true, + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ { - "indexed": false, - "name": "newInterestRateModel", - "type": "address" + "internalType": "bytes32", + "name": "", + "type": "bytes32" } ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x20606b70" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": false, - "name": "oldReserveFactorMantissa", - "type": "uint256" + "internalType": "address", + "name": "", + "type": "address" }, { - "indexed": false, - "name": "newReserveFactorMantissa", + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "admin", + "internalType": "address", + "name": "spender", "type": "address" }, { - "indexed": false, - "name": "reduceAmount", + "internalType": "uint256", + "name": "amount", "type": "uint256" - }, + } + ], + "name": "approve", + "outputs": [ { - "indexed": false, - "name": "newTotalReserves", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x095ea7b3" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": false, - "name": "error", - "type": "uint256" - }, - { - "indexed": false, - "name": "info", - "type": "uint256" - }, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": true, - "name": "from", + "internalType": "address", + "name": "", "type": "address" }, { - "indexed": true, - "name": "to", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "checkpoints", + "outputs": [ + { + "internalType": "uint32", + "name": "fromBlock", + "type": "uint32" }, { - "indexed": false, - "name": "amount", - "type": "uint256" + "internalType": "uint96", + "name": "votes", + "type": "uint96" } ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x0cdfebfa" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ { - "indexed": true, - "name": "owner", - "type": "address" - }, + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [ { - "indexed": true, - "name": "spender", + "internalType": "address", + "name": "delegatee", "type": "address" - }, - { - "indexed": false, - "name": "amount", - "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "PriceOracle": [ + "name": "delegate", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x5c19a95c" + }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "delegatee", "type": "address" }, { - "name": "underlyingPriceMantissa", + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry", "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" } ], - "name": "setUnderlyingPrice", + "name": "delegateBySig", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x127ffda0" + "signature": "0xc3cda520" }, { "constant": true, "inputs": [ { - "name": "asset", + "internalType": "address", + "name": "", "type": "address" } ], - "name": "assetPrices", + "name": "delegates", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5e9a523c" + "signature": "0x587cde1e" }, { "constant": true, - "inputs": [], - "name": "isPriceOracle", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getCurrentVotes", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x66331bba" + "signature": "0xb4b5ea57" }, { "constant": true, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "account", "type": "address" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" } ], - "name": "getUnderlyingPrice", + "name": "getPriorVotes", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -1626,557 +10481,638 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfc57d4df" - } - ], - "PriceOracleProxy": [ + "signature": "0x782d6fe1" + }, { "constant": true, "inputs": [], - "name": "comptroller", + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "address" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5fe3b567" + "signature": "0x06fdde03" }, { "constant": true, - "inputs": [], - "name": "isPriceOracle", - "outputs": [ + "inputs": [ { + "internalType": "address", "name": "", - "type": "bool" + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x66331bba" - }, - { - "constant": true, - "inputs": [], - "name": "cEtherAddress", + "name": "nonces", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xde836acf" + "signature": "0x7ecebe00" }, { "constant": true, - "inputs": [ - { - "name": "cToken", - "type": "address" - } - ], - "name": "getUnderlyingPrice", + "inputs": [], + "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfc57d4df" + "signature": "0x95d89b41" }, { "constant": true, "inputs": [], - "name": "v1PriceOracle", + "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe10c98d" + "signature": "0x18160ddd" }, { + "constant": false, "inputs": [ { - "name": "comptroller_", - "type": "address" - }, - { - "name": "v1PriceOracle_", + "internalType": "address", + "name": "dst", "type": "address" }, { - "name": "cEtherAddress_", - "type": "address" + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - } - ], - "Maximillion": [ - { - "constant": true, - "inputs": [], - "name": "cEther", + "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x19b68c00" + "signature": "0xa9059cbb" }, { "constant": false, "inputs": [ { - "name": "borrower", + "internalType": "address", + "name": "src", "type": "address" }, { - "name": "cEther_", + "internalType": "address", + "name": "dst", "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "repayBehalfExplicit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function", - "signature": "0x367b7f05" - }, - { - "constant": false, - "inputs": [ + "name": "transferFrom", + "outputs": [ { - "name": "borrower", - "type": "address" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "repayBehalf", - "outputs": [], - "payable": true, - "stateMutability": "payable", + "payable": false, + "stateMutability": "nonpayable", "type": "function", - "signature": "0x9f35c3d5" + "signature": "0x23b872dd" }, { + "constant": true, "inputs": [ { - "name": "cEther_", + "internalType": "address", + "name": "account", "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - } - ], - "cDAI": [ - { - "constant": true, - "inputs": [], - "name": "name", + "name": "votesLength", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x06fdde03" - }, + "signature": "0xdbc04ef2" + } + ], + "cBAT": [ { - "constant": false, "inputs": [ { - "name": "spender", + "internalType": "address", + "name": "underlying_", "type": "address" }, { - "name": "amount", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", + "type": "address" + }, + { + "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" + }, + { + "internalType": "address payable", + "name": "admin_", + "type": "address" } ], "payable": false, "stateMutability": "nonpayable", - "type": "function", - "signature": "0x095ea7b3" + "type": "constructor", + "signature": "constructor" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "repayAmount", + "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": "repayBorrow", - "outputs": [ + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" + }, + { + "anonymous": false, + "inputs": [ { - "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": "nonpayable", - "type": "function", - "signature": "0x0e752702" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", - "outputs": [ + "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" + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x173b9904" + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "account", - "type": "address" - } - ], - "name": "borrowBalanceCurrent", - "outputs": [ - { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "error", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x17bfdfbc" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "info", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "detail", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x182df0f5" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "src", + "indexed": false, + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "name": "dst", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "amount", + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ + }, { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x23b872dd" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "borrower", + "indexed": false, + "internalType": "address", + "name": "minter", "type": "address" }, { - "name": "repayAmount", + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" - } - ], - "name": "repayBorrowBehalf", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x2608f818" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": true, - "inputs": [], - "name": "pendingAdmin", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "oldAdmin", "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x26782247" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x313ce567" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "owner", + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", "type": "address" - } - ], - "name": "balanceOfUnderlying", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x3af9e669" + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { - "constant": true, - "inputs": [], - "name": "getCash", - "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": "0x3b1d21a2" + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "newComptroller", + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", "type": "address" - } - ], - "name": "_setComptroller", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x4576b5db" + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" }, { - "constant": true, - "inputs": [], - "name": "totalBorrows", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x47bd3718" + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { - "constant": true, - "inputs": [], - "name": "comptroller", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "redeemer", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x5fe3b567" + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "reduceAmount", + "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - } - ], - "name": "_reduceReserves", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x601a0bf1" - }, - { - "constant": true, - "inputs": [], - "name": "initialExchangeRateMantissa", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x675d972c" + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { - "constant": true, - "inputs": [], - "name": "accrualBlockNumber", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "benefactor", + "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": "0x6c540baf" + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" }, { - "constant": true, - "inputs": [], - "name": "underlying", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "admin", "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x6f307dc3" + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "owner", + "indexed": true, + "internalType": "address", + "name": "from", "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ + }, { - "name": "", + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { "constant": false, "inputs": [], - "name": "totalBorrowsCurrent", + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2184,19 +11120,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x73acee98" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "redeemAmount", + "internalType": "uint256", + "name": "addAmount", "type": "uint256" } ], - "name": "redeemUnderlying", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2204,69 +11142,65 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x852a12e3" + "signature": "0x3e941010" }, { - "constant": true, - "inputs": [], - "name": "totalReserves", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x8f840ddd" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95d89b41" + "signature": "0x601a0bf1" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", "type": "address" } ], - "name": "borrowBalanceStored", + "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95dd9193" + "signature": "0x4576b5db" }, { "constant": false, "inputs": [ { - "name": "mintAmount", - "type": "uint256" + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "name": "mint", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2274,14 +11208,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa0712d68" + "signature": "0xf2b3abbd" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", + "inputs": [ + { + "internalType": "address payable", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2289,38 +11230,37 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "dst", - "type": "address" - }, - { - "name": "amount", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "transfer", + "name": "_setReserveFactor", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0xfca7820b" }, { "constant": true, "inputs": [], - "name": "borrowIndex", + "name": "accrualBlockNumber", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2328,122 +11268,143 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0x6c540baf" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "supplyRatePerBlock", + "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": "0xae9d70b0" + "signature": "0xf851a440" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "liquidator", + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "borrower", + "internalType": "address", + "name": "spender", "type": "address" - }, - { - "name": "seizeTokens", - "type": "uint256" } ], - "name": "seize", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", + "internalType": "address", + "name": "spender", "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "name": "_setPendingAdmin", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb71d1a0c" + "signature": "0x095ea7b3" }, { - "constant": false, - "inputs": [], - "name": "exchangeRateCurrent", + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xbd6d894d" + "signature": "0x70a08231" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "owner", "type": "address" } ], - "name": "getAccountSnapshot", + "name": "balanceOfUnderlying", "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": "0x3af9e669" }, { "constant": false, "inputs": [ { + "internalType": "uint256", "name": "borrowAmount", "type": "uint256" } @@ -2451,6 +11412,7 @@ "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2464,13 +11426,15 @@ "constant": false, "inputs": [ { - "name": "redeemTokens", - "type": "uint256" + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "redeem", + "name": "borrowBalanceCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2478,23 +11442,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xdb006a75" + "signature": "0x17bfdfbc" }, { "constant": true, "inputs": [ { - "name": "owner", - "type": "address" - }, - { - "name": "spender", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "allowance", + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2502,49 +11464,47 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0x95dd9193" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0xaa5af0fd" }, { - "constant": false, - "inputs": [ - { - "name": "newInterestRateModel", - "type": "address" - } - ], - "name": "_setInterestRateModel", + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0xf8f9da28" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "comptroller", "outputs": [ { + "internalType": "contract ComptrollerInterface", "name": "", "type": "address" } @@ -2552,57 +11512,47 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0x5fe3b567" }, { - "constant": false, - "inputs": [ - { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" - }, - { - "name": "cTokenCollateral", - "type": "address" - } - ], - "name": "liquidateBorrow", + "constant": true, + "inputs": [], + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xf5e3c462" + "signature": "0x313ce567" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "admin", + "name": "exchangeRateCurrent", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xf851a440" + "signature": "0xbd6d894d" }, { "constant": true, "inputs": [], - "name": "borrowRatePerBlock", + "name": "exchangeRateStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -2610,483 +11560,486 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf8f9da28" + "signature": "0x182df0f5" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "newReserveFactorMantissa", - "type": "uint256" + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "_setReserveFactor", + "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": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xfca7820b" + "signature": "0xc37f68e2" }, { "constant": true, "inputs": [], - "name": "isCToken", + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe9c44ae" + "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": "uint256" + "type": "uint8" } ], + "name": "initialize", + "outputs": [], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "interestAccumulated", - "type": "uint256" - }, - { - "indexed": false, - "name": "borrowIndex", - "type": "uint256" - }, - { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" - } - ], - "name": "AccrueInterest", - "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "minter", - "type": "address" - }, - { - "indexed": false, - "name": "mintAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "mintTokens", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "type": "function", + "signature": "0x1a31d465" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "redeemer", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", "type": "address" }, { - "indexed": false, - "name": "redeemAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "redeemTokens", - "type": "uint256" - } - ], - "name": "Redeem", - "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "borrower", + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", "type": "address" }, { - "indexed": false, - "name": "borrowAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "accountBorrows", - "type": "uint256" - }, - { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "payer", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", - "type": "address" }, { - "indexed": false, - "name": "repayAmount", - "type": "uint256" + "internalType": "string", + "name": "name_", + "type": "string" }, { - "indexed": false, - "name": "accountBorrows", - "type": "uint256" + "internalType": "string", + "name": "symbol_", + "type": "string" }, { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" } ], - "name": "RepayBorrow", - "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x99d8c1b4" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "interestRateModel", + "outputs": [ { - "indexed": false, - "name": "liquidator", + "internalType": "contract InterestRateModel", + "name": "", "type": "address" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf3fdb15a" + }, + { + "constant": true, + "inputs": [], + "name": "isCToken", + "outputs": [ { - "indexed": false, + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xfe9c44ae" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", "name": "borrower", "type": "address" }, { - "indexed": false, + "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { - "indexed": false, + "internalType": "contract CTokenInterface", "name": "cTokenCollateral", "type": "address" - }, + } + ], + "name": "liquidateBorrow", + "outputs": [ { - "indexed": false, - "name": "seizeTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf5e3c462" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" - }, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [ { - "indexed": false, - "name": "newPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa0712d68" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ { - "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldComptroller", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ { - "indexed": false, - "name": "newComptroller", + "internalType": "address payable", + "name": "", "type": "address" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldInterestRateModel", - "type": "address" - }, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "outputs": [ { - "indexed": false, - "name": "newInterestRateModel", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xdb006a75" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldReserveFactorMantissa", + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" - }, + } + ], + "name": "redeemUnderlying", + "outputs": [ { - "indexed": false, - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x852a12e3" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "admin", - "type": "address" - }, - { - "indexed": false, - "name": "reduceAmount", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrow", + "outputs": [ { - "indexed": false, - "name": "newTotalReserves", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "error", - "type": "uint256" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "indexed": false, - "name": "info", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrowBehalf", + "outputs": [ { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ { - "indexed": false, - "name": "amount", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "name": "owner", + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "indexed": true, - "name": "spender", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "indexed": false, - "name": "amount", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - } - ], - "DAI": [ + "name": "seize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb2a02ff1" + }, { "constant": true, "inputs": [], - "name": "name", + "name": "supplyRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x06fdde03" + "signature": "0xae9d70b0" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "name": "_owner", - "type": "address" - }, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ { - "name": "value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "allocateTo", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x08bca566" + "signature": "0x47bd3718" }, { "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ { - "name": "_value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "approve", + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" + }, + { + "constant": true, + "inputs": [], + "name": "totalReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x095ea7b3" + "signature": "0x8f840ddd" }, { "constant": true, @@ -3094,6 +12047,7 @@ "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -3107,21 +12061,52 @@ "constant": false, "inputs": [ { - "name": "_from", + "internalType": "address", + "name": "dst", "type": "address" }, { - "name": "_to", + "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" }, { - "name": "_value", + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -3134,53 +12119,66 @@ { "constant": true, "inputs": [], - "name": "decimals", + "name": "underlying", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint8" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x313ce567" - }, + "signature": "0x6f307dc3" + } + ], + "Base0bps_Slope2000bps": [ { - "constant": false, "inputs": [ { - "name": "_spender", - "type": "address" + "internalType": "uint256", + "name": "baseRatePerYear", + "type": "uint256" }, { - "name": "_subtractedValue", + "internalType": "uint256", + "name": "multiplierPerYear", "type": "uint256" } ], - "name": "decreaseApproval", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], "payable": false, "stateMutability": "nonpayable", - "type": "function", - "signature": "0x66188463" + "type": "constructor", + "signature": "constructor" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "_owner", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "baseRatePerBlock", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "multiplierPerBlock", + "type": "uint256" } ], - "name": "balanceOf", + "name": "NewInterestParams", + "type": "event", + "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27" + }, + { + "constant": true, + "inputs": [], + "name": "baseRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -3188,110 +12186,178 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0xf14039de" }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "blocksPerYear", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0xa385fb96" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "_to", - "type": "address" + "internalType": "uint256", + "name": "cash", + "type": "uint256" }, { - "name": "_value", + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", "type": "uint256" } ], - "name": "transfer", + "name": "getBorrowRate", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x15f24053" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "_spender", - "type": "address" + "internalType": "uint256", + "name": "cash", + "type": "uint256" }, { - "name": "_addedValue", + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa", "type": "uint256" } ], - "name": "increaseApproval", + "name": "getSupplyRate", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xb8168816" + }, + { + "constant": true, + "inputs": [], + "name": "isInterestRateModel", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xd73dd623" + "signature": "0x2191f92a" + }, + { + "constant": true, + "inputs": [], + "name": "multiplierPerBlock", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8726bb89" }, { "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": "utilizationRate", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "pure", "type": "function", - "signature": "0xdd62ed3e" - }, + "signature": "0x6e71e2d8" + } + ], + "BAT": [ { "inputs": [ { + "internalType": "uint256", "name": "_initialAmount", "type": "uint256" }, { + "internalType": "string", "name": "_tokenName", "type": "string" }, { + "internalType": "uint8", "name": "_decimalUnits", "type": "uint8" }, { + "internalType": "string", "name": "_tokenSymbol", "type": "string" } @@ -3306,16 +12372,19 @@ "inputs": [ { "indexed": true, + "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, + "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "value", "type": "uint256" } @@ -3329,16 +12398,19 @@ "inputs": [ { "indexed": true, + "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, + "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, + "internalType": "uint256", "name": "value", "type": "uint256" } @@ -3346,559 +12418,729 @@ "name": "Transfer", "type": "event", "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - } - ], - "StdComptroller": [ + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "allocateTo", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x08bca566" + }, { "constant": true, - "inputs": [], - "name": "isComptroller", + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x007e3dd2" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "name": "payer", - "type": "address" - }, + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ { - "name": "borrower", + "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": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x70a08231" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ { - "name": "borrowerIndex", - "type": "uint256" + "internalType": "uint8", + "name": "", + "type": "uint8" } ], - "name": "repayBorrowVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x1ededc91" + "signature": "0x313ce567" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "name": "payer", - "type": "address" - }, + "internalType": "uint256", + "name": "_subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseApproval", + "outputs": [ { - "name": "borrower", + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x66188463" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_spender", "type": "address" }, { - "name": "repayAmount", + "internalType": "uint256", + "name": "_addedValue", "type": "uint256" } ], - "name": "repayBorrowAllowed", + "name": "increaseApproval", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x24008a62" + "signature": "0xd73dd623" }, { "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": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "name": "newCloseFactorMantissa", - "type": "uint256" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "_setCloseFactor", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x317b0b77" + "signature": "0x18160ddd" }, { "constant": false, "inputs": [ { - "name": "unitroller", - "type": "address" - }, - { - "name": "_oracle", + "internalType": "address", + "name": "_to", "type": "address" }, { - "name": "_closeFactorMantissa", - "type": "uint256" - }, - { - "name": "_maxAssets", + "internalType": "uint256", + "name": "_value", "type": "uint256" - }, - { - "name": "reinitializing", - "type": "bool" } ], - "name": "_become", + "name": "transfer", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x32000e00" + "signature": "0xa9059cbb" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "_from", "type": "address" }, { - "name": "minter", + "internalType": "address", + "name": "_to", "type": "address" }, { - "name": "mintAmount", - "type": "uint256" - }, - { - "name": "mintTokens", + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "mintVerify", + "name": "transferFrom", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x41c728b9" + "signature": "0x23b872dd" + } + ], + "cErc20Delegate": [ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "liquidator", - "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": "seizeTokens", + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "liquidateBorrowVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x47ef3b3b" + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { - "constant": true, - "inputs": [], - "name": "liquidationIncentiveMantissa", - "outputs": [ + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x4ada90af" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cToken", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "minter", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" }, { - "name": "mintAmount", + "indexed": false, + "internalType": "uint256", + "name": "accountBorrows", "type": "uint256" - } - ], - "name": "mintAllowed", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x4ef4c3e1" + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "newLiquidationIncentiveMantissa", + "indexed": false, + "internalType": "uint256", + "name": "error", "type": "uint256" - } - ], - "name": "_setLiquidationIncentive", - "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": "0x4fd42e17" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cToken", + "indexed": false, + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "name": "redeemer", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "redeemAmount", + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" }, { - "name": "redeemTokens", + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "redeemVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x51dff989" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "newOracle", + "indexed": false, + "internalType": "address", + "name": "minter", "type": "address" - } - ], - "name": "_setPriceOracle", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x55ee1fe1" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cToken", + "indexed": false, + "internalType": "address", + "name": "oldAdmin", "type": "address" }, { - "name": "borrower", + "indexed": false, + "internalType": "address", + "name": "newAdmin", "type": "address" - }, - { - "name": "borrowAmount", - "type": "uint256" } ], - "name": "borrowVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x5c778605" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "account", + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", "type": "address" - } - ], - "name": "getAccountLiquidity", - "outputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" }, { - "name": "", - "type": "uint256" + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x5ec88c79" + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cTokenBorrowed", + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", "type": "address" }, { - "name": "cTokenCollateral", + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", "type": "address" - }, + } + ], + "name": "NewMarketInterestRateModel", + "type": "event", + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + }, + { + "anonymous": false, + "inputs": [ { - "name": "liquidator", + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", "type": "address" }, { - "name": "borrower", + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" } ], - "name": "liquidateBorrowAllowed", - "outputs": [ + "name": "NewPendingAdmin", + "type": "event", + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x5fc7e71e" + "name": "NewReserveFactor", + "type": "event", + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "src", + "indexed": false, + "internalType": "address", + "name": "redeemer", "type": "address" }, { - "name": "dst", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" }, { - "name": "transferTokens", + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "transferVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x6a56947e" + "name": "Redeem", + "type": "event", + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "liquidator", + "indexed": false, + "internalType": "address", + "name": "payer", "type": "address" }, { + "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { - "name": "seizeTokens", + "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": "seizeVerify", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x6d35bf91" + "name": "RepayBorrow", + "type": "event", + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { - "constant": true, - "inputs": [], - "name": "oracle", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "benefactor", "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": "0x7dc0d1d0" + "name": "ReservesAdded", + "type": "event", + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "admin", "type": "address" - } - ], - "name": "markets", - "outputs": [ + }, { - "name": "isListed", - "type": "bool" + "indexed": false, + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" }, { - "name": "collateralFactorMantissa", + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x8e8f294b" + "name": "ReservesReduced", + "type": "event", + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "account", + "indexed": true, + "internalType": "address", + "name": "from", "type": "address" }, { - "name": "cToken", + "indexed": true, + "internalType": "address", + "name": "to", "type": "address" - } - ], - "name": "checkMembership", - "outputs": [ + }, { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x929fe9a1" + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "maxAssets", + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x94b2294b" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" } ], - "name": "_supportMarket", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -3906,66 +13148,69 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa76b3fda" + "signature": "0x3e941010" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", - "type": "address" + "internalType": "bytes", + "name": "data", + "type": "bytes" } ], - "name": "getAssetsIn", + "name": "_becomeImplementation", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x56e67728" + }, + { + "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": "0xabfceffc" + "signature": "0x601a0bf1" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "comptrollerImplementation", - "outputs": [ - { - "name": "", - "type": "address" - } - ], + "name": "_resignImplementation", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xbb82aa5e" + "signature": "0x153ab505" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", "type": "address" - }, - { - "name": "transferTokens", - "type": "uint256" } ], - "name": "transferAllowed", + "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -3973,87 +13218,65 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbdcdc258" + "signature": "0x4576b5db" }, { "constant": false, "inputs": [ { - "name": "cTokens", - "type": "address[]" + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "name": "enterMarkets", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "uint256[]" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xc2998238" + "signature": "0xf2b3abbd" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", + "internalType": "address payable", + "name": "newPendingAdmin", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" } ], - "name": "liquidateCalculateSeizeTokens", + "name": "_setPendingAdmin", "outputs": [ { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xc488847b" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "seizeTokens", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "seizeAllowed", + "name": "_setReserveFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4061,19 +13284,31 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd02f7351" + "signature": "0xfca7820b" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ { - "name": "newMaxAssets", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "_setMaxAssets", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6c540baf" + }, + { + "constant": false, + "inputs": [], + "name": "accrueInterest", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4081,90 +13316,113 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd9226ced" + "signature": "0xa6afed95" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ { - "name": "cToken", + "internalType": "address payable", + "name": "", "type": "address" - }, + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" + }, + { + "constant": true, + "inputs": [ { - "name": "borrower", + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "borrowAmount", - "type": "uint256" + "internalType": "address", + "name": "spender", + "type": "address" } ], - "name": "borrowAllowed", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xda3d454c" + "signature": "0xdd62ed3e" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "", + "internalType": "address", + "name": "spender", "type": "address" }, { - "name": "", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "accountAssets", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xdce15449" + "signature": "0x095ea7b3" }, { "constant": true, - "inputs": [], - "name": "pendingComptrollerImplementation", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdcfbc0c7" + "signature": "0x70a08231" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "owner", "type": "address" - }, - { - "name": "newCollateralFactorMantissa", - "type": "uint256" } ], - "name": "_setCollateralFactor", + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4172,42 +13430,43 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe4028eee" + "signature": "0x3af9e669" }, { - "constant": true, - "inputs": [], - "name": "closeFactorMantissa", + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xe8755446" + "signature": "0xc5ebeaec" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "redeemer", + "internalType": "address", + "name": "account", "type": "address" - }, - { - "name": "redeemTokens", - "type": "uint256" } ], - "name": "redeemAllowed", + "name": "borrowBalanceCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4215,225 +13474,186 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xeabe7d91" + "signature": "0x17bfdfbc" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cTokenAddress", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "exitMarket", + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xede4edd0" + "signature": "0x95dd9193" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0xaa5af0fd" }, { + "constant": true, "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "cToken", - "type": "address" - } - ], - "name": "MarketListed", - "type": "event", - "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "cToken", - "type": "address" - }, - { - "indexed": false, - "name": "account", - "type": "address" - } - ], - "name": "MarketEntered", - "type": "event", - "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "cToken", - "type": "address" - }, - { - "indexed": false, - "name": "account", - "type": "address" - } - ], - "name": "MarketExited", - "type": "event", - "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldCloseFactorMantissa", - "type": "uint256" - }, + "name": "borrowRatePerBlock", + "outputs": [ { - "indexed": false, - "name": "newCloseFactorMantissa", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewCloseFactor", - "type": "event", - "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf8f9da28" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ { - "indexed": false, - "name": "cToken", + "internalType": "contract ComptrollerInterface", + "name": "", "type": "address" - }, - { - "indexed": false, - "name": "oldCollateralFactorMantissa", - "type": "uint256" - }, - { - "indexed": false, - "name": "newCollateralFactorMantissa", - "type": "uint256" } ], - "name": "NewCollateralFactor", - "type": "event", - "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x5fe3b567" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldLiquidationIncentiveMantissa", - "type": "uint256" - }, + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ { - "indexed": false, - "name": "newLiquidationIncentiveMantissa", - "type": "uint256" + "internalType": "uint8", + "name": "", + "type": "uint8" } ], - "name": "NewLiquidationIncentive", - "type": "event", - "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldMaxAssets", - "type": "uint256" - }, + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ { - "indexed": false, - "name": "newMaxAssets", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "NewMaxAssets", - "type": "event", - "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbd6d894d" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldPriceOracle", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ { - "indexed": false, - "name": "newPriceOracle", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewPriceOracle", - "type": "event", - "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x182df0f5" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": false, - "name": "error", + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ + { + "internalType": "uint256", + "name": "", "type": "uint256" }, { - "indexed": false, - "name": "info", + "internalType": "uint256", + "name": "", "type": "uint256" }, { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - } - ], - "Unitroller": [ + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xc37f68e2" + }, { "constant": true, "inputs": [], - "name": "pendingAdmin", + "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" } @@ -4441,84 +13661,150 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x26782247" + "signature": "0x5c60da1b" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", + "internalType": "address", + "name": "underlying_", "type": "address" - } - ], - "name": "_setPendingAdmin", - "outputs": [ + }, { - "name": "", + "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": "0xb71d1a0c" + "signature": "0x1a31d465" }, { - "constant": true, - "inputs": [], - "name": "comptrollerImplementation", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "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": "0xbb82aa5e" + "signature": "0x99d8c1b4" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptImplementation", + "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc1e80334" + "signature": "0xf3fdb15a" }, { "constant": true, "inputs": [], - "name": "pendingComptrollerImplementation", + "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdcfbc0c7" + "signature": "0xfe9c44ae" }, { "constant": false, "inputs": [ { - "name": "newPendingImplementation", + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", "type": "address" } ], - "name": "_setPendingImplementation", + "name": "liquidateBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4526,14 +13812,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe992a041" + "signature": "0xf5e3c462" }, { "constant": false, - "inputs": [], - "name": "_acceptAdmin", + "inputs": [ + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "mint", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4541,158 +13834,172 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe9c714f2" + "signature": "0xa0712d68" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "address" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0x06fdde03" }, { + "constant": true, "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldPendingImplementation", - "type": "address" - }, + "name": "pendingAdmin", + "outputs": [ { - "indexed": false, - "name": "newPendingImplementation", + "internalType": "address payable", + "name": "", "type": "address" } ], - "name": "NewPendingImplementation", - "type": "event", - "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldImplementation", - "type": "address" - }, + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" + } + ], + "name": "redeem", + "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": "0xdb006a75" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" - }, + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", + "outputs": [ { - "indexed": false, - "name": "newPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x852a12e3" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldAdmin", - "type": "address" - }, + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", + "outputs": [ { - "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "error", - "type": "uint256" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "indexed": false, - "name": "info", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrowBehalf", + "outputs": [ { - "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - } - ], - "Comptroller": [ + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" + }, { "constant": true, "inputs": [], - "name": "pendingAdmin", + "name": "reserveFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x26782247" + "signature": "0x173b9904" }, { "constant": false, "inputs": [ { - "name": "newPendingAdmin", + "internalType": "address", + "name": "liquidator", + "type": "address" + }, + { + "internalType": "address", + "name": "borrower", "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", + "type": "uint256" } ], - "name": "_setPendingAdmin", + "name": "seize", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4700,29 +14007,63 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb71d1a0c" + "signature": "0xb2a02ff1" }, { "constant": true, "inputs": [], - "name": "comptrollerImplementation", + "name": "supplyRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xbb82aa5e" + "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": "_acceptImplementation", + "name": "totalBorrowsCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4730,64 +14071,106 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xc1e80334" + "signature": "0x73acee98" }, { "constant": true, "inputs": [], - "name": "pendingComptrollerImplementation", + "name": "totalReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdcfbc0c7" + "signature": "0x8f840ddd" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "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" } @@ -4795,8 +14178,10 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" - }, + "signature": "0x6f307dc3" + } + ], + "StdComptrollerG1": [ { "inputs": [], "payable": false, @@ -4805,174 +14190,267 @@ "signature": "constructor" }, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" + "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, - "name": "oldPendingImplementation", + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { "indexed": false, - "name": "newPendingImplementation", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "NewPendingImplementation", + "name": "MarketEntered", "type": "event", - "signature": "0xe945ccee5d701fc83f9b8aa8ca94ea4219ec1fcbd4f4cab4f0ea57c5c3e1d815" + "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" }, { "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": "MarketExited", "type": "event", - "signature": "0xd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a" + "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldPendingAdmin", + "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, - "name": "newPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "newCloseFactorMantissa", + "type": "uint256" } ], - "name": "NewPendingAdmin", + "name": "NewCloseFactor", "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldAdmin", + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "uint256", + "name": "oldCollateralFactorMantissa", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newCollateralFactorMantissa", + "type": "uint256" } ], - "name": "NewAdmin", + "name": "NewCollateralFactor", "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "error", + "internalType": "uint256", + "name": "oldLiquidationIncentiveMantissa", "type": "uint256" }, { "indexed": false, - "name": "info", + "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, - "name": "detail", + "internalType": "uint256", + "name": "newMaxAssets", "type": "uint256" } ], - "name": "Failure", + "name": "NewMaxAssets", "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" }, { - "constant": true, - "inputs": [], - "name": "isComptroller", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "contract PriceOracle", + "name": "oldPriceOracle", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract PriceOracle", + "name": "newPriceOracle", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x007e3dd2" + "name": "NewPriceOracle", + "type": "event", + "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" }, { "constant": false, "inputs": [ { - "name": "cToken", + "internalType": "contract Unitroller", + "name": "unitroller", "type": "address" }, { - "name": "payer", + "internalType": "contract PriceOracle", + "name": "_oracle", "type": "address" }, { - "name": "borrower", - "type": "address" + "internalType": "uint256", + "name": "_closeFactorMantissa", + "type": "uint256" }, { - "name": "repayAmount", + "internalType": "uint256", + "name": "_maxAssets", "type": "uint256" }, { - "name": "borrowerIndex", - "type": "uint256" + "internalType": "bool", + "name": "reinitializing", + "type": "bool" } ], - "name": "repayBorrowVerify", + "name": "_become", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x1ededc91" + "signature": "0x32000e00" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, + "internalType": "uint256", + "name": "newCloseFactorMantissa", + "type": "uint256" + } + ], + "name": "_setCloseFactor", + "outputs": [ { - "name": "payer", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x317b0b77" + }, + { + "constant": false, + "inputs": [ { - "name": "borrower", + "internalType": "contract CToken", + "name": "cToken", "type": "address" }, { - "name": "repayAmount", + "internalType": "uint256", + "name": "newCollateralFactorMantissa", "type": "uint256" } ], - "name": "repayBorrowAllowed", + "name": "_setCollateralFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -4980,34 +14458,43 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x24008a62" + "signature": "0xe4028eee" }, { - "constant": true, - "inputs": [], - "name": "pendingAdmin", + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "newLiquidationIncentiveMantissa", + "type": "uint256" + } + ], + "name": "_setLiquidationIncentive", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x26782247" + "signature": "0x4fd42e17" }, { "constant": false, "inputs": [ { - "name": "newCloseFactorMantissa", + "internalType": "uint256", + "name": "newMaxAssets", "type": "uint256" } ], - "name": "_setCloseFactor", + "name": "_setMaxAssets", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5015,135 +14502,118 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x317b0b77" + "signature": "0xd9226ced" }, { "constant": false, "inputs": [ { - "name": "unitroller", - "type": "address" - }, - { - "name": "_oracle", + "internalType": "contract PriceOracle", + "name": "newOracle", "type": "address" - }, - { - "name": "_closeFactorMantissa", - "type": "uint256" - }, + } + ], + "name": "_setPriceOracle", + "outputs": [ { - "name": "_maxAssets", + "internalType": "uint256", + "name": "", "type": "uint256" - }, - { - "name": "reinitializing", - "type": "bool" } ], - "name": "_become", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x32000e00" + "signature": "0x55ee1fe1" }, { "constant": false, "inputs": [ { + "internalType": "contract CToken", "name": "cToken", "type": "address" - }, - { - "name": "minter", - "type": "address" - }, - { - "name": "mintAmount", - "type": "uint256" - }, + } + ], + "name": "_supportMarket", + "outputs": [ { - "name": "mintTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "mintVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x41c728b9" + "signature": "0xa76b3fda" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cTokenBorrowed", - "type": "address" - }, - { - "name": "cTokenCollateral", - "type": "address" - }, - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", + "internalType": "address", + "name": "", "type": "address" }, { - "name": "repayAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "name": "accountAssets", + "outputs": [ { - "name": "seizeTokens", - "type": "uint256" + "internalType": "contract CToken", + "name": "", + "type": "address" } ], - "name": "liquidateBorrowVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x47ef3b3b" + "signature": "0xdce15449" }, { "constant": true, "inputs": [], - "name": "liquidationIncentiveMantissa", + "name": "admin", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x4ada90af" + "signature": "0xf851a440" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "cToken", "type": "address" }, { - "name": "minter", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "mintAmount", + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], - "name": "mintAllowed", + "name": "borrowAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5151,102 +14621,142 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4ef4c3e1" + "signature": "0xda3d454c" }, { "constant": false, "inputs": [ { - "name": "newLiquidationIncentiveMantissa", - "type": "uint256" - } - ], - "name": "_setLiquidationIncentive", - "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": "0x4fd42e17" + "signature": "0x5c778605" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cToken", + "internalType": "address", + "name": "account", "type": "address" }, { - "name": "redeemer", + "internalType": "contract CToken", + "name": "cToken", "type": "address" - }, + } + ], + "name": "checkMembership", + "outputs": [ { - "name": "redeemAmount", + "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": [ { - "name": "redeemTokens", - "type": "uint256" + "internalType": "address", + "name": "", + "type": "address" } ], - "name": "redeemVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x51dff989" + "signature": "0xbb82aa5e" }, { "constant": false, "inputs": [ { - "name": "newOracle", - "type": "address" + "internalType": "address[]", + "name": "cTokens", + "type": "address[]" } ], - "name": "_setPriceOracle", + "name": "enterMarkets", "outputs": [ { + "internalType": "uint256[]", "name": "", - "type": "uint256" + "type": "uint256[]" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x55ee1fe1" + "signature": "0xc2998238" }, { "constant": false, "inputs": [ { - "name": "cToken", - "type": "address" - }, - { - "name": "borrower", + "internalType": "address", + "name": "cTokenAddress", "type": "address" - }, + } + ], + "name": "exitMarket", + "outputs": [ { - "name": "borrowAmount", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "borrowVerify", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x5c778605" + "signature": "0xede4edd0" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "account", "type": "address" } @@ -5254,14 +14764,17 @@ "name": "getAccountLiquidity", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" }, { + "internalType": "uint256", "name": "", "type": "uint256" }, { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5271,26 +14784,69 @@ "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" } @@ -5298,6 +14854,7 @@ "name": "liquidateBorrowAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5311,79 +14868,101 @@ "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" + }, + { + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "transferVerify", + "name": "liquidateBorrowVerify", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x6a56947e" + "signature": "0x47ef3b3b" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "cTokenCollateral", - "type": "address" - }, - { + "internalType": "address", "name": "cTokenBorrowed", "type": "address" }, { - "name": "liquidator", + "internalType": "address", + "name": "cTokenCollateral", "type": "address" }, { - "name": "borrower", - "type": "address" + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "liquidateCalculateSeizeTokens", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" }, { - "name": "seizeTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "seizeVerify", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x6d35bf91" + "signature": "0xc488847b" }, { "constant": true, "inputs": [], - "name": "oracle", + "name": "liquidationIncentiveMantissa", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x7dc0d1d0" + "signature": "0x4ada90af" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -5391,10 +14970,12 @@ "name": "markets", "outputs": [ { + "internalType": "bool", "name": "isListed", "type": "bool" }, { + "internalType": "uint256", "name": "collateralFactorMantissa", "type": "uint256" } @@ -5406,121 +14987,222 @@ }, { "constant": true, + "inputs": [], + "name": "maxAssets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x94b2294b" + }, + { + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "cToken", "type": "address" }, { - "name": "cToken", + "internalType": "address", + "name": "minter", "type": "address" + }, + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" } ], - "name": "checkMembership", + "name": "mintAllowed", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x929fe9a1" + "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": "maxAssets", + "name": "oracle", "outputs": [ { + "internalType": "contract PriceOracle", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x94b2294b" + "signature": "0x7dc0d1d0" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "pendingAdmin", + "outputs": [ { - "name": "cToken", + "internalType": "address", + "name": "", "type": "address" } ], - "name": "_supportMarket", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x26782247" + }, + { + "constant": true, + "inputs": [], + "name": "pendingComptrollerImplementation", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa76b3fda" + "signature": "0xdcfbc0c7" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "cToken", + "type": "address" + }, + { + "internalType": "address", + "name": "redeemer", "type": "address" + }, + { + "internalType": "uint256", + "name": "redeemTokens", + "type": "uint256" } ], - "name": "getAssetsIn", + "name": "redeemAllowed", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address[]" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xabfceffc" + "signature": "0xeabe7d91" }, { - "constant": true, - "inputs": [], - "name": "comptrollerImplementation", - "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": "0xbb82aa5e" + "signature": "0x51dff989" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "cToken", "type": "address" }, { - "name": "src", + "internalType": "address", + "name": "payer", "type": "address" }, { - "name": "dst", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "transferTokens", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "transferAllowed", + "name": "repayBorrowAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5528,107 +15210,150 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbdcdc258" + "signature": "0x24008a62" }, { "constant": false, "inputs": [ { - "name": "cTokens", - "type": "address[]" - } - ], - "name": "enterMarkets", - "outputs": [ + "internalType": "address", + "name": "cToken", + "type": "address" + }, { - "name": "", - "type": "uint256[]" + "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": "0xc2998238" + "signature": "0x1ededc91" }, { - "constant": true, + "constant": false, "inputs": [ { + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "internalType": "address", "name": "cTokenBorrowed", "type": "address" }, { - "name": "cTokenCollateral", + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "name": "repayAmount", + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "liquidateCalculateSeizeTokens", + "name": "seizeAllowed", "outputs": [ { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xc488847b" + "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": "seizeAllowed", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], + "name": "seizeVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd02f7351" + "signature": "0x6d35bf91" }, { "constant": false, "inputs": [ { - "name": "newMaxAssets", + "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": "_setMaxAssets", + "name": "transferAllowed", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -5636,403 +15361,628 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd9226ced" + "signature": "0xbdcdc258" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "cToken", "type": "address" }, { - "name": "borrower", + "internalType": "address", + "name": "src", "type": "address" }, { - "name": "borrowAmount", - "type": "uint256" - } - ], - "name": "borrowAllowed", - "outputs": [ + "internalType": "address", + "name": "dst", + "type": "address" + }, { - "name": "", + "internalType": "uint256", + "name": "transferTokens", "type": "uint256" } ], + "name": "transferVerify", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xda3d454c" - }, + "signature": "0x6a56947e" + } + ], + "cETH": [ { - "constant": true, "inputs": [ { - "name": "", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", "type": "address" }, { - "name": "", + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "name": "accountAssets", - "outputs": [ + }, { - "name": "", + "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": "0xdce15449" + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": true, - "inputs": [], - "name": "pendingComptrollerImplementation", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "address" + "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" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xdcfbc0c7" + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cToken", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "newCollateralFactorMantissa", + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "_setCollateralFactor", - "outputs": [ + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "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": "0xe4028eee" + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" }, { - "constant": true, - "inputs": [], - "name": "closeFactorMantissa", - "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": "0xe8755446" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cToken", + "indexed": false, + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "name": "redeemer", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "redeemTokens", + "indexed": false, + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" - } - ], - "name": "redeemAllowed", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "address", + "name": "cTokenCollateral", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xeabe7d91" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "cTokenAddress", + "indexed": false, + "internalType": "address", + "name": "minter", "type": "address" - } - ], - "name": "exitMarket", - "outputs": [ + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xede4edd0" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf851a440" - }, - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "cToken", + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", "type": "address" } ], - "name": "MarketListed", + "name": "NewComptroller", "type": "event", - "signature": "0xcf583bb0c569eb967f806b11601c4cb93c10310485c67add5f8362c2f212321f" + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "cToken", + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", "type": "address" }, { "indexed": false, - "name": "account", + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", "type": "address" } ], - "name": "MarketEntered", + "name": "NewMarketInterestRateModel", "type": "event", - "signature": "0x3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a5" + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "cToken", + "internalType": "address", + "name": "oldPendingAdmin", "type": "address" }, { "indexed": false, - "name": "account", + "internalType": "address", + "name": "newPendingAdmin", "type": "address" } ], - "name": "MarketExited", + "name": "NewPendingAdmin", "type": "event", - "signature": "0xe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d" + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldCloseFactorMantissa", + "internalType": "uint256", + "name": "oldReserveFactorMantissa", "type": "uint256" }, { "indexed": false, - "name": "newCloseFactorMantissa", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "NewCloseFactor", + "name": "NewReserveFactor", "type": "event", - "signature": "0x3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9" + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "cToken", + "internalType": "address", + "name": "redeemer", "type": "address" }, { "indexed": false, - "name": "oldCollateralFactorMantissa", + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" }, { "indexed": false, - "name": "newCollateralFactorMantissa", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "NewCollateralFactor", + "name": "Redeem", "type": "event", - "signature": "0x70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5" + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldLiquidationIncentiveMantissa", + "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": "newLiquidationIncentiveMantissa", + "internalType": "uint256", + "name": "accountBorrows", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "NewLiquidationIncentive", + "name": "RepayBorrow", "type": "event", - "signature": "0xaeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316" + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldMaxAssets", + "internalType": "address", + "name": "benefactor", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "addAmount", "type": "uint256" }, { "indexed": false, - "name": "newMaxAssets", + "internalType": "uint256", + "name": "newTotalReserves", "type": "uint256" } ], - "name": "NewMaxAssets", + "name": "ReservesAdded", "type": "event", - "signature": "0x7093cf1eb653f749c3ff531d6df7f92764536a7fa0d13530cd26e070780c32ea" + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "oldPriceOracle", + "internalType": "address", + "name": "admin", "type": "address" }, { "indexed": false, - "name": "newPriceOracle", - "type": "address" + "internalType": "uint256", + "name": "reduceAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "name": "NewPriceOracle", + "name": "ReservesReduced", "type": "event", - "signature": "0xd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22" + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "error", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" }, { "indexed": false, - "name": "info", + "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": "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": [ { - "indexed": false, - "name": "detail", - "type": "uint256" + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "name": "Failure", - "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" - } - ], - "cBAT": [ - { - "constant": true, - "inputs": [], - "name": "name", + "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" } @@ -6040,14 +15990,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x0e752702" + "signature": "0xfca7820b" }, { "constant": true, "inputs": [], - "name": "reserveFactorMantissa", + "name": "accrualBlockNumber", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6055,19 +16006,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" } @@ -6075,29 +16022,42 @@ "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", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6105,27 +16065,26 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x182df0f5" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "internalType": "address", + "name": "spender", "type": "address" }, { + "internalType": "uint256", "name": "amount", "type": "uint256" } ], - "name": "transferFrom", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -6133,73 +16092,87 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0x095ea7b3" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "borrower", + "internalType": "address", + "name": "owner", "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" } ], - "name": "repayBorrowBehalf", + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x2608f818" + "signature": "0x70a08231" }, { - "constant": true, - "inputs": [], - "name": "pendingAdmin", + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x26782247" + "signature": "0x3af9e669" }, { - "constant": true, - "inputs": [], - "name": "decimals", + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" + } + ], + "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x313ce567" + "signature": "0xc5ebeaec" }, { "constant": false, "inputs": [ { - "name": "owner", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "balanceOfUnderlying", + "name": "borrowBalanceCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6207,14 +16180,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x3af9e669" + "signature": "0x17bfdfbc" }, { "constant": true, - "inputs": [], - "name": "getCash", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6222,34 +16202,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x95dd9193" }, { - "constant": false, - "inputs": [ - { - "name": "newComptroller", - "type": "address" - } - ], - "name": "_setComptroller", + "constant": true, + "inputs": [], + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x4576b5db" + "signature": "0xaa5af0fd" }, { "constant": true, "inputs": [], - "name": "totalBorrows", + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6257,7 +16234,7 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x47bd3718" + "signature": "0xf8f9da28" }, { "constant": true, @@ -6265,6 +16242,7 @@ "name": "comptroller", "outputs": [ { + "internalType": "contract ComptrollerInterface", "name": "", "type": "address" } @@ -6275,16 +16253,28 @@ "signature": "0x5fe3b567" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ { - "name": "reduceAmount", - "type": "uint256" + "internalType": "uint8", + "name": "", + "type": "uint8" } ], - "name": "_reduceReserves", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" + }, + { + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6292,14 +16282,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0xbd6d894d" }, { "constant": true, "inputs": [], - "name": "initialExchangeRateMantissa", + "name": "exchangeRateStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -6307,14 +16298,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" } @@ -6322,139 +16335,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" } @@ -6462,53 +16531,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" }, { - "name": "amount", + "internalType": "address", + "name": "borrower", + "type": "address" + }, + { + "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" } @@ -6516,62 +16621,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" } @@ -6579,46 +16669,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" } @@ -6626,63 +16701,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" } @@ -6690,107 +16816,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" } @@ -6798,72 +16933,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" + } + ], + "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, @@ -6876,90 +17022,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" } @@ -6973,59 +17112,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" } @@ -7039,29 +17176,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" } @@ -7075,11 +17222,13 @@ "inputs": [ { "indexed": false, + "internalType": "contract ComptrollerInterface", "name": "oldComptroller", "type": "address" }, { "indexed": false, + "internalType": "contract ComptrollerInterface", "name": "newComptroller", "type": "address" } @@ -7093,11 +17242,13 @@ "inputs": [ { "indexed": false, + "internalType": "contract InterestRateModel", "name": "oldInterestRateModel", "type": "address" }, { "indexed": false, + "internalType": "contract InterestRateModel", "name": "newInterestRateModel", "type": "address" } @@ -7111,11 +17262,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" } @@ -7129,62 +17302,135 @@ "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, + "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, - "name": "info", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" }, { "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "newTotalReserves", "type": "uint256" } ], - "name": "Failure", + "name": "ReservesReduced", "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "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" } @@ -7194,68 +17440,160 @@ "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { - "anonymous": false, - "inputs": [ + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ { - "indexed": true, - "name": "owner", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xe9c714f2" + }, + { + "constant": false, + "inputs": [ { - "indexed": true, - "name": "spender", - "type": "address" - }, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + } + ], + "name": "_addReserves", + "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": "0x3e941010" + }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "cash", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" - }, + } + ], + "name": "_reduceReserves", + "outputs": [ { - "name": "borrows", + "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": [ { - "name": "_reserves", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "getBorrowRate", + "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": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x15f24053" + "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": "multiplier", + "name": "accrualBlockNumber", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7263,44 +17601,58 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x1b3ed722" + "signature": "0x6c540baf" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "baseRate", + "name": "accrueInterest", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x1f68f20a" + "signature": "0xa6afed95" }, { "constant": true, "inputs": [], - "name": "isInterestRateModel", + "name": "admin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x2191f92a" + "signature": "0xf851a440" }, { "constant": true, - "inputs": [], - "name": "blocksPerYear", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7308,90 +17660,168 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xa385fb96" + "signature": "0xdd62ed3e" }, { + "constant": false, "inputs": [ { - "name": "baseRate_", - "type": "uint256" + "internalType": "address", + "name": "spender", + "type": "address" }, { - "name": "multiplier_", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - } - ], - "BAT": [ + "type": "function", + "signature": "0x095ea7b3" + }, { "constant": true, - "inputs": [], - "name": "name", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x06fdde03" + "signature": "0x70a08231" }, { "constant": false, "inputs": [ { - "name": "_owner", + "internalType": "address", + "name": "owner", "type": "address" - }, + } + ], + "name": "balanceOfUnderlying", + "outputs": [ { - "name": "value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "allocateTo", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x08bca566" + "signature": "0x3af9e669" }, { "constant": false, "inputs": [ { - "name": "_spender", + "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": [ { - "name": "_value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "approve", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95dd9193" + }, + { + "constant": true, + "inputs": [], + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x095ea7b3" + "signature": "0xaa5af0fd" }, { "constant": true, "inputs": [], - "name": "totalSupply", + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7399,30 +17829,23 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x18160ddd" + "signature": "0xf8f9da28" }, { - "constant": false, - "inputs": [ - { - "name": "_from", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "comptroller", + "outputs": [ { - "name": "_to", + "internalType": "contract ComptrollerInterface", + "name": "", "type": "address" - }, - { - "name": "_value", - "type": "uint256" } ], - "name": "transferFrom", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x23b872dd" + "signature": "0x5fe3b567" }, { "constant": true, @@ -7430,6 +17853,7 @@ "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", "type": "uint8" } @@ -7441,39 +17865,64 @@ }, { "constant": false, - "inputs": [ - { - "name": "_spender", - "type": "address" - }, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ { - "name": "_subtractedValue", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "decreaseApproval", + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbd6d894d" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x66188463" + "signature": "0x182df0f5" }, { "constant": true, "inputs": [ { - "name": "_owner", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "balanceOf", + "name": "getAccountSnapshot", "outputs": [ { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7481,237 +17930,286 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x70a08231" + "signature": "0xc37f68e2" }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0x3b1d21a2" }, { "constant": false, "inputs": [ { - "name": "_to", + "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": "transfer", + "name": "initialize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x1a31d465" }, { "constant": false, "inputs": [ { - "name": "_spender", + "internalType": "contract ComptrollerInterface", + "name": "comptroller_", "type": "address" }, { - "name": "_addedValue", + "internalType": "contract InterestRateModel", + "name": "interestRateModel_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "initialExchangeRateMantissa_", "type": "uint256" - } - ], - "name": "increaseApproval", - "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": "0xd73dd623" + "signature": "0x99d8c1b4" }, { "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, + "inputs": [], + "name": "interestRateModel", + "outputs": [ { - "name": "_spender", + "internalType": "contract InterestRateModel", + "name": "", "type": "address" } ], - "name": "allowance", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf3fdb15a" + }, + { + "constant": true, + "inputs": [], + "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0xfe9c44ae" }, { + "constant": false, "inputs": [ { - "name": "_initialAmount", - "type": "uint256" + "internalType": "address", + "name": "borrower", + "type": "address" }, { - "name": "_tokenName", - "type": "string" + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" }, { - "name": "_decimalUnits", - "type": "uint8" - }, + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" + } + ], + "name": "liquidateBorrow", + "outputs": [ { - "name": "_tokenSymbol", - "type": "string" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "type": "function", + "signature": "0xf5e3c462" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address" - }, + "name": "mint", + "outputs": [ { - "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - } - ], - "cETH": [ + "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": "name", + "name": "pendingAdmin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "string" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x06fdde03" + "signature": "0x26782247" }, { "constant": false, "inputs": [ { - "name": "spender", - "type": "address" - }, - { - "name": "amount", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "approve", + "name": "redeem", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0xdb006a75" }, { "constant": false, - "inputs": [], - "name": "mint", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function", - "signature": "0x1249c58b" - }, - { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", + "inputs": [ + { + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + } + ], + "name": "redeemUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x173b9904" + "signature": "0x852a12e3" }, { "constant": false, "inputs": [ { - "name": "account", - "type": "address" + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" } ], - "name": "borrowBalanceCurrent", + "name": "repayBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7719,29 +18217,42 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x17bfdfbc" + "signature": "0x0e752702" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", + "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": "0x18160ddd" + "signature": "0x2608f818" }, { "constant": true, "inputs": [], - "name": "exchangeRateStored", + "name": "reserveFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7749,127 +18260,127 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x182df0f5" + "signature": "0x173b9904" }, { "constant": false, "inputs": [ { - "name": "src", + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "name": "dst", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "amount", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" } ], - "name": "transferFrom", + "name": "seize", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "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": true, "inputs": [], - "name": "decimals", + "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x313ce567" + "signature": "0x95d89b41" }, { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "balanceOfUnderlying", + "constant": true, + "inputs": [], + "name": "totalBorrows", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x3af9e669" + "signature": "0x47bd3718" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "getCash", + "name": "totalBorrowsCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x73acee98" }, { - "constant": false, - "inputs": [ - { - "name": "newComptroller", - "type": "address" - } - ], - "name": "_setComptroller", + "constant": true, + "inputs": [], + "name": "totalReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x4576b5db" + "signature": "0x8f840ddd" }, { "constant": true, "inputs": [], - "name": "totalBorrows", + "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -7877,144 +18388,289 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x47bd3718" + "signature": "0x18160ddd" }, { "constant": false, - "inputs": [], - "name": "repayBorrow", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function", - "signature": "0x4e4d9fea" - }, - { - "constant": true, - "inputs": [], - "name": "comptroller", + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5fe3b567" + "signature": "0xa9059cbb" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "_reduceReserves", + "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0x23b872dd" }, { "constant": true, "inputs": [], - "name": "initialExchangeRateMantissa", + "name": "underlying", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x675d972c" + "signature": "0x6f307dc3" + } + ], + "Timelock": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "delay_", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": true, - "inputs": [], - "name": "accrualBlockNumber", - "outputs": [ + "anonymous": false, + "inputs": [ + { + "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" + } + ], + "name": "CancelTransaction", + "type": "event", + "signature": "0x2fffc091a501fd91bfbff27141450d3acb40fb8e6d8382b243ec7a812a3aaf87" + }, + { + "anonymous": false, + "inputs": [ + { + "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": "", + "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": "0x6c540baf" + "name": "ExecuteTransaction", + "type": "event", + "signature": "0xa560e3198060a2f10670c1ec5b403077ea6ae93ca8de1c32b451dc1a943cd6e7" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "owner", + "indexed": true, + "internalType": "address", + "name": "newAdmin", "type": "address" } ], - "name": "balanceOf", - "outputs": [ + "name": "NewAdmin", + "type": "event", + "signature": "0x71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": true, + "internalType": "uint256", + "name": "newDelay", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" + "name": "NewDelay", + "type": "event", + "signature": "0x948b1f6a42ee138b7e34058ba85a37f716d55ff25ff05a763f15bed6a04c8d2c" }, { - "constant": false, - "inputs": [], - "name": "totalBorrowsCurrent", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x73acee98" + "name": "NewPendingAdmin", + "type": "event", + "signature": "0x69d78e38a01985fbb1462961809b4b2d65531bc93b2b94037f3334b82ca4a756" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "redeemAmount", + "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": "redeemUnderlying", - "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": "0x852a12e3" + "name": "QueueTransaction", + "type": "event", + "signature": "0x76e2796dc3a81d57b0e8504b647febcbeeb5f4af818e164f11eef8131a6a763f" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" }, { "constant": true, "inputs": [], - "name": "totalReserves", + "name": "GRACE_PERIOD", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8022,34 +18678,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x8f840ddd" + "signature": "0xc1a287e2" }, { "constant": true, "inputs": [], - "name": "symbol", + "name": "MAXIMUM_DELAY", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0x7d645fab" }, { "constant": true, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "borrowBalanceStored", + "inputs": [], + "name": "MINIMUM_DELAY", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8057,53 +18710,77 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95dd9193" + "signature": "0xb1b43ae5" }, { "constant": false, "inputs": [], - "name": "accrueInterest", + "name": "acceptAdmin", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e18b681" + }, + { + "constant": true, + "inputs": [], + "name": "admin", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa6afed95" + "signature": "0xf851a440" }, { "constant": false, "inputs": [ { - "name": "dst", + "internalType": "address", + "name": "target", "type": "address" }, { - "name": "amount", + "internalType": "uint256", + "name": "value", "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ + }, { - "name": "", - "type": "bool" + "internalType": "string", + "name": "signature", + "type": "string" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "eta", + "type": "uint256" } ], + "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" } @@ -8111,192 +18788,294 @@ "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": "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": "nonpayable", + "type": "constructor", + "signature": "constructor" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "baseRatePerBlock", "type": "uint256" }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "multiplierPerBlock", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xc37f68e2" + "name": "NewInterestParams", + "type": "event", + "signature": "0xf35fa19c15e9ba782633a5df62a98b20217151addc68e3ff2cd623a48d37ec27" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "baseRatePerBlock", + "outputs": [ { - "name": "borrowAmount", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "borrow", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf14039de" + }, + { + "constant": true, + "inputs": [], + "name": "blocksPerYear", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0xa385fb96" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "redeemTokens", + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", "type": "uint256" } ], - "name": "redeem", + "name": "getBorrowRate", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xdb006a75" + "signature": "0x15f24053" }, { "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" + }, + { + "internalType": "uint256", + "name": "reserveFactorMantissa", + "type": "uint256" } ], - "name": "allowance", + "name": "getSupplyRate", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8304,236 +19083,420 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0xb8168816" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "isInterestRateModel", + "outputs": [ { - "name": "borrower", - "type": "address" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "repayBorrowBehalf", - "outputs": [], - "payable": true, - "stateMutability": "payable", + "payable": false, + "stateMutability": "view", "type": "function", - "signature": "0xe5974619" + "signature": "0x2191f92a" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "multiplierPerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x8726bb89" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "newInterestRateModel", - "type": "address" + "internalType": "uint256", + "name": "cash", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrows", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reserves", + "type": "uint256" } ], - "name": "_setInterestRateModel", + "name": "utilizationRate", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "pure", "type": "function", - "signature": "0xf2b3abbd" - }, + "signature": "0x6e71e2d8" + } + ], + "cREP": [ { - "constant": true, - "inputs": [], - "name": "interestRateModel", - "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": "0xf3fdb15a" + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "address" + "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" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf851a440" + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { - "constant": true, - "inputs": [], - "name": "borrowRatePerBlock", - "outputs": [ + "anonymous": false, + "inputs": [ { - "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": "0xf8f9da28" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "newReserveFactorMantissa", + "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": "_setReserveFactor", - "outputs": [ + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + }, + { + "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": "nonpayable", - "type": "function", - "signature": "0xfca7820b" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": true, - "inputs": [], - "name": "isCToken", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "bool" + "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" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xfe9c44ae" + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" }, { + "anonymous": false, "inputs": [ { - "name": "comptroller_", - "type": "address" - }, - { - "name": "interestRateModel_", + "indexed": false, + "internalType": "address", + "name": "minter", "type": "address" }, { - "name": "initialExchangeRateMantissa_", + "indexed": false, + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" }, { - "name": "name_", - "type": "string" - }, - { - "name": "symbol_", - "type": "string" - }, - { - "name": "decimals_", + "indexed": false, + "internalType": "uint256", + "name": "mintTokens", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" + "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, - "name": "interestAccumulated", - "type": "uint256" + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" }, { "indexed": false, - "name": "borrowIndex", - "type": "uint256" + "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, - "name": "totalBorrows", - "type": "uint256" + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" } ], - "name": "AccrueInterest", + "name": "NewMarketInterestRateModel", "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "minter", + "internalType": "address", + "name": "oldPendingAdmin", "type": "address" }, { "indexed": false, - "name": "mintAmount", + "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": "mintTokens", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "Mint", + "name": "NewReserveFactor", "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "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" } @@ -8547,302 +19510,468 @@ "inputs": [ { "indexed": false, + "internalType": "address", + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, - "name": "borrowAmount", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "accountBorrows", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], - "name": "Borrow", + "name": "RepayBorrow", "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "payer", + "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, + "internalType": "address", + "name": "admin", + "type": "address" }, { "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" }, { "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "newTotalReserves", "type": "uint256" } ], - "name": "RepayBorrow", + "name": "ReservesReduced", "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "liquidator", + "indexed": true, + "internalType": "address", + "name": "from", "type": "address" }, { - "indexed": false, - "name": "borrower", + "indexed": true, + "internalType": "address", + "name": "to", "type": "address" }, { "indexed": false, - "name": "repayAmount", + "internalType": "uint256", + "name": "amount", "type": "uint256" - }, + } + ], + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + }, + { + "constant": false, + "inputs": [], + "name": "_acceptAdmin", + "outputs": [ { - "indexed": false, - "name": "cTokenCollateral", + "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": [ { - "indexed": false, - "name": "seizeTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb71d1a0c" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" - }, + "internalType": "uint256", + "name": "newReserveFactorMantissa", + "type": "uint256" + } + ], + "name": "_setReserveFactor", + "outputs": [ { - "indexed": false, - "name": "newPendingAdmin", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xfca7820b" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "accrualBlockNumber", + "outputs": [ { - "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6c540baf" }, { - "anonymous": false, - "inputs": [ + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ { - "indexed": false, - "name": "oldComptroller", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa6afed95" + }, + { + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ { - "indexed": false, - "name": "newComptroller", + "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" - } - ], - "Base500bps_Slope1200bps": [ + "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": [ { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8850,14 +19979,15 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x15f24053" + "signature": "0x95dd9193" }, { "constant": true, "inputs": [], - "name": "multiplier", + "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8865,14 +19995,15 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x1b3ed722" + "signature": "0xaa5af0fd" }, { "constant": true, "inputs": [], - "name": "baseRate", + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8880,79 +20011,100 @@ "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": [ + "constant": false, + "inputs": [], + "name": "exchangeRateCurrent", + "outputs": [ { - "name": "baseRate_", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xbd6d894d" + }, + { + "constant": true, + "inputs": [], + "name": "exchangeRateStored", + "outputs": [ { - "name": "multiplier_", + "internalType": "uint256", + "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - } - ], - "Base200bps_Slope3000bps": [ + "stateMutability": "view", + "type": "function", + "signature": "0x182df0f5" + }, { "constant": true, "inputs": [ { - "name": "cash", - "type": "uint256" - }, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountSnapshot", + "outputs": [ { - "name": "borrows", + "internalType": "uint256", + "name": "", "type": "uint256" }, { - "name": "_reserves", + "internalType": "uint256", + "name": "", "type": "uint256" - } - ], - "name": "getBorrowRate", - "outputs": [ + }, { + "internalType": "uint256", "name": "", "type": "uint256" }, { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8960,14 +20112,15 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x15f24053" + "signature": "0xc37f68e2" }, { "constant": true, "inputs": [], - "name": "multiplier", + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -8975,121 +20128,172 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x1b3ed722" + "signature": "0x3b1d21a2" }, { - "constant": true, - "inputs": [], - "name": "baseRate", - "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": "0x1f68f20a" + "signature": "0x1a31d465" }, { - "constant": true, - "inputs": [], - "name": "isInterestRateModel", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", - "type": "bool" + "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": "0x2191f92a" + "signature": "0x99d8c1b4" }, { "constant": true, "inputs": [], - "name": "blocksPerYear", + "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xa385fb96" + "signature": "0xf3fdb15a" }, - { - "inputs": [ - { - "name": "baseRate_", - "type": "uint256" - }, - { - "name": "multiplier_", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" - } - ], - "cREP": [ { "constant": true, "inputs": [], - "name": "name", + "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", - "type": "string" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x06fdde03" + "signature": "0xfe9c44ae" }, { "constant": false, "inputs": [ { - "name": "spender", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "amount", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" } ], - "name": "approve", + "name": "liquidateBorrow", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x095ea7b3" + "signature": "0xf5e3c462" }, { "constant": false, "inputs": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" } ], - "name": "repayBorrow", + "name": "mint", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9097,34 +20301,53 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x0e752702" + "signature": "0xa0712d68" }, { "constant": true, "inputs": [], - "name": "reserveFactorMantissa", + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x173b9904" + "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": "borrowBalanceCurrent", + "name": "redeem", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9132,74 +20355,62 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x17bfdfbc" + "signature": "0xdb006a75" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", + "name": "redeemUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x182df0f5" - }, - { - "constant": false, - "inputs": [ - { - "name": "src", - "type": "address" - }, - { - "name": "dst", - "type": "address" - }, + "signature": "0x852a12e3" + }, + { + "constant": false, + "inputs": [ { - "name": "amount", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "transferFrom", + "name": "repayBorrow", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0x0e752702" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "borrower", "type": "address" }, { + "internalType": "uint256", "name": "repayAmount", "type": "uint256" } @@ -9207,6 +20418,7 @@ "name": "repayBorrowBehalf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9219,59 +20431,90 @@ { "constant": true, "inputs": [], - "name": "pendingAdmin", + "name": "reserveFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x26782247" + "signature": "0x173b9904" }, { - "constant": true, - "inputs": [], - "name": "decimals", + "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": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x313ce567" + "signature": "0xb2a02ff1" }, { - "constant": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "outputs": [ { - "name": "owner", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "balanceOfUnderlying", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xae9d70b0" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x3af9e669" + "signature": "0x95d89b41" }, { "constant": true, "inputs": [], - "name": "getCash", + "name": "totalBorrows", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9279,19 +20522,15 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x47bd3718" }, { "constant": false, - "inputs": [ - { - "name": "newComptroller", - "type": "address" - } - ], - "name": "_setComptroller", + "inputs": [], + "name": "totalBorrowsCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9299,14 +20538,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x4576b5db" + "signature": "0x73acee98" }, { "constant": true, "inputs": [], - "name": "totalBorrows", + "name": "totalReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9314,72 +20554,82 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x47bd3718" + "signature": "0x8f840ddd" }, { "constant": true, "inputs": [], - "name": "comptroller", + "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5fe3b567" + "signature": "0x18160ddd" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "_reduceReserves", + "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0xa9059cbb" }, { - "constant": true, - "inputs": [], - "name": "initialExchangeRateMantissa", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x675d972c" - }, - { - "constant": true, - "inputs": [], - "name": "accrualBlockNumber", + "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x6c540baf" + "signature": "0x23b872dd" }, { "constant": true, @@ -9387,6 +20637,7 @@ "name": "underlying", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -9395,103 +20646,195 @@ "stateMutability": "view", "type": "function", "signature": "0x6f307dc3" - }, + } + ], + "WBTC": [ { - "constant": true, + "anonymous": false, "inputs": [ { + "indexed": true, + "internalType": "address", "name": "owner", "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], - "name": "balanceOf", - "outputs": [ + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": true, + "internalType": "address", + "name": "burner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" + "name": "Burn", + "type": "event", + "signature": "0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5" }, { - "constant": false, - "inputs": [], - "name": "totalBorrowsCurrent", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x73acee98" + "name": "Mint", + "type": "event", + "signature": "0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885" }, { - "constant": false, + "anonymous": false, + "inputs": [], + "name": "MintFinished", + "type": "event", + "signature": "0xae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa08" + }, + { + "anonymous": false, "inputs": [ { - "name": "redeemAmount", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" } ], - "name": "redeemUnderlying", - "outputs": [ + "name": "OwnershipRenounced", + "type": "event", + "signature": "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x852a12e3" + "name": "OwnershipTransferred", + "type": "event", + "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0" }, { - "constant": true, + "anonymous": false, "inputs": [], - "name": "totalReserves", - "outputs": [ + "name": "Pause", + "type": "event", + "signature": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, { - "name": "", + "indexed": false, + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x8f840ddd" + "name": "Transfer", + "type": "event", + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { - "constant": true, + "anonymous": false, "inputs": [], - "name": "symbol", - "outputs": [ + "name": "Unpause", + "type": "event", + "signature": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33" + }, + { + "constant": false, + "inputs": [ { - "name": "", - "type": "string" + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" } ], + "name": "allocateTo", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95d89b41" + "signature": "0x08bca566" }, { "constant": true, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_spender", "type": "address" } ], - "name": "borrowBalanceStored", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9499,297 +20842,277 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95dd9193" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "mintAmount", + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "mint", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa0712d68" + "signature": "0x095ea7b3" }, { - "constant": false, - "inputs": [], - "name": "accrueInterest", + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa6afed95" + "signature": "0x70a08231" }, { "constant": false, "inputs": [ { - "name": "dst", - "type": "address" - }, - { - "name": "amount", + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], + "name": "burn", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x42966c68" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "borrowIndex", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], + "name": "claimOwnership", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0x4e71e0c8" }, { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0x313ce567" }, { "constant": false, "inputs": [ { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "name": "seizeTokens", - "type": "uint256" - } - ], - "name": "seize", - "outputs": [ - { - "name": "", + "internalType": "uint256", + "name": "_subtractedValue", "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xb2a02ff1" - }, - { - "constant": false, - "inputs": [ - { - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "_setPendingAdmin", + "name": "decreaseApproval", "outputs": [ { - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "success", + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xb71d1a0c" + "signature": "0x66188463" }, { "constant": false, "inputs": [], - "name": "exchangeRateCurrent", + "name": "finishMinting", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xbd6d894d" + "signature": "0x7d64bcb4" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "_spender", "type": "address" - } - ], - "name": "getAccountSnapshot", - "outputs": [ - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" }, { - "name": "", + "internalType": "uint256", + "name": "_addedValue", "type": "uint256" - }, + } + ], + "name": "increaseApproval", + "outputs": [ { - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "success", + "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xc37f68e2" + "signature": "0xd73dd623" }, { "constant": false, "inputs": [ { - "name": "borrowAmount", + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", "type": "uint256" } ], - "name": "borrow", + "name": "mint", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xc5ebeaec" + "signature": "0x40c10f19" }, { - "constant": false, - "inputs": [ - { - "name": "redeemTokens", - "type": "uint256" - } - ], - "name": "redeem", + "constant": true, + "inputs": [], + "name": "mintingFinished", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xdb006a75" + "signature": "0x05d2035b" }, { "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "spender", - "type": "address" - } - ], - "name": "allowance", + "inputs": [], + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0x06fdde03" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "owner", "outputs": [ { + "internalType": "address", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x8da5cb5b" }, { "constant": false, - "inputs": [ - { - "name": "newInterestRateModel", - "type": "address" - } - ], - "name": "_setInterestRateModel", + "inputs": [], + "name": "pause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x8456cb59" + }, + { + "constant": true, + "inputs": [], + "name": "paused", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0x5c975abb" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "pendingOwner", "outputs": [ { + "internalType": "address", "name": "", "type": "address" } @@ -9797,57 +21120,57 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0xe30c3978" }, { "constant": false, "inputs": [ { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", - "type": "uint256" - }, - { - "name": "cTokenCollateral", + "internalType": "contract ERC20Basic", + "name": "_token", "type": "address" } ], - "name": "liquidateBorrow", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], + "name": "reclaimToken", + "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf5e3c462" + "signature": "0x17ffc320" + }, + { + "constant": false, + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x715018a6" }, { "constant": true, "inputs": [], - "name": "admin", + "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", - "type": "address" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf851a440" + "signature": "0x95d89b41" }, { "constant": true, "inputs": [], - "name": "borrowRatePerBlock", + "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -9855,72 +21178,116 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf8f9da28" + "signature": "0x18160ddd" }, { "constant": false, "inputs": [ { - "name": "newReserveFactorMantissa", + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "_setReserveFactor", + "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xfca7820b" + "signature": "0xa9059cbb" }, { - "constant": true, - "inputs": [], - "name": "isCToken", + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_from", + "type": "address" + }, + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xfe9c44ae" + "signature": "0x23b872dd" }, { + "constant": false, "inputs": [ { - "name": "underlying_", - "type": "address" - }, - { - "name": "comptroller_", - "type": "address" - }, - { - "name": "interestRateModel_", + "internalType": "address", + "name": "newOwner", "type": "address" - }, + } + ], + "name": "transferOwnership", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xf2fde38b" + }, + { + "constant": false, + "inputs": [], + "name": "unpause", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x3f4ba83a" + } + ], + "SAI": [ + { + "inputs": [ { - "name": "initialExchangeRateMantissa_", + "internalType": "uint256", + "name": "_initialAmount", "type": "uint256" }, { - "name": "name_", + "internalType": "string", + "name": "_tokenName", "type": "string" }, { - "name": "symbol_", - "type": "string" + "internalType": "uint8", + "name": "_decimalUnits", + "type": "uint8" }, { - "name": "decimals_", - "type": "uint256" + "internalType": "string", + "name": "_tokenSymbol", + "type": "string" } ], "payable": false, @@ -9932,387 +21299,420 @@ "anonymous": false, "inputs": [ { - "indexed": false, - "name": "interestAccumulated", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" }, { - "indexed": false, - "name": "borrowIndex", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" }, { "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "name": "AccrueInterest", + "name": "Approval", "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { "anonymous": false, "inputs": [ { - "indexed": false, - "name": "minter", + "indexed": true, + "internalType": "address", + "name": "from", "type": "address" }, { - "indexed": false, - "name": "mintAmount", - "type": "uint256" + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" }, { "indexed": false, - "name": "mintTokens", + "internalType": "uint256", + "name": "value", "type": "uint256" } ], - "name": "Mint", + "name": "Transfer", "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "redeemer", + "internalType": "address", + "name": "_owner", "type": "address" }, { - "indexed": false, - "name": "redeemAmount", + "internalType": "uint256", + "name": "value", "type": "uint256" + } + ], + "name": "allocateTo", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x08bca566" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" }, { - "indexed": false, - "name": "redeemTokens", + "internalType": "address", + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Redeem", - "type": "event", - "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xdd62ed3e" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "indexed": false, - "name": "borrowAmount", + "internalType": "uint256", + "name": "_value", "type": "uint256" - }, + } + ], + "name": "approve", + "outputs": [ { - "indexed": false, - "name": "accountBorrows", + "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": true, + "inputs": [], + "name": "decimals", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", - "type": "uint256" + "internalType": "uint8", + "name": "", + "type": "uint8" } ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x313ce567" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "payer", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "indexed": false, - "name": "repayAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "_subtractedValue", "type": "uint256" - }, + } + ], + "name": "decreaseApproval", + "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": "0x66188463" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "liquidator", - "type": "address" - }, - { - "indexed": false, - "name": "borrower", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "indexed": false, - "name": "repayAmount", + "internalType": "uint256", + "name": "_addedValue", "type": "uint256" - }, - { - "indexed": false, - "name": "cTokenCollateral", - "type": "address" - }, + } + ], + "name": "increaseApproval", + "outputs": [ { - "indexed": false, - "name": "seizeTokens", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xd73dd623" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ { - "indexed": false, - "name": "newPendingAdmin", - "type": "address" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "NewPendingAdmin", - "type": "event", - "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldComptroller", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "indexed": false, - "name": "newComptroller", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldInterestRateModel", + "internalType": "address", + "name": "_to", "type": "address" }, { - "indexed": false, - "name": "newInterestRateModel", - "type": "address" + "internalType": "uint256", + "name": "_value", + "type": "uint256" } ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldReserveFactorMantissa", - "type": "uint256" - }, + "name": "transfer", + "outputs": [ { - "indexed": false, - "name": "newReserveFactorMantissa", - "type": "uint256" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "admin", + "internalType": "address", + "name": "_from", "type": "address" }, { - "indexed": false, - "name": "reduceAmount", - "type": "uint256" + "internalType": "address", + "name": "_to", + "type": "address" }, { - "indexed": false, - "name": "newTotalReserves", + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" - }, + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" + } + ], + "REP": [ { - "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" } @@ -10325,86 +21725,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, @@ -10412,6 +21806,7 @@ "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", "type": "uint8" } @@ -10423,29 +21818,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" } @@ -10453,108 +21868,106 @@ "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" - } - ], - "name": "balanceOf", - "outputs": [ + }, { - "name": "", + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x715018a6" - }, - { - "constant": false, - "inputs": [], - "name": "finishMinting", + "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -10562,524 +21975,635 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x7d64bcb4" - }, - { - "constant": false, - "inputs": [], - "name": "pause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x8456cb59" - }, + "signature": "0x23b872dd" + } + ], + "cZRX": [ { - "constant": true, - "inputs": [], - "name": "owner", - "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" + }, { - "name": "", + "internalType": "uint8", + "name": "decimals_", + "type": "uint8" + }, + { + "internalType": "address payable", + "name": "admin_", "type": "address" } ], "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x8da5cb5b" + "stateMutability": "nonpayable", + "type": "constructor", + "signature": "constructor" }, { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", - "type": "string" + "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" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x95d89b41" + "name": "AccrueInterest", + "type": "event", + "signature": "0x4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_to", + "indexed": true, + "internalType": "address", + "name": "owner", "type": "address" }, { - "name": "_value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, { - "name": "", - "type": "bool" + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xa9059cbb" + "name": "Approval", + "type": "event", + "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "_spender", + "indexed": false, + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "_addedValue", + "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": "increaseApproval", - "outputs": [ + "name": "Borrow", + "type": "event", + "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + }, + { + "anonymous": false, + "inputs": [ { - "name": "success", - "type": "bool" + "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": "nonpayable", - "type": "function", - "signature": "0xd73dd623" + "name": "Failure", + "type": "event", + "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" }, { - "constant": true, + "anonymous": false, "inputs": [ { - "name": "_owner", + "indexed": false, + "internalType": "address", + "name": "liquidator", "type": "address" }, { - "name": "_spender", + "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": "allowance", - "outputs": [ + "name": "LiquidateBorrow", + "type": "event", + "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + }, + { + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "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": "0xdd62ed3e" + "name": "Mint", + "type": "event", + "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" }, { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ + "anonymous": false, + "inputs": [ { - "name": "", + "indexed": false, + "internalType": "address", + "name": "oldAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xe30c3978" + "name": "NewAdmin", + "type": "event", + "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "newOwner", + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "oldComptroller", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", "type": "address" } ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xf2fde38b" + "name": "NewComptroller", + "type": "event", + "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" }, { "anonymous": false, - "inputs": [], - "name": "Pause", + "inputs": [ + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "oldInterestRateModel", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", + "type": "address" + } + ], + "name": "NewMarketInterestRateModel", "type": "event", - "signature": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625" + "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" }, { "anonymous": false, - "inputs": [], - "name": "Unpause", + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "NewPendingAdmin", "type": "event", - "signature": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33" + "signature": "0xca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "burner", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "oldReserveFactorMantissa", + "type": "uint256" }, { "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "Burn", + "name": "NewReserveFactor", "type": "event", - "signature": "0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5" + "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "to", + "indexed": false, + "internalType": "address", + "name": "redeemer", "type": "address" }, { "indexed": false, - "name": "amount", + "internalType": "uint256", + "name": "redeemAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" } ], - "name": "Mint", - "type": "event", - "signature": "0x0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885" - }, - { - "anonymous": false, - "inputs": [], - "name": "MintFinished", + "name": "Redeem", "type": "event", - "signature": "0xae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa08" + "signature": "0xe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "previousOwner", + "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": "OwnershipRenounced", + "name": "RepayBorrow", "type": "event", - "signature": "0xf8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c64820" + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { "anonymous": false, "inputs": [ { - "indexed": true, - "name": "previousOwner", + "indexed": false, + "internalType": "address", + "name": "benefactor", "type": "address" }, { - "indexed": true, - "name": "newOwner", - "type": "address" + "indexed": false, + "internalType": "uint256", + "name": "addAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newTotalReserves", + "type": "uint256" } ], - "name": "OwnershipTransferred", + "name": "ReservesAdded", "type": "event", - "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0" + "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" - } - ], - "REP": [ + }, { - "constant": true, + "constant": false, "inputs": [], - "name": "name", + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "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" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "_spender", - "type": "address" - }, - { - "name": "_value", + "internalType": "uint256", + "name": "addAmount", "type": "uint256" } ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x095ea7b3" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x18160ddd" + "signature": "0x3e941010" }, { "constant": false, "inputs": [ { - "name": "_from", - "type": "address" - }, - { - "name": "_to", - "type": "address" - }, - { - "name": "_value", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" } ], - "name": "transferFrom", + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "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" + "signature": "0x601a0bf1" }, { "constant": false, "inputs": [ { - "name": "_spender", + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", "type": "address" - }, - { - "name": "_subtractedValue", - "type": "uint256" } ], - "name": "decreaseApproval", + "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x66188463" + "signature": "0x4576b5db" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "_owner", + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", "type": "address" } ], - "name": "balanceOf", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95d89b41" + "signature": "0xf2b3abbd" }, { "constant": false, "inputs": [ { - "name": "_to", + "internalType": "address payable", + "name": "newPendingAdmin", "type": "address" - }, - { - "name": "_value", - "type": "uint256" } ], - "name": "transfer", + "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "_spender", - "type": "address" - }, - { - "name": "_addedValue", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "increaseApproval", + "name": "_setReserveFactor", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xd73dd623" + "signature": "0xfca7820b" }, { "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, - { - "name": "_spender", - "type": "address" - } - ], - "name": "allowance", + "inputs": [], + "name": "accrualBlockNumber", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11087,103 +22611,77 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0x6c540baf" }, { - "inputs": [ - { - "name": "_initialAmount", - "type": "uint256" - }, - { - "name": "_tokenName", - "type": "string" - }, - { - "name": "_decimalUnits", - "type": "uint8" - }, + "constant": false, + "inputs": [], + "name": "accrueInterest", + "outputs": [ { - "name": "_tokenSymbol", - "type": "string" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "type": "function", + "signature": "0xa6afed95" }, { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "name": "owner", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "admin", + "outputs": [ { - "indexed": true, - "name": "spender", + "internalType": "address payable", + "name": "", "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xf851a440" }, { - "anonymous": false, + "constant": true, "inputs": [ { - "indexed": true, - "name": "from", + "internalType": "address", + "name": "owner", "type": "address" }, { - "indexed": true, - "name": "to", + "internalType": "address", + "name": "spender", "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" } ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" - } - ], - "cZRX": [ - { - "constant": true, - "inputs": [], - "name": "name", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x06fdde03" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "spender", "type": "address" }, { + "internalType": "uint256", "name": "amount", "type": "uint256" } @@ -11191,6 +22689,7 @@ "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -11201,51 +22700,62 @@ "signature": "0x095ea7b3" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "repayAmount", - "type": "uint256" + "internalType": "address", + "name": "owner", + "type": "address" } ], - "name": "repayBorrow", + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x0e752702" + "signature": "0x70a08231" }, { - "constant": true, - "inputs": [], - "name": "reserveFactorMantissa", + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x173b9904" + "signature": "0x3af9e669" }, { "constant": false, "inputs": [ { - "name": "account", - "type": "address" + "internalType": "uint256", + "name": "borrowAmount", + "type": "uint256" } ], - "name": "borrowBalanceCurrent", + "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11253,96 +22763,91 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x17bfdfbc" + "signature": "0xc5ebeaec" }, { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "account", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", + "name": "borrowBalanceCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x182df0f5" + "signature": "0x17bfdfbc" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "src", - "type": "address" - }, - { - "name": "dst", + "internalType": "address", + "name": "account", "type": "address" - }, - { - "name": "amount", - "type": "uint256" } ], - "name": "transferFrom", + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x23b872dd" + "signature": "0x95dd9193" }, { - "constant": false, - "inputs": [ - { - "name": "borrower", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "borrowIndex", + "outputs": [ { - "name": "repayAmount", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "repayBorrowBehalf", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0xaa5af0fd" + }, + { + "constant": true, + "inputs": [], + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x2608f818" + "signature": "0xf8f9da28" }, { "constant": true, "inputs": [], - "name": "pendingAdmin", + "name": "comptroller", "outputs": [ { + "internalType": "contract ComptrollerInterface", "name": "", "type": "address" } @@ -11350,7 +22855,7 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x26782247" + "signature": "0x5fe3b567" }, { "constant": true, @@ -11358,8 +22863,9 @@ "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, @@ -11369,15 +22875,11 @@ }, { "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "balanceOfUnderlying", + "inputs": [], + "name": "exchangeRateCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11385,14 +22887,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x3af9e669" + "signature": "0xbd6d894d" }, { "constant": true, "inputs": [], - "name": "getCash", + "name": "exchangeRateStored", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11400,34 +22903,36 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x182df0f5" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "newComptroller", + "internalType": "address", + "name": "account", "type": "address" } ], - "name": "_setComptroller", + "name": "getAccountSnapshot", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x4576b5db" - }, - { - "constant": true, - "inputs": [], - "name": "totalBorrows", - "outputs": [ + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11435,114 +22940,166 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x47bd3718" + "signature": "0xc37f68e2" }, { "constant": true, "inputs": [], - "name": "comptroller", + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x5fe3b567" + "signature": "0x3b1d21a2" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", - "type": "uint256" - } - ], - "name": "_reduceReserves", - "outputs": [ + "internalType": "address", + "name": "underlying_", + "type": "address" + }, { - "name": "", + "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": "0x601a0bf1" + "signature": "0x1a31d465" }, { - "constant": true, - "inputs": [], - "name": "initialExchangeRateMantissa", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "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": "0x675d972c" + "signature": "0x99d8c1b4" }, { "constant": true, "inputs": [], - "name": "accrualBlockNumber", + "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6c540baf" + "signature": "0xf3fdb15a" }, { "constant": true, "inputs": [], - "name": "underlying", + "name": "isCToken", "outputs": [ { + "internalType": "bool", "name": "", - "type": "address" + "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6f307dc3" + "signature": "0xfe9c44ae" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "owner", + "internalType": "address", + "name": "borrower", "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ + }, { - "name": "", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" + }, + { + "internalType": "contract CTokenInterface", + "name": "cTokenCollateral", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" - }, - { - "constant": false, - "inputs": [], - "name": "totalBorrowsCurrent", + "name": "liquidateBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11550,19 +23107,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x73acee98" + "signature": "0xf5e3c462" }, { "constant": false, "inputs": [ { - "name": "redeemAmount", + "internalType": "uint256", + "name": "mintAmount", "type": "uint256" } ], - "name": "redeemUnderlying", + "name": "mint", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11570,69 +23129,75 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x852a12e3" + "signature": "0xa0712d68" }, { "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" } @@ -11640,14 +23205,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa0712d68" + "signature": "0x852a12e3" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", + "inputs": [ + { + "internalType": "uint256", + "name": "repayAmount", + "type": "uint256" + } + ], + "name": "repayBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11655,53 +23227,42 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0x0e752702" }, { "constant": false, "inputs": [ { - "name": "dst", + "internalType": "address", + "name": "borrower", "type": "address" }, { - "name": "amount", + "internalType": "uint256", + "name": "repayAmount", "type": "uint256" } ], - "name": "transfer", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xa9059cbb" - }, - { - "constant": true, - "inputs": [], - "name": "borrowIndex", + "name": "repayBorrowBehalf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xaa5af0fd" + "signature": "0x2608f818" }, { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "reserveFactorMantissa", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11709,20 +23270,23 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0x173b9904" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "liquidator", "type": "address" }, { + "internalType": "address", "name": "borrower", "type": "address" }, { + "internalType": "uint256", "name": "seizeTokens", "type": "uint256" } @@ -11730,6 +23294,7 @@ "name": "seize", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11740,127 +23305,44 @@ "signature": "0xb2a02ff1" }, { - "constant": false, - "inputs": [ - { - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "_setPendingAdmin", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xb71d1a0c" - }, - { - "constant": false, + "constant": true, "inputs": [], - "name": "exchangeRateCurrent", + "name": "supplyRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xbd6d894d" + "signature": "0xae9d70b0" }, { "constant": true, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "getAccountSnapshot", + "inputs": [], + "name": "symbol", "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" - }, - { - "constant": false, - "inputs": [ - { - "name": "borrowAmount", - "type": "uint256" - } - ], - "name": "borrow", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xc5ebeaec" - }, - { - "constant": false, - "inputs": [ - { - "name": "redeemTokens", - "type": "uint256" - } - ], - "name": "redeem", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xdb006a75" - }, - { - "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "spender", - "type": "address" - } - ], - "name": "allowance", + "type": "function", + "signature": "0x95d89b41" + }, + { + "constant": true, + "inputs": [], + "name": "totalBorrows", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11868,14 +23350,15 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0x47bd3718" }, { "constant": false, "inputs": [], - "name": "_acceptAdmin", + "name": "totalBorrowsCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -11883,165 +23366,158 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x73acee98" }, { - "constant": false, - "inputs": [ - { - "name": "newInterestRateModel", - "type": "address" - } - ], - "name": "_setInterestRateModel", + "constant": true, + "inputs": [], + "name": "totalReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xf2b3abbd" + "signature": "0x8f840ddd" }, { "constant": true, "inputs": [], - "name": "interestRateModel", + "name": "totalSupply", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xf3fdb15a" + "signature": "0x18160ddd" }, { "constant": false, "inputs": [ { - "name": "borrower", + "internalType": "address", + "name": "dst", "type": "address" }, { - "name": "repayAmount", + "internalType": "uint256", + "name": "amount", "type": "uint256" - }, - { - "name": "cTokenCollateral", - "type": "address" } ], - "name": "liquidateBorrow", + "name": "transfer", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xf5e3c462" + "signature": "0xa9059cbb" }, { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "internalType": "address", + "name": "src", "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf851a440" - }, - { - "constant": true, - "inputs": [], - "name": "borrowRatePerBlock", - "outputs": [ + }, { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf8f9da28" - }, - { - "constant": false, - "inputs": [ + "internalType": "address", + "name": "dst", + "type": "address" + }, { - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "_setReserveFactor", + "name": "transferFrom", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "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, @@ -12054,90 +23530,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" } @@ -12151,59 +23620,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" } @@ -12217,29 +23684,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" } @@ -12253,11 +23730,13 @@ "inputs": [ { "indexed": false, + "internalType": "contract ComptrollerInterface", "name": "oldComptroller", "type": "address" }, { "indexed": false, + "internalType": "contract ComptrollerInterface", "name": "newComptroller", "type": "address" } @@ -12271,11 +23750,13 @@ "inputs": [ { "indexed": false, + "internalType": "contract InterestRateModel", "name": "oldInterestRateModel", "type": "address" }, { "indexed": false, + "internalType": "contract InterestRateModel", "name": "newInterestRateModel", "type": "address" } @@ -12289,80 +23770,175 @@ "inputs": [ { "indexed": false, - "name": "oldReserveFactorMantissa", + "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, - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "totalBorrows", "type": "uint256" } ], - "name": "NewReserveFactor", + "name": "RepayBorrow", "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "admin", + "internalType": "address", + "name": "benefactor", "type": "address" }, { "indexed": false, - "name": "reduceAmount", + "internalType": "uint256", + "name": "addAmount", "type": "uint256" }, { "indexed": false, + "internalType": "uint256", "name": "newTotalReserves", "type": "uint256" } ], - "name": "ReservesReduced", + "name": "ReservesAdded", "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "signature": "0xa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5" }, { "anonymous": false, "inputs": [ { "indexed": false, - "name": "error", - "type": "uint256" + "internalType": "address", + "name": "admin", + "type": "address" }, { "indexed": false, - "name": "info", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" }, { "indexed": false, - "name": "detail", + "internalType": "uint256", + "name": "newTotalReserves", "type": "uint256" } ], - "name": "Failure", + "name": "ReservesReduced", "type": "event", - "signature": "0x45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0" + "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" } @@ -12371,116 +23947,13 @@ "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" - } - ], - "cWBTC": [ - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x06fdde03" - }, - { - "constant": false, - "inputs": [ - { - "name": "spender", - "type": "address" - }, - { - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x095ea7b3" - }, { "constant": false, - "inputs": [ - { - "name": "repayAmount", - "type": "uint256" - } - ], - "name": "repayBorrow", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x0e752702" - }, - { - "constant": true, "inputs": [], - "name": "reserveFactorMantissa", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x173b9904" - }, - { - "constant": false, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "borrowBalanceCurrent", + "name": "_acceptAdmin", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12488,81 +23961,43 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x17bfdfbc" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x18160ddd" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateStored", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x182df0f5" + "signature": "0xe9c714f2" }, { "constant": false, "inputs": [ { - "name": "src", - "type": "address" - }, - { - "name": "dst", - "type": "address" - }, - { - "name": "amount", + "internalType": "uint256", + "name": "addAmount", "type": "uint256" } ], - "name": "transferFrom", + "name": "_addReserves", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x23b872dd" + "signature": "0x3e941010" }, { "constant": false, "inputs": [ { - "name": "borrower", - "type": "address" - }, - { - "name": "repayAmount", + "internalType": "uint256", + "name": "reduceAmount", "type": "uint256" } ], - "name": "repayBorrowBehalf", + "name": "_reduceReserves", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12570,49 +24005,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x2608f818" - }, - { - "constant": true, - "inputs": [], - "name": "pendingAdmin", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x26782247" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x313ce567" + "signature": "0x601a0bf1" }, { "constant": false, "inputs": [ { - "name": "owner", + "internalType": "contract ComptrollerInterface", + "name": "newComptroller", "type": "address" } ], - "name": "balanceOfUnderlying", + "name": "_setComptroller", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12620,84 +24027,65 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x3af9e669" - }, - { - "constant": true, - "inputs": [], - "name": "getCash", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x3b1d21a2" + "signature": "0x4576b5db" }, { "constant": false, "inputs": [ { - "name": "newComptroller", + "internalType": "contract InterestRateModel", + "name": "newInterestRateModel", "type": "address" } ], - "name": "_setComptroller", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0x4576b5db" - }, - { - "constant": true, - "inputs": [], - "name": "totalBorrows", + "name": "_setInterestRateModel", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x47bd3718" + "signature": "0xf2b3abbd" }, { - "constant": true, - "inputs": [], - "name": "comptroller", + "constant": false, + "inputs": [ + { + "internalType": "address payable", + "name": "newPendingAdmin", + "type": "address" + } + ], + "name": "_setPendingAdmin", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x5fe3b567" + "signature": "0xb71d1a0c" }, { "constant": false, "inputs": [ { - "name": "reduceAmount", + "internalType": "uint256", + "name": "newReserveFactorMantissa", "type": "uint256" } ], - "name": "_reduceReserves", + "name": "_setReserveFactor", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12705,14 +24093,15 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x601a0bf1" + "signature": "0xfca7820b" }, { "constant": true, "inputs": [], - "name": "initialExchangeRateMantissa", + "name": "accrualBlockNumber", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12720,29 +24109,31 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x675d972c" + "signature": "0x6c540baf" }, { - "constant": true, + "constant": false, "inputs": [], - "name": "accrualBlockNumber", + "name": "accrueInterest", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x6c540baf" + "signature": "0xa6afed95" }, { "constant": true, "inputs": [], - "name": "underlying", + "name": "admin", "outputs": [ { + "internalType": "address payable", "name": "", "type": "address" } @@ -12750,124 +24141,119 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x6f307dc3" + "signature": "0xf851a440" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "owner", "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ + }, { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "spender", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x70a08231" - }, - { - "constant": false, - "inputs": [], - "name": "totalBorrowsCurrent", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0x73acee98" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { - "name": "redeemAmount", + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "redeemUnderlying", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", - "type": "uint256" + "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x852a12e3" + "signature": "0x095ea7b3" }, { "constant": true, - "inputs": [], - "name": "totalReserves", - "outputs": [ + "inputs": [ { - "name": "", - "type": "uint256" + "internalType": "address", + "name": "owner", + "type": "address" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0x8f840ddd" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", + "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "string" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0x70a08231" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "account", + "internalType": "address", + "name": "owner", "type": "address" } ], - "name": "borrowBalanceStored", + "name": "balanceOfUnderlying", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0x95dd9193" + "signature": "0x3af9e669" }, { "constant": false, "inputs": [ { - "name": "mintAmount", + "internalType": "uint256", + "name": "borrowAmount", "type": "uint256" } ], - "name": "mint", + "name": "borrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12875,14 +24261,21 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa0712d68" + "signature": "0xc5ebeaec" }, { "constant": false, - "inputs": [], - "name": "accrueInterest", + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "borrowBalanceCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12890,31 +24283,29 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa6afed95" + "signature": "0x17bfdfbc" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "dst", + "internalType": "address", + "name": "account", "type": "address" - }, - { - "name": "amount", - "type": "uint256" } ], - "name": "transfer", + "name": "borrowBalanceStored", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x95dd9193" }, { "constant": true, @@ -12922,6 +24313,7 @@ "name": "borrowIndex", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12934,9 +24326,10 @@ { "constant": true, "inputs": [], - "name": "supplyRatePerBlock", + "name": "borrowRatePerBlock", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -12944,55 +24337,39 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xae9d70b0" + "signature": "0xf8f9da28" }, { - "constant": false, - "inputs": [ - { - "name": "liquidator", - "type": "address" - }, - { - "name": "borrower", - "type": "address" - }, - { - "name": "seizeTokens", - "type": "uint256" - } - ], - "name": "seize", + "constant": true, + "inputs": [], + "name": "comptroller", "outputs": [ { + "internalType": "contract ComptrollerInterface", "name": "", - "type": "uint256" + "type": "address" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xb2a02ff1" + "signature": "0x5fe3b567" }, { - "constant": false, - "inputs": [ - { - "name": "newPendingAdmin", - "type": "address" - } - ], - "name": "_setPendingAdmin", + "constant": true, + "inputs": [], + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "uint256" + "type": "uint8" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xb71d1a0c" + "signature": "0x313ce567" }, { "constant": false, @@ -13000,6 +24377,7 @@ "name": "exchangeRateCurrent", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13011,27 +24389,11 @@ }, { "constant": true, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "getAccountSnapshot", + "inputs": [], + "name": "exchangeRateStored", "outputs": [ { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, - { - "name": "", - "type": "uint256" - }, - { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13039,63 +24401,36 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xc37f68e2" + "signature": "0x182df0f5" }, { - "constant": false, + "constant": true, "inputs": [ { - "name": "borrowAmount", - "type": "uint256" + "internalType": "address", + "name": "account", + "type": "address" } ], - "name": "borrow", + "name": "getAccountSnapshot", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xc5ebeaec" - }, - { - "constant": false, - "inputs": [ + }, { - "name": "redeemTokens", + "internalType": "uint256", + "name": "", "type": "uint256" - } - ], - "name": "redeem", - "outputs": [ + }, { + "internalType": "uint256", "name": "", "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xdb006a75" - }, - { - "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" }, { - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13103,42 +24438,110 @@ "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0xc37f68e2" }, { - "constant": false, + "constant": true, "inputs": [], - "name": "_acceptAdmin", + "name": "getCash", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xe9c714f2" + "signature": "0x3b1d21a2" }, { "constant": false, "inputs": [ { - "name": "newInterestRateModel", + "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": "_setInterestRateModel", - "outputs": [ + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x1a31d465" + }, + { + "constant": false, + "inputs": [ { - "name": "", + "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": "0xf2b3abbd" + "signature": "0x99d8c1b4" }, { "constant": true, @@ -13146,6 +24549,7 @@ "name": "interestRateModel", "outputs": [ { + "internalType": "contract InterestRateModel", "name": "", "type": "address" } @@ -13155,18 +24559,37 @@ "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" } @@ -13174,6 +24597,7 @@ "name": "liquidateBorrow", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13184,476 +24608,463 @@ "signature": "0xf5e3c462" }, { - "constant": true, - "inputs": [], - "name": "admin", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", - "type": "address" + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" } ], - "payable": false, - "stateMutability": "view", - "type": "function", - "signature": "0xf851a440" - }, - { - "constant": true, - "inputs": [], - "name": "borrowRatePerBlock", + "name": "mint", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function", - "signature": "0xf8f9da28" + "signature": "0xa0712d68" }, { - "constant": false, - "inputs": [ - { - "name": "newReserveFactorMantissa", - "type": "uint256" - } - ], - "name": "_setReserveFactor", + "constant": true, + "inputs": [], + "name": "name", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function", - "signature": "0xfca7820b" + "signature": "0x06fdde03" }, { "constant": true, "inputs": [], - "name": "isCToken", + "name": "pendingAdmin", "outputs": [ { + "internalType": "address payable", "name": "", - "type": "bool" + "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xfe9c44ae" + "signature": "0x26782247" }, { + "constant": false, "inputs": [ { - "name": "underlying_", - "type": "address" - }, - { - "name": "comptroller_", - "type": "address" - }, - { - "name": "interestRateModel_", - "type": "address" - }, - { - "name": "initialExchangeRateMantissa_", + "internalType": "uint256", + "name": "redeemTokens", "type": "uint256" - }, - { - "name": "name_", - "type": "string" - }, - { - "name": "symbol_", - "type": "string" - }, + } + ], + "name": "redeem", + "outputs": [ { - "name": "decimals_", + "internalType": "uint256", + "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "type": "function", + "signature": "0xdb006a75" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "interestAccumulated", - "type": "uint256" - }, - { - "indexed": false, - "name": "borrowIndex", - "type": "uint256" - }, - { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "redeemAmount", "type": "uint256" } ], - "name": "AccrueInterest", - "type": "event", - "signature": "0x875352fb3fadeb8c0be7cbbe8ff761b308fa7033470cd0287f02f3436fd76cb9" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "minter", - "type": "address" - }, - { - "indexed": false, - "name": "mintAmount", - "type": "uint256" - }, + "name": "redeemUnderlying", + "outputs": [ { - "indexed": false, - "name": "mintTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "Mint", - "type": "event", - "signature": "0x4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x852a12e3" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "redeemer", - "type": "address" - }, - { - "indexed": false, - "name": "redeemAmount", - "type": "uint256" - }, - { - "indexed": false, - "name": "redeemTokens", + "internalType": "uint256", + "name": "repayAmount", "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": "repayBorrow", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "", "type": "uint256" - } - ], - "name": "Borrow", - "type": "event", - "signature": "0x13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab80" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x0e752702" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "payer", - "type": "address" - }, - { - "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { - "indexed": false, + "internalType": "uint256", "name": "repayAmount", "type": "uint256" - }, + } + ], + "name": "repayBorrowBehalf", + "outputs": [ { - "indexed": false, - "name": "accountBorrows", + "internalType": "uint256", + "name": "", "type": "uint256" - }, + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x2608f818" + }, + { + "constant": true, + "inputs": [], + "name": "reserveFactorMantissa", + "outputs": [ { - "indexed": false, - "name": "totalBorrows", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "RepayBorrow", - "type": "event", - "signature": "0x1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x173b9904" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, + "internalType": "address", "name": "liquidator", "type": "address" }, { - "indexed": false, + "internalType": "address", "name": "borrower", "type": "address" }, { - "indexed": false, - "name": "repayAmount", + "internalType": "uint256", + "name": "seizeTokens", "type": "uint256" - }, - { - "indexed": false, - "name": "cTokenCollateral", - "type": "address" - }, + } + ], + "name": "seize", + "outputs": [ { - "indexed": false, - "name": "seizeTokens", + "internalType": "uint256", + "name": "", "type": "uint256" } ], - "name": "LiquidateBorrow", - "type": "event", - "signature": "0x298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb52" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xb2a02ff1" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldPendingAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "supplyRatePerBlock", + "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": "0xae9d70b0" }, { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "oldAdmin", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ { - "indexed": false, - "name": "newAdmin", - "type": "address" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "NewAdmin", - "type": "event", - "signature": "0xf9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x95d89b41" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "totalBorrows", + "outputs": [ { - "indexed": false, - "name": "oldComptroller", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x47bd3718" + }, + { + "constant": false, + "inputs": [], + "name": "totalBorrowsCurrent", + "outputs": [ { - "indexed": false, - "name": "newComptroller", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewComptroller", - "type": "event", - "signature": "0x7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d" + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x73acee98" }, { - "anonymous": false, - "inputs": [ + "constant": true, + "inputs": [], + "name": "totalReserves", + "outputs": [ { - "indexed": false, - "name": "oldInterestRateModel", - "type": "address" - }, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x8f840ddd" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "indexed": false, - "name": "newInterestRateModel", - "type": "address" + "internalType": "uint256", + "name": "", + "type": "uint256" } ], - "name": "NewMarketInterestRateModel", - "type": "event", - "signature": "0xedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926" + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "oldReserveFactorMantissa", - "type": "uint256" + "internalType": "address", + "name": "dst", + "type": "address" }, { - "indexed": false, - "name": "newReserveFactorMantissa", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "NewReserveFactor", - "type": "event", - "signature": "0xaaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460" + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": false, - "name": "admin", + "internalType": "address", + "name": "src", "type": "address" }, { - "indexed": false, - "name": "reduceAmount", - "type": "uint256" + "internalType": "address", + "name": "dst", + "type": "address" }, { - "indexed": false, - "name": "newTotalReserves", + "internalType": "uint256", + "name": "amount", "type": "uint256" } ], - "name": "ReservesReduced", - "type": "event", - "signature": "0x3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e" + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" }, { - "anonymous": false, + "constant": true, + "inputs": [], + "name": "underlying", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x6f307dc3" + } + ], + "USDC": [ + { "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" - } - ], - "USDC": [ - { - "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" } @@ -13665,103 +25076,51 @@ "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", + "internalType": "address", + "name": "_owner", "type": "address" }, { - "name": "_to", + "internalType": "address", + "name": "_spender", "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", + "name": "allowance", "outputs": [ { + "internalType": "uint256", "name": "", - "type": "uint8" + "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x313ce567" + "signature": "0xdd62ed3e" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "_spender", "type": "address" }, { - "name": "_subtractedValue", + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "decreaseApproval", + "name": "approve", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -13769,12 +25128,13 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0x66188463" + "signature": "0x095ea7b3" }, { "constant": true, "inputs": [ { + "internalType": "address", "name": "_owner", "type": "address" } @@ -13782,6 +25142,7 @@ "name": "balanceOf", "outputs": [ { + "internalType": "uint256", "name": "", "type": "uint256" } @@ -13794,33 +25155,37 @@ { "constant": true, "inputs": [], - "name": "symbol", + "name": "decimals", "outputs": [ { + "internalType": "uint8", "name": "", - "type": "string" + "type": "uint8" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0x95d89b41" + "signature": "0x313ce567" }, { "constant": false, "inputs": [ { - "name": "_to", + "internalType": "address", + "name": "_spender", "type": "address" }, { - "name": "_value", + "internalType": "uint256", + "name": "_subtractedValue", "type": "uint256" } ], - "name": "transfer", + "name": "decreaseApproval", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -13828,16 +25193,18 @@ "payable": false, "stateMutability": "nonpayable", "type": "function", - "signature": "0xa9059cbb" + "signature": "0x66188463" }, { "constant": false, "inputs": [ { + "internalType": "address", "name": "_spender", "type": "address" }, { + "internalType": "uint256", "name": "_addedValue", "type": "uint256" } @@ -13845,6 +25212,7 @@ "name": "increaseApproval", "outputs": [ { + "internalType": "bool", "name": "", "type": "bool" } @@ -13856,97 +25224,110 @@ }, { "constant": true, - "inputs": [ - { - "name": "_owner", - "type": "address" - }, + "inputs": [], + "name": "name", + "outputs": [ { - "name": "_spender", - "type": "address" + "internalType": "string", + "name": "", + "type": "string" } ], - "name": "allowance", + "payable": false, + "stateMutability": "view", + "type": "function", + "signature": "0x06fdde03" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", "outputs": [ { + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function", - "signature": "0xdd62ed3e" + "signature": "0x95d89b41" }, { - "inputs": [ + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ { - "name": "_initialAmount", + "internalType": "uint256", + "name": "", "type": "uint256" - }, - { - "name": "_tokenName", - "type": "string" - }, - { - "name": "_decimalUnits", - "type": "uint8" - }, - { - "name": "_tokenSymbol", - "type": "string" } ], "payable": false, - "stateMutability": "nonpayable", - "type": "constructor", - "signature": "constructor" + "stateMutability": "view", + "type": "function", + "signature": "0x18160ddd" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", + "internalType": "address", + "name": "_to", "type": "address" }, { - "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "Approval", - "type": "event", - "signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925" + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0xa9059cbb" }, { - "anonymous": false, + "constant": false, "inputs": [ { - "indexed": true, - "name": "from", + "internalType": "address", + "name": "_from", "type": "address" }, { - "indexed": true, - "name": "to", + "internalType": "address", + "name": "_to", "type": "address" }, { - "indexed": false, - "name": "value", + "internalType": "uint256", + "name": "_value", "type": "uint256" } ], - "name": "Transfer", - "type": "event", - "signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function", + "signature": "0x23b872dd" } ] -} \ No newline at end of file +} diff --git a/networks/goerli.json b/networks/goerli.json index 2b18cc67a..49f0bba71 100644 --- a/networks/goerli.json +++ b/networks/goerli.json @@ -1,92 +1,156 @@ { "Contracts": { - "ZRX": "0x6c041606A9b4A449dF6B5FF7274B79a869616D65", - "cUSDC": "0xD9FFe966A831089981Bd1539503c9d3cb45E5AAb", - "PriceOracle": "0x9f8376931cd4c3c38C0128A77082ba40e8D4a8a1", - "PriceOracleProxy": "0x83047d759094cBc94df2DE8caF33C6C5990eE095", - "Maximillion": "0xcCb206b7b33F46cB0a8e55Bf1f173fe3e8661076", - "cDAI": "0xd9fd9E875c9C1d567825E431DD6Ed4f0e51aA8Bf", - "DAI": "0xB8C5995387c8086d0B496Bd54755d14D7cED8256", - "StdComptroller": "0xC2210dFFE9DE7eA7A7ed933EeE3e28ae6786b9f5", - "Unitroller": "0xe884DcC3167613A5D6A6EF96F90B74E411F32C8a", - "Comptroller": "0xe884DcC3167613A5D6A6EF96F90B74E411F32C8a", - "cBAT": "0xc31211101e6D98bEA24F1f32cbeBa3e9ac7c9749", - "Base0bps_Slope2000bps": "0x23E8731b39E46941f73951b7f39d921bFd6C2E05", - "BAT": "0x3e0d325ABA23E9562281D48b2Bd52594Db48CC18", - "cETH": "0x2B2aA9c7967eFAd4B73BFD8801333928806409A1", - "Base500bps_Slope1200bps": "0x63cFb6469408a64d6713C28231c8d90a609aeB23", - "Base200bps_Slope3000bps": "0x8cD09AF719A93fB3b52a05Dbc4eC0Fa559EEC9C2", - "cREP": "0x0812e50F3740b89899Ce889C2ab913eA2565f626", - "WBTC": "0xFD1853eb1391B094dd9DfAB566d94F8b6400316c", - "REP": "0x4308246f8806135d840c8C81bF658d58c0Fd295C", - "cZRX": "0xf412f4d0eE1D96eb486C6C2836bEDc4912bA294E", - "cWBTC": "0xe43d693C6d063BDF4A9681f9A6D9D1439344f4f7", - "USDC": "0x7Dc9912705FfDb928F62D9694fEfdD3a09F3eCD0" + "ZRX": "0xe4E81Fa6B16327D4B78CFEB83AAdE04bA7075165", + "cUSDC": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0", + "PriceOracle": "0x9A536Ed5C97686988F93C9f7C2A390bF3B59c0ec", + "PriceOracleProxy": "0xd0c84453b3945cd7e84BF7fc53BfFd6718913B71", + "Maximillion": "0x73d3F01b8aC5063f4601C7C45DA5Fdf1b5240C92", + "CNT1": "0x5E5bB47a4F5c14115f39Ce9207720fD730939c19", + "GovernorAlpha": "0x8C3969Dd514B559D78135e9C210F2F773Feadf21", + "cDAI": "0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb", + "GovernorAlpha2": "0xc4F53FD250B3331000e3eBBE46BDA11D01445B2A", + "DAI": "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60", + "StdComptroller": "0x95aACAf2342dcF58C08d221404f370c4b1BBD6E6", + "Unitroller": "0x627EA49279FD0dE89186A58b8758aD02B6Be2867", + "Comptroller": "0x627EA49279FD0dE89186A58b8758aD02B6Be2867", + "Comp": "0xfa5E1B628EFB17C024ca76f65B45Faf6B3128CA5", + "cBAT": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D", + "Base0bps_Slope2000bps": "0xA4d7E82dA57339020cbB3cA2B59D173AcDCa3504", + "BAT": "0x70cBa46d2e933030E2f274AE58c951C800548AeF", + "cErc20Delegate": "0xB40d042a65Dd413Ae0fd85bECF8D722e16bC46F1", + "StdComptrollerG1": "0x503506EfC05Bc2BAef7ad0dF052827Aca6DC2964", + "cETH": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF", + "Base500bps_Slope1200bps": "0x4C0f5B2f3739DE27874e200CFBc482a9086066CE", + "cSAI": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809", + "Timelock": "0x25e46957363e16C4e2D5F2854b062475F9f8d287", + "Base200bps_Slope3000bps": "0x1E83FD76621da78266955C473CD8559D5FA1c34c", + "cREP": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D", + "WBTC": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05", + "SAI": "0x8e9192D6f9d903b1BEb3836F52a9f71E05846e42", + "REP": "0x183Faf58c4461972765f3F90c6272A4ecE66Bd96", + "cZRX": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1", + "cWBTC": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF", + "USDC": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C" }, "Blocks": { - "ZRX": 924883, - "cUSDC": 924929, - "PriceOracle": 924871, - "PriceOracleProxy": 924948, - "Maximillion": 924932, - "cDAI": 924893, - "DAI": 924885, - "StdComptroller": 924875, - "Unitroller": 924873, - "cBAT": 924892, - "Base0bps_Slope2000bps": 924879, - "BAT": 924884, - "cETH": 924895, - "Base500bps_Slope1200bps": 924878, - "Base200bps_Slope3000bps": 924881, - "cREP": 924894, - "WBTC": 924889, - "REP": 924886, - "cZRX": 924891, - "cWBTC": 924931, - "USDC": 924887 + "ZRX": 1971943, + "cUSDC": 1972004, + "PriceOracle": 1971913, + "PriceOracleProxy": 1972036, + "Maximillion": 1972017, + "CNT1": 2001121, + "GovernorAlpha": 1971912, + "cDAI": 1972015, + "GovernorAlpha2": 2000668, + "DAI": 1971947, + "StdComptroller": 1971931, + "Unitroller": 1971914, + "Comp": 1971911, + "cBAT": 1971988, + "Base0bps_Slope2000bps": 1971941, + "BAT": 1971945, + "cErc20Delegate": 1972007, + "StdComptrollerG1": 1971926, + "cETH": 1971992, + "Base500bps_Slope1200bps": 1971936, + "cSAI": 1971989, + "Timelock": 1966773, + "Base200bps_Slope3000bps": 1971942, + "cREP": 1971991, + "WBTC": 1971953, + "SAI": 1971948, + "REP": 1971949, + "cZRX": 1971986, + "cWBTC": 1972006, + "USDC": 1971951 }, "PriceOracle": { "description": "Simple Price Oracle", - "address": "0x9f8376931cd4c3c38C0128A77082ba40e8D4a8a1" + "address": "0x9A536Ed5C97686988F93C9f7C2A390bF3B59c0ec" + }, + "PriceOracleProxy": { + "description": "Price Oracle Proxy", + "cETH": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF", + "cUSDC": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0", + "cSAI": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809", + "cDAI": "0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb", + "address": "0xd0c84453b3945cd7e84BF7fc53BfFd6718913B71" }, "Maximillion": { "description": "Maximillion", - "cEtherAddress": "0x2B2aA9c7967eFAd4B73BFD8801333928806409A1", - "address": "0xcCb206b7b33F46cB0a8e55Bf1f173fe3e8661076" + "cEtherAddress": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF", + "address": "0x73d3F01b8aC5063f4601C7C45DA5Fdf1b5240C92" }, "Unitroller": { "description": "Unitroller", - "address": "0xe884DcC3167613A5D6A6EF96F90B74E411F32C8a" + "address": "0x627EA49279FD0dE89186A58b8758aD02B6Be2867" }, "Comptroller": { + "StdComptrollerG1": { + "address": "0x503506EfC05Bc2BAef7ad0dF052827Aca6DC2964", + "contract": "ComptrollerG1", + "description": "StandardG1 Comptroller Impl" + }, "StdComptroller": { - "address": "0xC2210dFFE9DE7eA7A7ed933EeE3e28ae6786b9f5", + "address": "0x95aACAf2342dcF58C08d221404f370c4b1BBD6E6", "contract": "Comptroller", "description": "Standard Comptroller Impl" } }, + "Comp": { + "contract": "Comp", + "symbol": "COMP", + "name": "Compound Governance Token", + "decimals": 18, + "address": "0xfa5E1B628EFB17C024ca76f65B45Faf6B3128CA5" + }, + "Governor": { + "GovernorAlpha": { + "name": "GovernorAlpha", + "contract": "GovernorAlpha", + "address": "0x8C3969Dd514B559D78135e9C210F2F773Feadf21" + }, + "GovernorAlpha2": { + "name": "GovernorAlpha2", + "contract": "GovernorAlpha", + "address": "0xc4F53FD250B3331000e3eBBE46BDA11D01445B2A" + } + }, + "Timelock": { + "address": "0x25e46957363e16C4e2D5F2854b062475F9f8d287", + "contract": "Timelock", + "description": "Test Timelock" + }, "Constructors": { "ZRX": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002307800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035a52580000000000000000000000000000000000000000000000000000000000", - "cUSDC": "0x0000000000000000000000007dc9912705ffdb928f62d9694fefdd3a09f3ecd0000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a00000000000000000000000023e8731b39e46941f73951b7f39d921bfd6c2e050000000000000000000000000000000000000000000000000000b5e620f4800000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016436f6d706f756e642055534420436f696e20f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000056355534443000000000000000000000000000000000000000000000000000000", + "cUSDC": "0x000000000000000000000000d87ba7a50b2e7e660f678a895e4b72e7cb4ccd9c000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be2867000000000000000000000000a4d7e82da57339020cbb3ca2b59d173acdca35040000000000000000000000000000000000000000000000000000b5e620f48000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000016436f6d706f756e642055534420436f696e20f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000056355534443000000000000000000000000000000000000000000000000000000", "PriceOracle": "0x", - "PriceOracleProxy": "0x000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000009f8376931cd4c3c38c0128a77082ba40e8d4a8a10000000000000000000000002b2aa9c7967efad4b73bfd8801333928806409a1", - "Maximillion": "0x0000000000000000000000002b2aa9c7967efad4b73bfd8801333928806409a1", - "cDAI": "0x000000000000000000000000b8c5995387c8086d0b496bd54755d14d7ced8256000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a00000000000000000000000063cfb6469408a64d6713c28231c8d90a609aeb23000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000011436f6d706f756e642044616920f09f938800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046344414900000000000000000000000000000000000000000000000000000000", + "PriceOracleProxy": "0x000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000009a536ed5c97686988f93c9f7c2a390bf3b59c0ec00000000000000000000000020572e4c090f15667cf7378e16fad2ea0e2f3eff000000000000000000000000cec4a43ebb02f9b80916f1c718338169d6d5c1f00000000000000000000000005d4373f8c1af21c391ad7ec755762d8dd3cca809000000000000000000000000822397d9a55d0fefd20f5c4bcab33c5f65bd28eb", + "Maximillion": "0x00000000000000000000000020572e4c090f15667cf7378e16fad2ea0e2f3eff", + "CNT1": "0x", + "GovernorAlpha": "0x00000000000000000000000025e46957363e16c4e2d5f2854b062475f9f8d287000000000000000000000000fa5e1b628efb17c024ca76f65b45faf6b3128ca5000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726", + "cDAI": "0x000000000000000000000000dc31ee1784292379fbb2964b3b9c4124d8f89c60000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000004c0f5b2f3739de27874e200cfbc482a9086066ce000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726000000000000000000000000b40d042a65dd413ae0fd85becf8d722e16bc46f100000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000021436f6d706f756e64204d756c7469436f6c6c61746572616c2044414920f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004634441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "GovernorAlpha2": "0x00000000000000000000000025e46957363e16c4e2d5f2854b062475f9f8d287000000000000000000000000fa5e1b628efb17c024ca76f65b45faf6b3128ca5000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726", "DAI": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003446169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034441490000000000000000000000000000000000000000000000000000000000", "StdComptroller": "0x", "Unitroller": "0x", - "cBAT": "0x0000000000000000000000003e0d325aba23e9562281d48b2bd52594db48cc18000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000008cd09af719a93fb3b52a05dbc4ec0fa559eec9c2000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000023436f6d706f756e6420426173696320417474656e74696f6e20546f6b656e20f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046342415400000000000000000000000000000000000000000000000000000000", + "Comp": "0x000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e8726", + "cBAT": "0x00000000000000000000000070cba46d2e933030e2f274ae58c951c800548aef000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000001e83fd76621da78266955c473cd8559d5fa1c34c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000023436f6d706f756e6420426173696320417474656e74696f6e20546f6b656e20f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046342415400000000000000000000000000000000000000000000000000000000", "Base0bps_Slope2000bps": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c68af0bb140000", "BAT": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000015426173696320417474656e74696f6e20546f6b656e000000000000000000000000000000000000000000000000000000000000000000000000000000000000034241540000000000000000000000000000000000000000000000000000000000", - "cETH": "0x000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a00000000000000000000000023e8731b39e46941f73951b7f39d921bfd6c2e05000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420457468657220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046345544800000000000000000000000000000000000000000000000000000000", + "cErc20Delegate": "0x", + "StdComptrollerG1": "0x", + "cETH": "0x000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be2867000000000000000000000000a4d7e82da57339020cbb3ca2b59d173acdca3504000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420457468657220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046345544800000000000000000000000000000000000000000000000000000000", "Base500bps_Slope1200bps": "0x00000000000000000000000000000000000000000000000000b1a2bc2ec5000000000000000000000000000000000000000000000000000001aa535d3d0c0000", + "cSAI": "0x0000000000000000000000008e9192d6f9d903b1beb3836f52a9f71e05846e42000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000004c0f5b2f3739de27874e200cfbc482a9086066ce000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000011436f6d706f756e642053414920f09f938800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046353414900000000000000000000000000000000000000000000000000000000", + "Timelock": "0x000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000078", "Base200bps_Slope3000bps": "0x00000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000429d069189e0000", - "cREP": "0x0000000000000000000000004308246f8806135d840c8c81bf658d58c0fd295c000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000008cd09af719a93fb3b52a05dbc4ec0fa559eec9c2000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420417567757220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000", + "cREP": "0x000000000000000000000000183faf58c4461972765f3f90c6272a4ece66bd96000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000001e83fd76621da78266955c473cd8559d5fa1c34c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000013436f6d706f756e6420417567757220f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046352455000000000000000000000000000000000000000000000000000000000", "WBTC": "0x", + "SAI": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003536169000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035341490000000000000000000000000000000000000000000000000000000000", "REP": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000005417567757200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035245500000000000000000000000000000000000000000000000000000000000", - "cZRX": "0x0000000000000000000000006c041606a9b4a449df6b5ff7274b79a869616d65000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000008cd09af719a93fb3b52a05dbc4ec0fa559eec9c2000000000000000000000000000000000000000000a56fa5b99019a5c800000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000010436f6d706f756e6420307820f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004635a525800000000000000000000000000000000000000000000000000000000", - "cWBTC": "0x000000000000000000000000fd1853eb1391b094dd9dfab566d94f8b6400316c000000000000000000000000e884dcc3167613a5d6a6ef96f90b74e411f32c8a0000000000000000000000008cd09af719a93fb3b52a05dbc4ec0fa559eec9c200000000000000000000000000000000000000000000000000470de4df82000000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000019436f6d706f756e6420577261707065642042544320f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000", + "cZRX": "0x000000000000000000000000e4e81fa6b16327d4b78cfeb83aade04ba7075165000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000001e83fd76621da78266955c473cd8559d5fa1c34c000000000000000000000000000000000000000000a56fa5b99019a5c8000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000010436f6d706f756e6420307820f09f9388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004635a525800000000000000000000000000000000000000000000000000000000", + "cWBTC": "0x000000000000000000000000c04b0d3107736c32e19f1c62b2af67be61d63a05000000000000000000000000627ea49279fd0de89186a58b8758ad02b6be28670000000000000000000000001e83fd76621da78266955c473cd8559d5fa1c34c00000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000008000000000000000000000000513c1ff435eccedd0fda5edd2ad5e5461f0e87260000000000000000000000000000000000000000000000000000000000000019436f6d706f756e6420577261707065642042544320f09f93880000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000", "USDC": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000855534420436f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444300000000000000000000000000000000000000000000000000000000" }, "Tokens": { @@ -96,25 +160,27 @@ "symbol": "ZRX", "decimals": 18, "contract": "FaucetToken", - "address": "0x6c041606A9b4A449dF6B5FF7274B79a869616D65" + "address": "0xe4E81Fa6B16327D4B78CFEB83AAdE04bA7075165" }, "cUSDC": { "name": "Compound USD Coin 📈", "symbol": "cUSDC", "decimals": 8, - "underlying": "0x7Dc9912705FfDb928F62D9694fEfdD3a09F3eCD0", + "underlying": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C", "contract": "CErc20", "initial_exchange_rate_mantissa": "200000000000000", - "address": "0xD9FFe966A831089981Bd1539503c9d3cb45E5AAb" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0" }, "cDAI": { - "name": "Compound Dai 📈", + "name": "Compound MultiCollateral DAI 📈", "symbol": "cDAI", "decimals": 8, - "underlying": "0xB8C5995387c8086d0B496Bd54755d14D7cED8256", - "contract": "CErc20", + "underlying": "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60", + "contract": "CErc20Delegator", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xd9fd9E875c9C1d567825E431DD6Ed4f0e51aA8Bf" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb" }, "DAI": { "description": "Standard", @@ -122,16 +188,24 @@ "symbol": "DAI", "decimals": 18, "contract": "FaucetToken", - "address": "0xB8C5995387c8086d0B496Bd54755d14D7cED8256" + "address": "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60" + }, + "COMP": { + "name": "Compound Governance Token", + "symbol": "COMP", + "decimals": 18, + "contract": "Comp", + "address": "0xfa5E1B628EFB17C024ca76f65B45Faf6B3128CA5" }, "cBAT": { "name": "Compound Basic Attention Token 📈", "symbol": "cBAT", "decimals": 8, - "underlying": "0x3e0d325ABA23E9562281D48b2Bd52594Db48CC18", + "underlying": "0x70cBa46d2e933030E2f274AE58c951C800548AeF", "contract": "CErc20", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xc31211101e6D98bEA24F1f32cbeBa3e9ac7c9749" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D" }, "BAT": { "description": "NonStandard", @@ -139,7 +213,7 @@ "symbol": "BAT", "decimals": 18, "contract": "FaucetNonStandardToken", - "address": "0x3e0d325ABA23E9562281D48b2Bd52594Db48CC18" + "address": "0x70cBa46d2e933030E2f274AE58c951C800548AeF" }, "cETH": { "name": "Compound Ether 📈", @@ -148,16 +222,28 @@ "underlying": "", "contract": "CEther", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x2B2aA9c7967eFAd4B73BFD8801333928806409A1" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF" + }, + "cSAI": { + "name": "Compound SAI 📈", + "symbol": "cSAI", + "decimals": 8, + "underlying": "0x8e9192D6f9d903b1BEb3836F52a9f71E05846e42", + "contract": "CErc20", + "initial_exchange_rate_mantissa": "200000000000000000000000000", + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809" }, "cREP": { "name": "Compound Augur 📈", "symbol": "cREP", "decimals": 8, - "underlying": "0x4308246f8806135d840c8C81bF658d58c0Fd295C", + "underlying": "0x183Faf58c4461972765f3F90c6272A4ecE66Bd96", "contract": "CErc20", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x0812e50F3740b89899Ce889C2ab913eA2565f626" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D" }, "WBTC": { "description": "WBTC", @@ -165,7 +251,15 @@ "symbol": "WBTC", "decimals": 8, "contract": "WBTCToken", - "address": "0xFD1853eb1391B094dd9DfAB566d94F8b6400316c" + "address": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05" + }, + "SAI": { + "description": "Standard", + "name": "Sai", + "symbol": "SAI", + "decimals": 18, + "contract": "FaucetToken", + "address": "0x8e9192D6f9d903b1BEb3836F52a9f71E05846e42" }, "REP": { "description": "Standard", @@ -173,25 +267,27 @@ "symbol": "REP", "decimals": 18, "contract": "FaucetToken", - "address": "0x4308246f8806135d840c8C81bF658d58c0Fd295C" + "address": "0x183Faf58c4461972765f3F90c6272A4ecE66Bd96" }, "cZRX": { "name": "Compound 0x 📈", "symbol": "cZRX", "decimals": 8, - "underlying": "0x6c041606A9b4A449dF6B5FF7274B79a869616D65", + "underlying": "0xe4E81Fa6B16327D4B78CFEB83AAdE04bA7075165", "contract": "CErc20", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xf412f4d0eE1D96eb486C6C2836bEDc4912bA294E" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1" }, "cWBTC": { "name": "Compound Wrapped BTC 📈", "symbol": "cWBTC", "decimals": 8, - "underlying": "0xFD1853eb1391B094dd9DfAB566d94F8b6400316c", + "underlying": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05", "contract": "CErc20", "initial_exchange_rate_mantissa": "20000000000000000", - "address": "0xe43d693C6d063BDF4A9681f9A6D9D1439344f4f7" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF" }, "USDC": { "description": "Standard", @@ -199,7 +295,20 @@ "symbol": "USDC", "decimals": 6, "contract": "FaucetToken", - "address": "0x7Dc9912705FfDb928F62D9694fEfdD3a09F3eCD0" + "address": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C" + } + }, + "CTokenDelegate": { + "cErc20Delegate": { + "address": "0xB40d042a65Dd413Ae0fd85bECF8D722e16bC46F1", + "contract": "CErc20Delegate", + "description": "Standard CErc20 Delegate" + } + }, + "Counter": { + "CNT1": { + "name": "CNT1", + "contract": "Counter" } }, "cTokens": { @@ -207,37 +316,41 @@ "name": "Compound 0x 📈", "symbol": "cZRX", "decimals": 8, - "underlying": "0x6c041606A9b4A449dF6B5FF7274B79a869616D65", + "underlying": "0xe4E81Fa6B16327D4B78CFEB83AAdE04bA7075165", "contract": "CErc20", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xf412f4d0eE1D96eb486C6C2836bEDc4912bA294E" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0xA253295eC2157B8b69C44b2cb35360016DAa25b1" }, "cBAT": { "name": "Compound Basic Attention Token 📈", "symbol": "cBAT", "decimals": 8, - "underlying": "0x3e0d325ABA23E9562281D48b2Bd52594Db48CC18", + "underlying": "0x70cBa46d2e933030E2f274AE58c951C800548AeF", "contract": "CErc20", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xc31211101e6D98bEA24F1f32cbeBa3e9ac7c9749" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0xCCaF265E7492c0d9b7C2f0018bf6382Ba7f0148D" }, - "cDAI": { - "name": "Compound Dai 📈", - "symbol": "cDAI", + "cSAI": { + "name": "Compound SAI 📈", + "symbol": "cSAI", "decimals": 8, - "underlying": "0xB8C5995387c8086d0B496Bd54755d14D7cED8256", + "underlying": "0x8e9192D6f9d903b1BEb3836F52a9f71E05846e42", "contract": "CErc20", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0xd9fd9E875c9C1d567825E431DD6Ed4f0e51aA8Bf" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x5D4373F8C1AF21C391aD7eC755762D8dD3CCA809" }, "cREP": { "name": "Compound Augur 📈", "symbol": "cREP", "decimals": 8, - "underlying": "0x4308246f8806135d840c8C81bF658d58c0Fd295C", + "underlying": "0x183Faf58c4461972765f3F90c6272A4ecE66Bd96", "contract": "CErc20", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x0812e50F3740b89899Ce889C2ab913eA2565f626" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x1d70B01A2C3e3B2e56FcdcEfe50d5c5d70109a5D" }, "cETH": { "name": "Compound Ether 📈", @@ -246,25 +359,38 @@ "underlying": "", "contract": "CEther", "initial_exchange_rate_mantissa": "200000000000000000000000000", - "address": "0x2B2aA9c7967eFAd4B73BFD8801333928806409A1" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x20572e4c090f15667cF7378e16FaD2eA0e2f3EfF" }, "cUSDC": { "name": "Compound USD Coin 📈", "symbol": "cUSDC", "decimals": 8, - "underlying": "0x7Dc9912705FfDb928F62D9694fEfdD3a09F3eCD0", + "underlying": "0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C", "contract": "CErc20", "initial_exchange_rate_mantissa": "200000000000000", - "address": "0xD9FFe966A831089981Bd1539503c9d3cb45E5AAb" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0xCEC4a43eBB02f9B80916F1c718338169d6d5C1F0" }, "cWBTC": { "name": "Compound Wrapped BTC 📈", "symbol": "cWBTC", "decimals": 8, - "underlying": "0xFD1853eb1391B094dd9DfAB566d94F8b6400316c", + "underlying": "0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05", "contract": "CErc20", "initial_exchange_rate_mantissa": "20000000000000000", - "address": "0xe43d693C6d063BDF4A9681f9A6D9D1439344f4f7" + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x6CE27497A64fFFb5517AA4aeE908b1E7EB63B9fF" + }, + "cDAI": { + "name": "Compound MultiCollateral DAI 📈", + "symbol": "cDAI", + "decimals": 8, + "underlying": "0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60", + "contract": "CErc20Delegator", + "initial_exchange_rate_mantissa": "200000000000000000000000000", + "admin": "0x513c1Ff435ECCEdD0fDA5edD2Ad5E5461F0E8726", + "address": "0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb" } }, "InterestRateModel": { @@ -274,7 +400,7 @@ "description": "WhitePaper baseRate=50000000000000000 multiplier=120000000000000000", "base": "50000000000000000", "slope": "120000000000000000", - "address": "0x63cFb6469408a64d6713C28231c8d90a609aeB23" + "address": "0x4C0f5B2f3739DE27874e200CFBc482a9086066CE" }, "Base0bps_Slope2000bps": { "name": "Base0bps_Slope2000bps", @@ -282,7 +408,7 @@ "description": "WhitePaper baseRate=0 multiplier=200000000000000000", "base": "0", "slope": "200000000000000000", - "address": "0x23E8731b39E46941f73951b7f39d921bFd6C2E05" + "address": "0xA4d7E82dA57339020cbB3cA2B59D173AcDCa3504" }, "Base200bps_Slope3000bps": { "name": "Base200bps_Slope3000bps", @@ -290,7 +416,7 @@ "description": "WhitePaper baseRate=20000000000000000 multiplier=300000000000000000", "base": "20000000000000000", "slope": "300000000000000000", - "address": "0x8cD09AF719A93fB3b52a05Dbc4eC0Fa559EEC9C2" + "address": "0x1E83FD76621da78266955C473CD8559D5FA1c34c" } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 6a92408da..a9c3b4664 100644 --- a/package.json +++ b/package.json @@ -4,36 +4,29 @@ "description": "The Compound Protocol", "main": "index.js", "scripts": { - "chain": "./script/ganache", "compile": "./script/compile", "coverage": "./script/coverage", "deploy": "./scenario/script/repl -s ./script/scen/deploy.scen", "lint": "./script/lint", - "ganache": "./script/ganache", "repl": "./scenario/script/repl", - "test": "./script/test" + "test": "./script/test", + "test:prepare": "NO_RUN=true ./script/test" }, "repository": "git@github.com:compound-finance/compound-protocol.git", "author": "Compound Finance", "license": "UNLICENSED", "devDependencies": { "bignumber.js": "8.0.1", - "ganache-cli": "^6.7.0", - "ganache-core": "^2.8.0", - "immutable": "^4.0.0-rc.12", - "jest": "^24.9.0", - "jest-cli": "^24.9.0", - "jest-codemods": "^0.22.0", - "jest-junit": "^9.0.0", + "jest-diff": "^24.9.0", + "jest-junit": "^6.4.0", "solium": "^1.2.5", "solparse": "^2.2.8" }, "dependencies": { - "eth-saddle": "^0.0.30", - "truffle-hdwallet-provider": "^1.0.17", - "web3": "^1.2.4" + "eth-saddle": "0.1.3" }, "resolutions": { - "scrypt.js": "https://registry.npmjs.org/@compound-finance/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz" + "scrypt.js": "https://registry.npmjs.org/@compound-finance/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz", + "**/ganache-core": "https://github.com/compound-finance/ganache-core.git#compound" } } diff --git a/saddle.config.js b/saddle.config.js index 885022db2..6928cea96 100644 --- a/saddle.config.js +++ b/saddle.config.js @@ -1,7 +1,10 @@ module.exports = { // solc: "solc", // Solc command to run - solc_args: ['--allow-paths','contracts,tests/Contracts'], // Extra solc args + solc_args: [ // Extra solc args + '--allow-paths','contracts,tests/Contracts', + '--evm-version', 'istanbul' + ], solc_shell_args: { // Args passed to `exec`, see: maxBuffer: 1024 * 500000, // https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options shell: '/bin/bash' @@ -9,14 +12,22 @@ module.exports = { // build_dir: ".build", // Directory to place built contracts // coverage_dir: "coverage", // Directory to place coverage files // coverage_ignore: [], // List of files to ignore for coverage - contracts: "{contracts,tests/Contracts}/*.sol", // Glob to match contract files + contracts: "{contracts,contracts/**,tests/Contracts}/*.sol", + // Glob to match contract files + trace: false, // Compile with debug artifacts // TODO: Separate contracts for test? - tests: ['**/tests/{,**/}*Test.js'], // Glob to match test files + tests: ['**/tests/{,**/}*Test.js'], // Glob to match test files networks: { // Define configuration for each network development: { - providers: [ // How to load provider (processed in order) - {env: "PROVIDER"}, // Try to load Http provider from `PROVIDER` env variable (e.g. env PROVIDER=http://...) - {http: "http://127.0.0.1:8545"} // Fallback to localhost provider + providers: [ + {env: "PROVIDER"}, + {ganache: { + gasLimit: 20000000, + gasPrice: 20000, + defaultBalanceEther: 1000000000, + allowUnlimitedContractSize: true, + hardfork: 'istanbul' + }} ], web3: { // Web3 options for immediate confirmation in development mode gas: [ @@ -39,12 +50,15 @@ module.exports = { }, test: { providers: [ - {ganache: { - gasLimit: 20000000, - gasPrice: 20000, - defaultBalanceEther: 1000000000, - allowUnlimitedContractSize: true - }} + { + ganache: { + gasLimit: 200000000, + gasPrice: 20000, + defaultBalanceEther: 1000000000, + allowUnlimitedContractSize: true, + hardfork: 'istanbul' + } + } ], web3: { gas: [ @@ -64,31 +78,55 @@ module.exports = { {env: "ACCOUNT"}, {unlocked: 0} ] - } - }, - rinkeby: { - providers: [ - {env: "PROVIDER"}, - {file: "~/.ethereum/rinkeby-url"}, // Load from given file with contents as the URL (e.g. https://infura.io/api-key) - {http: "https://rinkeby.infura.io"} - ], - web3: { - gas: [ - {env: "GAS"}, - {default: "4600000"} + }, + goerli: { + providers: [ + {env: "PROVIDER"}, + {file: "~/.ethereum/goerli-url"}, // Load from given file with contents as the URL (e.g. https://infura.io/api-key) ], - gas_price: [ - {env: "GAS_PRICE"}, - {default: "12000000000"} + web3: { + gas: [ + {env: "GAS"}, + {default: "6700000"} + ], + gas_price: [ + {env: "GAS_PRICE"}, + {default: "12000000000"} + ], + options: { + transactionConfirmationBlocks: 1, + transactionBlockTimeout: 5 + } + }, + accounts: [ + {env: "ACCOUNT"}, + {file: "~/.ethereum/goerli"} // Load from given file with contents as the private key (e.g. 0x...) + ] + }, + rinkeby: { + providers: [ + {env: "PROVIDER"}, + {file: "~/.ethereum/rinkeby-url"}, // Load from given file with contents as the URL (e.g. https://infura.io/api-key) + {http: "https://rinkeby.infura.io"} ], - options: { - transactionConfirmationBlocks: 1, - transactionBlockTimeout: 5 - } + web3: { + gas: [ + {env: "GAS"}, + {default: "4600000"} + ], + gas_price: [ + {env: "GAS_PRICE"}, + {default: "12000000000"} + ], + options: { + transactionConfirmationBlocks: 1, + transactionBlockTimeout: 5 + } + }, + accounts: [ + {env: "ACCOUNT"}, + {file: "~/.ethereum/rinkeby"} // Load from given file with contents as the private key (e.g. 0x...) + ] }, - accounts: [ - {env: "ACCOUNT"}, - {file: "~/.ethereum/rinkeby"} // Load from given file with contents as the private key (e.g. 0x...) - ] } } diff --git a/scenario/package.json b/scenario/package.json index 28382e643..9b4fb8fa9 100644 --- a/scenario/package.json +++ b/scenario/package.json @@ -1,13 +1,12 @@ { - "name": "compound-money-market", + "name": "compound-scenarios", "version": "0.2.1", - "description": "The Compound Money Market", + "description": "The Compound Scenario Runner", "main": "index.js", "scripts": { - "build": "./script/webpack", - "postinstall": "rm node_modules/ganache-core/typings/index.d.ts" + "build": "./script/webpack" }, - "repository": "git@github.com:compound-finance/money-market.git", + "repository": "git@github.com:compound-finance/compound-protocol.git", "author": "Compound Finance", "license": "UNLICENSED", "devDependencies": { @@ -22,12 +21,14 @@ }, "dependencies": { "bignumber.js": "8.0.1", - "eth-saddle": "^0.0.30", + "eth-saddle": "0.1.3", "ethers": "^4.0.0-beta.1", - "ganache-core": "https://github.com/trufflesuite/ganache-core.git", "immutable": "^4.0.0-rc.12", "truffle-flattener": "^1.3.0", - "truffle-hdwallet-provider": "1.0.5", "web3": "^1.2.4" + }, + "resolutions": { + "scrypt.js": "https://registry.npmjs.org/@compound-finance/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz", + "**/ganache-core": "https://github.com/compound-finance/ganache-core.git#compound" } } diff --git a/scenario/script/repl b/scenario/script/repl index 2ec33eddd..af71c6471 100755 --- a/scenario/script/repl +++ b/scenario/script/repl @@ -7,11 +7,13 @@ tsc_root="$dir/.." proj_root="$dir/../.." networks_root="$dir/../../networks" network=${NETWORK:-development} -script="$SCRIPT" +script=() verbose="$VERBOSE" dry_run="$DRY_RUN" no_tsc="$NO_TSC" +[ -n "$SCRIPT" ] && script+=("$SCRIPT") + usage() { echo "$0 usage:" && grep ".)\ #" $0; exit 0; } while getopts ":hdn:e:s:vt" arg; do case $arg in @@ -54,4 +56,4 @@ done [[ -z $no_tsc ]] && "$dir/tsc" [[ -z $no_compile ]] && "$proj_root/script/compile" -proj_root="$proj_root" env_vars="$env_vars" dry_run="$dry_run" script="$script" network="$network" verbose="$verbose" node "$tsc_root/.tsbuilt/repl.js" +proj_root="$proj_root" env_vars="$env_vars" dry_run="$dry_run" script="$(IFS=, ; echo "${script[*]}")" network="$network" verbose="$verbose" node "$tsc_root/.tsbuilt/repl.js" diff --git a/scenario/src/Accounts.ts b/scenario/src/Accounts.ts index 2845c5d75..63070f7f6 100644 --- a/scenario/src/Accounts.ts +++ b/scenario/src/Accounts.ts @@ -12,6 +12,7 @@ export const accountMap = { "geoff": 2, "third": 2, + "guardian": 2, "torrey": 3, "fourth": 3, diff --git a/scenario/src/Builder/CTokenBuilder.ts b/scenario/src/Builder/CTokenBuilder.ts index 1f171a2fc..f998d3e0b 100644 --- a/scenario/src/Builder/CTokenBuilder.ts +++ b/scenario/src/Builder/CTokenBuilder.ts @@ -53,7 +53,7 @@ export async function buildCToken( ` #### CErc20Delegator - * "CErc20Delegator symbol: name: underlying:
comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
implementation:
becomeImplementationData:" - A CToken Scenario for local testing + * "CErc20Delegator symbol: name: underlying:
comptroller:
interestRateModel:
initialExchangeRate: decimals: admin:
implementation:
becomeImplementationData:" - The real deal CToken * E.g. "CToken Deploy CErc20Delegator cDAI \"Compound DAI\" (Erc20 DAI Address) (Comptroller Address) (InterestRateModel Address) 1.0 8 Geoff (CToken CDaiDelegate Address) "0x0123434anyByTes314535q" " `, 'CErc20Delegator', diff --git a/scenario/src/Builder/CompBuilder.ts b/scenario/src/Builder/CompBuilder.ts new file mode 100644 index 000000000..0d23cf5d1 --- /dev/null +++ b/scenario/src/Builder/CompBuilder.ts @@ -0,0 +1,110 @@ +import { Event } from '../Event'; +import { World, addAction } from '../World'; +import { Comp, CompScenario } from '../Contract/Comp'; +import { Invokation } from '../Invokation'; +import { getAddressV } from '../CoreValue'; +import { StringV, AddressV } from '../Value'; +import { Arg, Fetcher, getFetcherValue } from '../Command'; +import { storeAndSaveContract } from '../Networks'; +import { getContract } from '../Contract'; + +const CompContract = getContract('Comp'); +const CompScenarioContract = getContract('CompScenario'); + +export interface TokenData { + invokation: Invokation; + contract: string; + address?: string; + symbol: string; + name: string; + decimals?: number; +} + +export async function buildComp( + world: World, + from: string, + params: Event +): Promise<{ world: World; comp: Comp; tokenData: TokenData }> { + const fetchers = [ + new Fetcher<{ account: AddressV }, TokenData>( + ` + #### Scenario + + * "Comp Deploy Scenario account:
" - Deploys Scenario Comp Token + * E.g. "Comp Deploy Scenario Geoff" + `, + 'Scenario', + [ + new Arg("account", getAddressV), + ], + async (world, { account }) => { + return { + invokation: await CompScenarioContract.deploy(world, from, [account.val]), + contract: 'CompScenario', + symbol: 'COMP', + name: 'Compound Governance Token', + decimals: 18 + }; + } + ), + + new Fetcher<{ account: AddressV }, TokenData>( + ` + #### Comp + + * "Comp Deploy account:
" - Deploys Comp Token + * E.g. "Comp Deploy Geoff" + `, + 'Comp', + [ + new Arg("account", getAddressV), + ], + async (world, { account }) => { + if (world.isLocalNetwork()) { + return { + invokation: await CompScenarioContract.deploy(world, from, [account.val]), + contract: 'CompScenario', + symbol: 'COMP', + name: 'Compound Governance Token', + decimals: 18 + }; + } else { + return { + invokation: await CompContract.deploy(world, from, [account.val]), + contract: 'Comp', + symbol: 'COMP', + name: 'Compound Governance Token', + decimals: 18 + }; + } + }, + { catchall: true } + ) + ]; + + let tokenData = await getFetcherValue("DeployComp", fetchers, world, params); + let invokation = tokenData.invokation; + delete tokenData.invokation; + + if (invokation.error) { + throw invokation.error; + } + + const comp = invokation.value!; + tokenData.address = comp._address; + + world = await storeAndSaveContract( + world, + comp, + 'Comp', + invokation, + [ + { index: ['Comp'], data: tokenData }, + { index: ['Tokens', tokenData.symbol], data: tokenData } + ] + ); + + tokenData.invokation = invokation; + + return { world, comp, tokenData }; +} diff --git a/scenario/src/Builder/GovernorBuilder.ts b/scenario/src/Builder/GovernorBuilder.ts new file mode 100644 index 000000000..196758f22 --- /dev/null +++ b/scenario/src/Builder/GovernorBuilder.ts @@ -0,0 +1,85 @@ +import { Event } from "../Event"; +import { World } from "../World"; +import { Governor } from "../Contract/Governor"; +import { Invokation } from "../Invokation"; +import { getAddressV, getStringV } from "../CoreValue"; +import { AddressV, StringV } from "../Value"; +import { Arg, Fetcher, getFetcherValue } from "../Command"; +import { storeAndSaveContract } from "../Networks"; +import { getContract } from "../Contract"; + +const GovernorAlphaContract = getContract("GovernorAlpha"); +const GovernorAlphaScenarioContract = getContract("GovernorAlphaScenario"); + +export interface GovernorData { + invokation: Invokation; + name: string; + contract: string; + address?: string; +} + +export async function buildGovernor( + world: World, + from: string, + params: Event +): Promise<{ world: World; governor: Governor; govData: GovernorData }> { + const fetchers = [ + new Fetcher< + { name: StringV, timelock: AddressV, comp: AddressV, guardian: AddressV }, + GovernorData + >( + ` + #### GovernorAlpha + + * "Governor Deploy Alpha name: timelock:
comp:
guardian:
" - Deploys Compound Governor Alpha + * E.g. "Governor Deploy Alpha GovernorScenario (Address Timelock) (Address Comp) Guardian" + `, + "Alpha", + [ + new Arg("name", getStringV), + new Arg("timelock", getAddressV), + new Arg("comp", getAddressV), + new Arg("guardian", getAddressV) + ], + async (world, { name, timelock, comp, guardian }) => { + return { + invokation: await GovernorAlphaContract.deploy( + world, + from, + [timelock.val, comp.val, guardian.val] + ), + name: name.val, + contract: "GovernorAlpha" + }; + } + ) + ]; + + let govData = await getFetcherValue( + "DeployGovernor", + fetchers, + world, + params + ); + let invokation = govData.invokation; + delete govData.invokation; + + if (invokation.error) { + throw invokation.error; + } + + const governor = invokation.value!; + govData.address = governor._address; + + world = await storeAndSaveContract( + world, + governor, + govData.name, + invokation, + [ + { index: ["Governor", govData.name], data: govData }, + ] + ); + + return { world, governor, govData }; +} diff --git a/scenario/src/Contract.ts b/scenario/src/Contract.ts index b5952da29..03b4ba14a 100644 --- a/scenario/src/Contract.ts +++ b/scenario/src/Contract.ts @@ -1,10 +1,9 @@ import * as path from 'path'; import * as crypto from 'crypto'; -import {World} from './World'; -import {Invokation} from './Invokation'; -import {ErrorReporter, NoErrorReporter} from './ErrorReporter'; -import {getNetworkPath, readFile} from './File'; -import { ABIItem } from 'web3-utils'; +import { World } from './World'; +import { Invokation } from './Invokation'; +import { readFile } from './File'; +import { AbiItem } from 'web3-utils'; export interface Raw { data: string @@ -24,10 +23,11 @@ export interface Event { } export interface Contract { + address: string _address: string name: string methods: any - _jsonInterface: ABIItem[] + _jsonInterface: AbiItem[] constructorAbi?: string getPastEvents: (event: string, options: { filter: object, fromBlock: number, toBlock: number | string }) => Event[] } @@ -62,8 +62,6 @@ class ContractStub { inputs = []; } - const abi = world.web3.eth.abi.encodeParameters(inputs, args); - try { let contract; let receipt; @@ -78,8 +76,8 @@ class ContractStub { events: {} }; } else { - ({contract, receipt} = await world.saddle.deployFull(this.name, args, invokationOpts, world.web3)); - contract.constructorAbi = abi; + ({ contract, receipt } = await world.saddle.deployFull(this.name, args, invokationOpts, world.web3)); + contract.constructorAbi = world.web3.eth.abi.encodeParameters(inputs, args);; } return new Invokation(contract, receipt, null, null); @@ -110,7 +108,7 @@ export function setContractName(name: string, contract: Contract): Contract { return contract; } -export async function getPastEvents(world: World, contract: Contract, name: string, event: string, filter: object={}): Promise { +export async function getPastEvents(world: World, contract: Contract, name: string, event: string, filter: object = {}): Promise { const block = world.getIn(['contractData', 'Blocks', name]); if (!block) { throw new Error(`Cannot get events when missing deploy block for ${name}`); @@ -129,7 +127,7 @@ export async function decodeCall(world: World, contract: Contract, input: string let funsMapped = contract._jsonInterface.reduce((acc, fun) => { if (fun.type === 'function') { - let functionAbi = `${fun.name}(${fun.inputs.map((i) => i.type).join(',')})`; + let functionAbi = `${fun.name}(${(fun.inputs || []).map((i) => i.type).join(',')})`; let sig = world.web3.utils.sha3(functionAbi).slice(2, 10); return { @@ -158,18 +156,18 @@ export async function decodeCall(world: World, contract: Contract, input: string } // XXXS Handle -async function getNetworkContract(world: World, name: string): Promise<{abi: any[], bin: string}> { +async function getNetworkContract(world: World, name: string): Promise<{ abi: any[], bin: string }> { let basePath = world.basePath || "" let network = world.network || "" let pizath = (name, ext) => path.join(basePath, '.build', `contracts.json`); let abi, bin; - if ( network == 'coverage' ) { + if (network == 'coverage') { let json = await readFile(world, pizath(name, 'json'), null, JSON.parse); abi = json.abi; bin = json.bytecode.substr(2); } else { - let {networkContracts} = await getNetworkContracts(world); + let { networkContracts } = await getNetworkContracts(world); let networkContract = networkContracts[name]; abi = JSON.parse(networkContract.abi); bin = networkContract.bin; @@ -183,7 +181,7 @@ async function getNetworkContract(world: World, name: string): Promise<{abi: any } } -export async function getNetworkContracts(world: World): Promise<{networkContracts: object, version: string}> { +export async function getNetworkContracts(world: World): Promise<{ networkContracts: object, version: string }> { let basePath = world.basePath || "" let network = world.network || "" diff --git a/scenario/src/Contract/Comp.ts b/scenario/src/Contract/Comp.ts new file mode 100644 index 000000000..53e1692a3 --- /dev/null +++ b/scenario/src/Contract/Comp.ts @@ -0,0 +1,41 @@ +import { Contract } from '../Contract'; +import { encodedNumber } from '../Encoding'; +import { Callable, Sendable } from '../Invokation'; + +interface Checkpoint { + fromBlock: number; + votes: number; +} + +export interface CompMethods { + name(): Callable; + symbol(): Callable; + decimals(): Callable; + totalSupply(): Callable; + balanceOf(address: string): Callable; + allowance(owner: string, spender: string): Callable; + approve(address: string, amount: encodedNumber): Sendable; + transfer(address: string, amount: encodedNumber): Sendable; + transferFrom(owner: string, spender: string, amount: encodedNumber): Sendable; + checkpoints(account: string, index: number): Callable; + numCheckpoints(account: string): Callable; + delegate(account: string): Sendable; + getCurrentVotes(account: string): Callable; + getPriorVotes(account: string, blockNumber: encodedNumber): Callable; + setBlockNumber(blockNumber: encodedNumber): Sendable; +} + +export interface CompScenarioMethods extends CompMethods { + transferScenario(destinations: string[], amount: encodedNumber): Sendable; + transferFromScenario(froms: string[], amount: encodedNumber): Sendable; +} + +export interface Comp extends Contract { + methods: CompMethods; + name: string; +} + +export interface CompScenario extends Contract { + methods: CompScenarioMethods; + name: string; +} diff --git a/scenario/src/Contract/Counter.ts b/scenario/src/Contract/Counter.ts new file mode 100644 index 000000000..81f553d14 --- /dev/null +++ b/scenario/src/Contract/Counter.ts @@ -0,0 +1,12 @@ +import { Contract } from '../Contract'; +import { encodedNumber } from '../Encoding'; +import { Callable, Sendable } from '../Invokation'; + +export interface CounterMethods { + increment(by: encodedNumber): Sendable; +} + +export interface Counter extends Contract { + methods: CounterMethods; + name: string; +} diff --git a/scenario/src/Contract/Governor.ts b/scenario/src/Contract/Governor.ts new file mode 100644 index 000000000..c0af3242f --- /dev/null +++ b/scenario/src/Contract/Governor.ts @@ -0,0 +1,53 @@ +import { Contract } from '../Contract'; +import { Callable, Sendable } from '../Invokation'; +import { encodedNumber } from '../Encoding'; + +export interface Proposal { + id: number + proposer: string + eta: number + targets: string[] + values: number[] + signatures: string[] + calldatas: string[] + startBlock: number + endBlock: number + forVotes: number + againstVotes: number +} + +export const proposalStateEnums = { + 0: "Pending", + 1: "Active", + 2: "Canceled", + 3: "Defeated", + 4: "Succeeded", + 5: "Queued", + 6: "Expired", + 7: "Executed" +} + +export interface GovernorMethods { + guardian(): Callable; + propose(targets: string[], values: encodedNumber[], signatures: string[], calldatas: string[], description: string): Sendable + proposals(proposalId: number): Callable; + proposalCount(): Callable; + latestProposalIds(proposer: string): Callable; + getReceipt(proposalId: number, voter: string): Callable<{ hasVoted: boolean, support: boolean, votes: number }>; + castVote(proposalId: number, support: boolean): Sendable; + queue(proposalId: encodedNumber): Sendable; + execute(proposalId: encodedNumber): Sendable; + cancel(proposalId: encodedNumber): Sendable; + setBlockNumber(blockNumber: encodedNumber): Sendable; + setBlockTimestamp(blockTimestamp: encodedNumber): Sendable; + state(proposalId: encodedNumber): Callable; + __queueSetTimelockPendingAdmin(newPendingAdmin: string, eta: encodedNumber): Sendable; + __executeSetTimelockPendingAdmin(newPendingAdmin: string, eta: encodedNumber): Sendable; + __acceptAdmin(): Sendable; + __abdicate(): Sendable; +} + +export interface Governor extends Contract { + methods: GovernorMethods; + name: string; +} diff --git a/scenario/src/Contract/Timelock.ts b/scenario/src/Contract/Timelock.ts index 081fc050f..3ea7a284c 100644 --- a/scenario/src/Contract/Timelock.ts +++ b/scenario/src/Contract/Timelock.ts @@ -35,6 +35,7 @@ interface TimelockMethods { blockTimestamp(): Callable; harnessFastForward(seconds: encodedNumber): Sendable; harnessSetBlockTimestamp(seconds: encodedNumber): Sendable; + harnessSetAdmin(admin: string): Sendable; } export interface Timelock extends Contract { diff --git a/scenario/src/ContractLookup.ts b/scenario/src/ContractLookup.ts index 338cb0c65..b7065588f 100644 --- a/scenario/src/ContractLookup.ts +++ b/scenario/src/ContractLookup.ts @@ -7,9 +7,11 @@ import { Contract } from './Contract'; import { mustString } from './Utils'; import { CErc20Delegate } from './Contract/CErc20Delegate'; +import { Comp } from './Contract/Comp'; import { Comptroller } from './Contract/Comptroller'; import { ComptrollerImpl } from './Contract/ComptrollerImpl'; import { CToken } from './Contract/CToken'; +import { Governor } from './Contract/Governor'; import { Erc20 } from './Contract/Erc20'; import { InterestRateModel } from './Contract/InterestRateModel'; import { PriceOracle } from './Contract/PriceOracle'; @@ -103,6 +105,10 @@ export function getErc20Address(world: World, erc20Arg: string): string { return getContractDataString(world, [['Tokens', erc20Arg, 'address']]); } +export function getGovernorAddress(world: World, governorArg: string): string { + return getContractDataString(world, [['Governor', governorArg, 'address']]); +} + export async function getPriceOracleProxy(world: World): Promise { return getWorldContract(world, [['Contracts', 'PriceOracleProxy']]); } @@ -111,6 +117,33 @@ export async function getPriceOracle(world: World): Promise { return getWorldContract(world, [['Contracts', 'PriceOracle']]); } +export async function getComp( + world: World, + compArg: Event +): Promise { + return getWorldContract(world, [['Comp', 'address']]); +} + +export async function getCompData( + world: World, + compArg: string +): Promise<[Comp, string, Map]> { + let contract = await getComp(world, (compArg)); + let data = getContractData(world, [['Comp', compArg]]); + + return [contract, compArg, >(data)]; +} + +export async function getGovernorData( + world: World, + governorArg: string +): Promise<[Governor, string, Map]> { + let contract = getWorldContract(world, [['Governor', governorArg, 'address']]); + let data = getContractData(world, [['Governor', governorArg]]); + + return [contract, governorArg, >(data)]; +} + export async function getInterestRateModel( world: World, interestRateModelArg: Event diff --git a/scenario/src/CoreEvent.ts b/scenario/src/CoreEvent.ts index 97c4791ed..5b22937f2 100644 --- a/scenario/src/CoreEvent.ts +++ b/scenario/src/CoreEvent.ts @@ -26,8 +26,10 @@ import { maximillionCommands, processMaximillionEvent } from './Event/Maximillio import { invariantCommands, processInvariantEvent } from './Event/InvariantEvent'; import { expectationCommands, processExpectationEvent } from './Event/ExpectationEvent'; import { timelockCommands, processTimelockEvent } from './Event/TimelockEvent'; +import { compCommands, processCompEvent } from './Event/CompEvent'; +import { governorCommands, processGovernorEvent } from './Event/GovernorEvent'; import { processTrxEvent, trxCommands } from './Event/TrxEvent'; -import { fetchers, getCoreValue } from './CoreValue'; +import { getFetchers, getCoreValue } from './CoreValue'; import { formatEvent } from './Formatter'; import { fallback } from './Invokation'; import { sendRPC, sleep } from './Utils'; @@ -36,6 +38,9 @@ import { encodedNumber } from './Encoding'; import { printHelp } from './Help'; import { loadContracts } from './Networks'; import { fork } from './Hypothetical'; +import { buildContractEvent } from './EventBuilder'; +import { Counter } from './Contract/Counter'; +import Web3 from 'web3'; export class EventProcessingError extends Error { error: Error; @@ -47,6 +52,7 @@ export class EventProcessingError extends Error { this.error = error; this.event = event; this.message = `Error: \`${this.error.toString()}\` when processing \`${formatEvent(this.event)}\``; + this.stack = error.stack; } } @@ -109,7 +115,7 @@ async function sendEther(world: World, from: string, to: string, amount: encoded return world; } -export const commands = [ +export const commands: (View | ((world: World) => Promise>))[] = [ new View<{ n: NumberV }>( ` #### History @@ -157,22 +163,23 @@ export const commands = [ return world; } ), - new View<{ res: Value }>( - ` - #### Read + async (world: World) => + new View<{ res: Value }>( + ` + #### Read - * "Read ..." - Reads given value and prints result - * E.g. "Read CToken cBAT ExchangeRateStored" - Returns exchange rate of cBAT - `, - 'Read', - [new Arg('res', getCoreValue, { variadic: true })], - async (world, { res }) => { - world.printer.printValue(res); + * "Read ..." - Reads given value and prints result + * E.g. "Read CToken cBAT ExchangeRateStored" - Returns exchange rate of cBAT + `, + 'Read', + [new Arg('res', getCoreValue, { variadic: true })], + async (world, { res }) => { + world.printer.printValue(res); - return world; - }, - { subExpressions: fetchers } - ), + return world; + }, + { subExpressions: (await getFetchers(world)).fetchers } + ), new View<{ message: StringV }>( ` #### Print @@ -326,6 +333,21 @@ export const commands = [ } ), + new View<{ timestamp: NumberV }>( + ` + #### FreezeTime + + * "FreezeTime timestamp:" - Freeze Ganache evm time to specific timestamp + * E.g. "FreezeTime 1573597400" + `, + 'FreezeTime', + [new Arg('timestamp', getNumberV)], + async (world, { timestamp }) => { + await sendRPC(world, 'evm_freezeTime', [timestamp.val]); + return world; + } + ), + new View<{}>( ` #### MineBlock @@ -341,6 +363,39 @@ export const commands = [ } ), + new View<{ blockNumber: NumberV }>( + ` + #### SetBlockNumber + + * "SetBlockNumber 10" - Increase Ganache evm block number + * E.g. "SetBlockNumber 10" + `, + 'SetBlockNumber', + [new Arg('blockNumber', getNumberV)], + async (world, { blockNumber }) => { + + await sendRPC(world, 'evm_mineBlockNumber', [blockNumber.val]) + return world; + } + ), + + new View<{ blockNumber: NumberV }>( + ` + #### AdvanceBlocks + + * "AdvanceBlocks 10" - Increase Ganache latest + block number + * E.g. "AdvanceBlocks 10" + `, + 'AdvanceBlocks', + [new Arg('blockNumber', getNumberV)], + async (world, { blockNumber }) => { + + let { result: num }: any = await sendRPC(world, 'eth_blockNumber', []) + await sendRPC(world, 'evm_mineBlockNumber', [Number(blockNumber.val) + parseInt(num)]) + return world; + } + ), + new View<{}>( ` #### Inspect @@ -656,6 +711,38 @@ export const commands = [ { subExpressions: timelockCommands() } ), + new Command<{ event: EventV }>( + ` + #### Comp + + * "Comp ...event" - Runs given comp event + * E.g. "Comp Deploy" + `, + 'Comp', + [new Arg('event', getEventV, { variadic: true })], + (world, from, { event }) => { + return processCompEvent(world, event.val, from); + }, + { subExpressions: compCommands() } + ), + + new Command<{ event: EventV }>( + ` + #### Governor + + * "Governor ...event" - Runs given governor event + * E.g. "Governor Deploy Alpha" + `, + 'Governor', + [new Arg('event', getEventV, { variadic: true })], + (world, from, { event }) => { + return processGovernorEvent(world, event.val, from); + }, + { subExpressions: governorCommands() } + ), + + buildContractEvent("Counter"), + new View<{ event: EventV }>( ` #### Help @@ -667,6 +754,7 @@ export const commands = [ [new Arg('event', getEventV, { variadic: true })], async (world, { event }) => { world.printer.printLine(''); + let { commands } = await getCommands(world); printHelp(world.printer, event.val, commands); return world; @@ -674,6 +762,23 @@ export const commands = [ ) ]; +async function getCommands(world: World) { + if (world.commands) { + return { world, commands: world.commands }; + } + + let allCommands = await Promise.all(commands.map((command) => { + if (typeof (command) === 'function') { + return command(world); + } else { + return Promise.resolve(command); + } + })); + + return { world: world.set('commands', allCommands), commands: allCommands }; +} + export async function processCoreEvent(world: World, event: Event, from: string | null): Promise { - return await processCommandEvent('Core', commands, world, event, from); + let { world: nextWorld, commands } = await getCommands(world); + return await processCommandEvent('Core', commands, nextWorld, event, from); } diff --git a/scenario/src/CoreValue.ts b/scenario/src/CoreValue.ts index 0bb8160ee..78e0ca27d 100644 --- a/scenario/src/CoreValue.ts +++ b/scenario/src/CoreValue.ts @@ -3,6 +3,7 @@ import { World } from './World'; import { AddressV, AnythingV, + ArrayV, BoolV, EventV, ExpNumberV, @@ -29,10 +30,13 @@ import { getPriceOracleValue, priceOracleFetchers } from './Value/PriceOracleVal import { getPriceOracleProxyValue, priceOracleProxyFetchers } from './Value/PriceOracleProxyValue'; import { getTimelockValue, timelockFetchers, getTimelockAddress } from './Value/TimelockValue'; import { getMaximillionValue, maximillionFetchers } from './Value/MaximillionValue'; +import { getCompValue, compFetchers } from './Value/CompValue'; +import { getGovernorValue, governorFetchers } from './Value/GovernorValue'; import { getAddress } from './ContractLookup'; -import { mustArray } from './Utils'; +import { mustArray, sendRPC } from './Utils'; import { toEncodableNum } from './Encoding'; import { BigNumber } from 'bignumber.js'; +import { buildContractFetcher } from './EventBuilder'; const expMantissa = new BigNumber('1000000000000000000'); @@ -83,7 +87,7 @@ export async function mapValue( } if (!(val instanceof type)) { - throw new Error(`Expected ${type.name} from ${event.toString()}, got: ${val.toString()}`); + throw new Error(`Expected "${type.name}" from event "${event.toString()}", was: "${val.toString()}"`); } // We just did a typecheck above... @@ -183,6 +187,15 @@ export async function getMapV(world: World, event: Event): Promise { return new MapV(res); } +export function getArrayV(fetcher: (World, Event) => Promise): (World, Event) => Promise> { + return async (world: World, event: Event): Promise> => { + const res = await Promise.all( + mustArray(event).filter((x) => x !== 'List').map(e => fetcher(world, e)) + ); + return new ArrayV(res); + } +} + export async function getStringV(world: World, event: Event): Promise { return mapValue(world, event, str => new StringV(str), getCoreValue, StringV); } @@ -193,7 +206,7 @@ async function getEtherBalance(world: World, address: string): Promise return new NumberV(balance); } -export const fetchers = [ +const fetchers = [ new Fetcher<{}, BoolV>( ` #### True @@ -368,7 +381,7 @@ export const fetchers = [ new Fetcher< { addr: AddressV; slot: NumberV; start: NumberV; valType: StringV }, - BoolV | AddressV | ExpNumberV | undefined + BoolV | AddressV | ExpNumberV | NothingV >( ` #### StorageAt @@ -414,13 +427,15 @@ export const fetchers = [ } else { return new ExpNumberV(parsed.toString(), 1); } + default: + return new NothingV(); } } ), new Fetcher< { addr: AddressV; slot: NumberV; key: AddressV; nestedKey: AddressV; valType: StringV }, - ListV | undefined + ListV | NothingV >( ` #### StorageAtNestedMapping @@ -472,13 +487,15 @@ export const fetchers = [ new ExpNumberV(collateralFactor.toString(), 1e18), new BoolV(userInMarket == '0x01') ]); + default: + return new NothingV(); } } ), new Fetcher< { addr: AddressV; slot: NumberV; key: AddressV; valType: StringV }, - AddressV | BoolV | ExpNumberV | ListV | undefined + AddressV | BoolV | ExpNumberV | ListV | NothingV >( ` #### StorageAtMapping @@ -534,10 +551,23 @@ export const fetchers = [ } else { return new ExpNumberV(parsed.toString(), 1); } + default: + return new NothingV(); } } ), - + new Fetcher<{}, NumberV>( + ` + #### GetBlockNumber + * GetBlockNumber + `, + 'GetBlockNumber', + [], + async (world, {}) => { + let { result: num }: any = await sendRPC(world, 'eth_blockNumber', []); + return new NumberV(parseInt(num)); + } + ), new Fetcher<{}, AddressV>( ` #### LastContract @@ -546,7 +576,28 @@ export const fetchers = [ `, 'LastContract', [], - async (world, {}) => new AddressV(world.get('lastContract')) + async (world, { }) => new AddressV(world.get('lastContract')) + ), + new Fetcher<{}, NumberV>( + ` + #### LastBlock + + * "LastBlock" - The block of the last transaction + `, + 'LastBlock', + [], + async (world, { }) => { + let invokation = world.get('lastInvokation'); + if (!invokation) { + throw new Error(`Expected last invokation for "lastBlock" but none found.`); + } + + if (!invokation.receipt) { + throw new Error(`Expected last invokation to have receipt for "lastBlock" but none found.`); + } + + return new NumberV(invokation.receipt.blockNumber); + } ), new Fetcher<{}, NumberV>( ` @@ -673,6 +724,18 @@ export const fetchers = [ const now = Math.floor(Date.now() / 1000); return new NumberV(secondsBn.plus(now).toFixed(0)); } + ), + new Fetcher<{}, NumberV>( + ` + #### Now + + * "Now seconds:" - Returns current timestamp + `, + 'Now', + [], + async (world, {}) => { + return new NumberV(Math.floor(Date.now() / 1000)); + } ), new Fetcher<{}, StringV>( ` @@ -876,9 +939,48 @@ export const fetchers = [ [new Arg('res', getMCDValue, { variadic: true })], async (world, { res }) => res, { subExpressions: mcdFetchers() } - ) + ), + new Fetcher<{ res: Value }, Value>( + ` + #### Comp + + * "Comp ...compArgs" - Returns Comp value + `, + 'Comp', + [new Arg('res', getCompValue, { variadic: true })], + async (world, { res }) => res, + { subExpressions: compFetchers() } + ), + new Fetcher<{ res: Value }, Value>( + ` + #### Governor + + * "Governor ...governorArgs" - Returns Governor value + `, + 'Governor', + [new Arg('res', getGovernorValue, { variadic: true })], + async (world, { res }) => res, + { subExpressions: governorFetchers() } + ), ]; +let contractFetchers = [ + "Counter" +]; + +export async function getFetchers(world: World) { + if (world.fetchers) { + return { world, fetchers: world.fetchers }; + } + + let allFetchers = fetchers.concat(await Promise.all(contractFetchers.map((contractName) => { + return buildContractFetcher(world, contractName); + }))); + + return { world: world.set('fetchers', allFetchers), fetchers: allFetchers }; +} + export async function getCoreValue(world: World, event: Event): Promise { - return await getFetcherValue('Core', fetchers, world, event); + let {world: nextWorld, fetchers} = await getFetchers(world); + return await getFetcherValue('Core', fetchers, nextWorld, event); } diff --git a/scenario/src/Event/AssertionEvent.ts b/scenario/src/Event/AssertionEvent.ts index cc13cbd74..341584309 100644 --- a/scenario/src/Event/AssertionEvent.ts +++ b/scenario/src/Event/AssertionEvent.ts @@ -1,10 +1,10 @@ -import {Event} from '../Event'; -import {fail, World} from '../World'; -import {mustArray} from '../Utils'; -import {getCoreValue} from '../CoreValue'; -import {formatError} from '../Formatter'; -import {Failure, Invokation, InvokationRevertFailure} from '../Invokation'; -import {formatEvent} from '../Formatter'; +import { Event } from '../Event'; +import { fail, World } from '../World'; +import { mustArray } from '../Utils'; +import { getCoreValue } from '../CoreValue'; +import { formatError } from '../Formatter'; +import { Failure, Invokation, InvokationRevertFailure } from '../Invokation'; +import { formatEvent } from '../Formatter'; import { getAddressV, getBoolV, @@ -23,7 +23,7 @@ import { StringV, Value } from '../Value'; -import {Arg, View, processCommandEvent} from '../Command'; +import { Arg, View, processCommandEvent } from '../Command'; async function assertApprox(world: World, given: NumberV, expected: NumberV, tolerance: NumberV): Promise { if (Math.abs(Number(expected.sub(given).div(expected).val)) > Number(tolerance.val)) { @@ -175,6 +175,18 @@ async function assertReadError(world: World, event: Event, message: string, isRe return world; } +function getLogValue(value: any): Value { + if (typeof value === 'number' || (typeof value === 'string' && value.match(/^[0-9]+$/))) { + return new NumberV(Number(value)); + } else if (typeof value === 'string') { + return new StringV(value); + } else if (typeof value === 'boolean') { + return new BoolV(value); + } else { + throw new Error('Unknown type of log parameter: ${value}'); + } +} + async function assertLog(world: World, event: string, keyValues: MapV): Promise { if (!world.lastInvokation) { return fail(world, `Expected log message "${event}" from contract execution, but world missing any invokations.`); @@ -185,21 +197,51 @@ async function assertLog(world: World, event: string, keyValues: MapV): Promise< if (!log) { const events = Object.keys(world.lastInvokation.receipt.events || {}).join(', '); - return fail(world, `Expected log with event \`${event}\`, found logs with events: [${events}]`); } - Object.entries(keyValues.val).forEach(([key, value]) => { - if (log.returnValues[key] === undefined) { - fail(world, `Expected log to have param for \`${key}\``); - } else { - let logValue = new StringV(log.returnValues[key]); + if (Array.isArray(log)) { + const found = log.find(_log => { + return Object.entries(keyValues.val).reduce((previousValue, currentValue) => { + const [key, value] = currentValue; + if (previousValue) { + if (_log.returnValues[key] === undefined) { + return false; + } else { + let logValue = getLogValue(_log.returnValues[key]); + + if (!logValue.compareTo(world, value)) { + return false; + } + + return true; + } + } + return previousValue; + }, true as boolean); + }); + + if (!found) { + const eventExpected = Object.entries(keyValues.val).join(', '); + const eventDetailsFound = log.map(_log => { + return Object.entries(_log.returnValues); + }); + return fail(world, `Expected log with event \`${eventExpected}\`, found logs for this event with: [${eventDetailsFound}]`); + } - if (!value.compareTo(world, logValue)) { - fail(world, `Expected log to have param \`${key}\` to match ${value.toString()}, but got ${logValue.toString()}`); + } else { + Object.entries(keyValues.val).forEach(([key, value]) => { + if (log.returnValues[key] === undefined) { + fail(world, `Expected log to have param for \`${key}\``); + } else { + let logValue = getLogValue(log.returnValues[key]); + + if (!logValue.compareTo(world, value)) { + fail(world, `Expected log to have param \`${key}\` to match ${value.toString()}, but got ${logValue.toString()}`); + } } - } - }); + }); + } return world; } @@ -207,7 +249,7 @@ async function assertLog(world: World, event: string, keyValues: MapV): Promise< export function assertionCommands() { return [ - new View<{given: NumberV, expected: NumberV, tolerance: NumberV}>(` + new View<{ given: NumberV, expected: NumberV, tolerance: NumberV }>(` #### Approx * "Approx given: expected: tolerance:" - Asserts that given approximately matches expected. @@ -219,12 +261,12 @@ export function assertionCommands() { [ new Arg("given", getNumberV), new Arg("expected", getNumberV), - new Arg("tolerance", getNumberV, {default: new NumberV(0.001)}) + new Arg("tolerance", getNumberV, { default: new NumberV(0.001) }) ], - (world, {given, expected, tolerance}) => assertApprox(world, given, expected, tolerance) + (world, { given, expected, tolerance }) => assertApprox(world, given, expected, tolerance) ), - new View<{given: Value, expected: Value}>(` + new View<{ given: Value, expected: Value }>(` #### Equal * "Equal given: expected:" - Asserts that given matches expected. @@ -237,10 +279,10 @@ export function assertionCommands() { new Arg("given", getCoreValue), new Arg("expected", getCoreValue) ], - (world, {given, expected}) => assertEqual(world, given, expected) + (world, { given, expected }) => assertEqual(world, given, expected) ), - new View<{given: Value, expected: Value}>(` + new View<{ given: Value, expected: Value }>(` #### LessThan * "given: LessThan expected:" - Asserts that given matches expected. @@ -251,11 +293,11 @@ export function assertionCommands() { new Arg("given", getCoreValue), new Arg("expected", getCoreValue) ], - (world, {given, expected}) => assertLessThan(world, given, expected), - {namePos: 1} + (world, { given, expected }) => assertLessThan(world, given, expected), + { namePos: 1 } ), - new View<{given: Value}>(` + new View<{ given: Value }>(` #### True * "True given:" - Asserts that given is true. @@ -265,10 +307,10 @@ export function assertionCommands() { [ new Arg("given", getCoreValue) ], - (world, {given}) => assertEqual(world, given, new BoolV(true)) + (world, { given }) => assertEqual(world, given, new BoolV(true)) ), - new View<{given: Value}>(` + new View<{ given: Value }>(` #### False * "False given:" - Asserts that given is false. @@ -278,9 +320,9 @@ export function assertionCommands() { [ new Arg("given", getCoreValue) ], - (world, {given}) => assertEqual(world, given, new BoolV(false)) + (world, { given }) => assertEqual(world, given, new BoolV(false)) ), - new View<{event: EventV, message: StringV}>(` + new View<{ event: EventV, message: StringV }>(` #### ReadRevert * "ReadRevert event: message:" - Asserts that reading the given value reverts with given message. @@ -291,10 +333,10 @@ export function assertionCommands() { new Arg("event", getEventV), new Arg("message", getStringV) ], - (world, {event, message}) => assertReadError(world, event.val, message.val, true) + (world, { event, message }) => assertReadError(world, event.val, message.val, true) ), - new View<{event: EventV, message: StringV}>(` + new View<{ event: EventV, message: StringV }>(` #### ReadError * "ReadError event: message:" - Asserts that reading the given value throws given error @@ -305,10 +347,10 @@ export function assertionCommands() { new Arg("event", getEventV), new Arg("message", getStringV) ], - (world, {event, message}) => assertReadError(world, event.val, message.val, false) + (world, { event, message }) => assertReadError(world, event.val, message.val, false) ), - new View<{error: StringV, info: StringV, detail: StringV}>(` + new View<{ error: StringV, info: StringV, detail: StringV }>(` #### Failure * "Failure error: info: detail:" - Asserts that last transaction had a graceful failure with given error, info and detail. @@ -319,12 +361,12 @@ export function assertionCommands() { [ new Arg("error", getStringV), new Arg("info", getStringV), - new Arg("detail", getStringV, {default: new StringV("0")}), + new Arg("detail", getStringV, { default: new StringV("0") }), ], - (world, {error, info, detail}) => assertFailure(world, new Failure(error.val, info.val, detail.val)) + (world, { error, info, detail }) => assertFailure(world, new Failure(error.val, info.val, detail.val)) ), - new View<{error: StringV, message: StringV}>(` + new View<{ error: StringV, message: StringV }>(` #### RevertFailure * "RevertFailure error: message:" - Assert last transaction reverted with a message beginning with an error code @@ -335,22 +377,22 @@ export function assertionCommands() { new Arg("error", getStringV), new Arg("message", getStringV), ], - (world, {error, message}) => assertRevertFailure(world, error.val, message.val) + (world, { error, message }) => assertRevertFailure(world, error.val, message.val) ), - new View<{message: StringV}>(` + new View<{ message: StringV }>(` #### Revert * "Revert message:" - Asserts that the last transaction reverted. `, "Revert", [ - new Arg("message", getStringV, {default: new StringV("revert")}), + new Arg("message", getStringV, { default: new StringV("revert") }), ], - (world, {message}) => assertRevert(world, message.val) + (world, { message }) => assertRevert(world, message.val) ), - new View<{message: StringV}>(` + new View<{ message: StringV }>(` #### Error * "Error message:" - Asserts that the last transaction had the given error. @@ -359,20 +401,20 @@ export function assertionCommands() { [ new Arg("message", getStringV), ], - (world, {message}) => assertError(world, message.val) + (world, { message }) => assertError(world, message.val) ), - new View<{given: Value}>(` + new View<{ given: Value }>(` #### Success * "Success" - Asserts that the last transaction completed successfully (that is, did not revert nor emit graceful failure). `, "Success", [], - (world, {given}) => assertSuccess(world) + (world, { given }) => assertSuccess(world) ), - new View<{name: StringV, params: MapV}>(` + new View<{ name: StringV, params: MapV }>(` #### Log * "Log name: (key: value:) ..." - Asserts that last transaction emitted log with given name and key-value pairs. @@ -381,9 +423,9 @@ export function assertionCommands() { "Log", [ new Arg("name", getStringV), - new Arg("params", getMapV, {variadic: true}), + new Arg("params", getMapV, { variadic: true }), ], - (world, {name, params}) => assertLog(world, name.val, params) + (world, { name, params }) => assertLog(world, name.val, params) ) ]; } diff --git a/scenario/src/Event/CompEvent.ts b/scenario/src/Event/CompEvent.ts new file mode 100644 index 000000000..1f420131f --- /dev/null +++ b/scenario/src/Event/CompEvent.ts @@ -0,0 +1,270 @@ +import { Event } from '../Event'; +import { addAction, World, describeUser } from '../World'; +import { Comp, CompScenario } from '../Contract/Comp'; +import { buildComp } from '../Builder/CompBuilder'; +import { invoke } from '../Invokation'; +import { + getAddressV, + getEventV, + getNumberV, + getStringV, +} from '../CoreValue'; +import { + AddressV, + EventV, + NumberV, + StringV +} from '../Value'; +import { Arg, Command, processCommandEvent, View } from '../Command'; +import { getComp } from '../ContractLookup'; +import { NoErrorReporter } from '../ErrorReporter'; +import { verify } from '../Verify'; +import { encodedNumber } from '../Encoding'; + +async function genComp(world: World, from: string, params: Event): Promise { + let { world: nextWorld, comp, tokenData } = await buildComp(world, from, params); + world = nextWorld; + + world = addAction( + world, + `Deployed Comp (${comp.name}) to address ${comp._address}`, + tokenData.invokation + ); + + return world; +} + +async function verifyComp(world: World, comp: Comp, apiKey: string, modelName: string, contractName: string): Promise { + if (world.isLocalNetwork()) { + world.printer.printLine(`Politely declining to verify on local network: ${world.network}.`); + } else { + await verify(world, apiKey, modelName, contractName, comp._address); + } + + return world; +} + +async function approve(world: World, from: string, comp: Comp, address: string, amount: NumberV): Promise { + let invokation = await invoke(world, comp.methods.approve(address, amount.encode()), from, NoErrorReporter); + + world = addAction( + world, + `Approved Comp token for ${from} of ${amount.show()}`, + invokation + ); + + return world; +} + +async function transfer(world: World, from: string, comp: Comp, address: string, amount: NumberV): Promise { + let invokation = await invoke(world, comp.methods.transfer(address, amount.encode()), from, NoErrorReporter); + + world = addAction( + world, + `Transferred ${amount.show()} Comp tokens from ${from} to ${address}`, + invokation + ); + + return world; +} + +async function transferFrom(world: World, from: string, comp: Comp, owner: string, spender: string, amount: NumberV): Promise { + let invokation = await invoke(world, comp.methods.transferFrom(owner, spender, amount.encode()), from, NoErrorReporter); + + world = addAction( + world, + `"Transferred from" ${amount.show()} Comp tokens from ${owner} to ${spender}`, + invokation + ); + + return world; +} + +async function transferScenario(world: World, from: string, comp: CompScenario, addresses: string[], amount: NumberV): Promise { + let invokation = await invoke(world, comp.methods.transferScenario(addresses, amount.encode()), from, NoErrorReporter); + + world = addAction( + world, + `Transferred ${amount.show()} Comp tokens from ${from} to ${addresses}`, + invokation + ); + + return world; +} + +async function transferFromScenario(world: World, from: string, comp: CompScenario, addresses: string[], amount: NumberV): Promise { + let invokation = await invoke(world, comp.methods.transferFromScenario(addresses, amount.encode()), from, NoErrorReporter); + + world = addAction( + world, + `Transferred ${amount.show()} Comp tokens from ${addresses} to ${from}`, + invokation + ); + + return world; +} + +async function delegate(world: World, from: string, comp: Comp, account: string): Promise { + let invokation = await invoke(world, comp.methods.delegate(account), from, NoErrorReporter); + + world = addAction( + world, + `"Delegated from" ${from} to ${account}`, + invokation + ); + + return world; +} + +async function setBlockNumber( + world: World, + from: string, + comp: Comp, + blockNumber: NumberV +): Promise { + return addAction( + world, + `Set Comp blockNumber to ${blockNumber.show()}`, + await invoke(world, comp.methods.setBlockNumber(blockNumber.encode()), from) + ); +} + +export function compCommands() { + return [ + new Command<{ params: EventV }>(` + #### Deploy + + * "Deploy ...params" - Generates a new Comp token + * E.g. "Comp Deploy" + `, + "Deploy", + [ + new Arg("params", getEventV, { variadic: true }) + ], + (world, from, { params }) => genComp(world, from, params.val) + ), + + new View<{ comp: Comp, apiKey: StringV, contractName: StringV }>(` + #### Verify + + * " Verify apiKey: contractName:=Comp" - Verifies Comp token in Etherscan + * E.g. "Comp Verify "myApiKey" + `, + "Verify", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("apiKey", getStringV), + new Arg("contractName", getStringV, { default: new StringV("Comp") }) + ], + async (world, { comp, apiKey, contractName }) => { + return await verifyComp(world, comp, apiKey.val, comp.name, contractName.val) + } + ), + + new Command<{ comp: Comp, spender: AddressV, amount: NumberV }>(` + #### Approve + + * "Comp Approve spender:
" - Adds an allowance between user and address + * E.g. "Comp Approve Geoff 1.0e18" + `, + "Approve", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("spender", getAddressV), + new Arg("amount", getNumberV) + ], + (world, from, { comp, spender, amount }) => { + return approve(world, from, comp, spender.val, amount) + } + ), + + new Command<{ comp: Comp, recipient: AddressV, amount: NumberV }>(` + #### Transfer + + * "Comp Transfer recipient: " - Transfers a number of tokens via "transfer" as given user to recipient (this does not depend on allowance) + * E.g. "Comp Transfer Torrey 1.0e18" + `, + "Transfer", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("recipient", getAddressV), + new Arg("amount", getNumberV) + ], + (world, from, { comp, recipient, amount }) => transfer(world, from, comp, recipient.val, amount) + ), + + new Command<{ comp: Comp, owner: AddressV, spender: AddressV, amount: NumberV }>(` + #### TransferFrom + + * "Comp TransferFrom owner: spender: " - Transfers a number of tokens via "transfeFrom" to recipient (this depends on allowances) + * E.g. "Comp TransferFrom Geoff Torrey 1.0e18" + `, + "TransferFrom", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("owner", getAddressV), + new Arg("spender", getAddressV), + new Arg("amount", getNumberV) + ], + (world, from, { comp, owner, spender, amount }) => transferFrom(world, from, comp, owner.val, spender.val, amount) + ), + + new Command<{ comp: CompScenario, recipients: AddressV[], amount: NumberV }>(` + #### TransferScenario + + * "Comp TransferScenario recipients: " - Transfers a number of tokens via "transfer" to the given recipients (this does not depend on allowance) + * E.g. "Comp TransferScenario (Jared Torrey) 10" + `, + "TransferScenario", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("recipients", getAddressV, { mapped: true }), + new Arg("amount", getNumberV) + ], + (world, from, { comp, recipients, amount }) => transferScenario(world, from, comp, recipients.map(recipient => recipient.val), amount) + ), + + new Command<{ comp: CompScenario, froms: AddressV[], amount: NumberV }>(` + #### TransferFromScenario + + * "Comp TransferFromScenario froms: " - Transfers a number of tokens via "transferFrom" from the given users to msg.sender (this depends on allowance) + * E.g. "Comp TransferFromScenario (Jared Torrey) 10" + `, + "TransferFromScenario", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("froms", getAddressV, { mapped: true }), + new Arg("amount", getNumberV) + ], + (world, from, { comp, froms, amount }) => transferFromScenario(world, from, comp, froms.map(_from => _from.val), amount) + ), + + new Command<{ comp: Comp, account: AddressV }>(` + #### Delegate + + * "Comp Delegate account:
" - Delegates votes to a given account + * E.g. "Comp Delegate Torrey" + `, + "Delegate", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("account", getAddressV), + ], + (world, from, { comp, account }) => delegate(world, from, comp, account.val) + ), + new Command<{ comp: Comp, blockNumber: NumberV }>(` + #### SetBlockNumber + + * "SetBlockNumber " - Sets the blockTimestamp of the Comp Harness + * E.g. "Comp SetBlockNumber 500" + `, + 'SetBlockNumber', + [new Arg('comp', getComp, { implicit: true }), new Arg('blockNumber', getNumberV)], + (world, from, { comp, blockNumber }) => setBlockNumber(world, from, comp, blockNumber) + ) + ]; +} + +export async function processCompEvent(world: World, event: Event, from: string | null): Promise { + return await processCommandEvent("Comp", compCommands(), world, event, from); +} diff --git a/scenario/src/Event/GovGuardianEvent.ts b/scenario/src/Event/GovGuardianEvent.ts new file mode 100644 index 000000000..1dcf43bbe --- /dev/null +++ b/scenario/src/Event/GovGuardianEvent.ts @@ -0,0 +1,112 @@ +import { Event } from '../Event'; +import { addAction, describeUser, World } from '../World'; +import { Governor } from '../Contract/Governor'; +import { invoke } from '../Invokation'; +import { + getAddressV, + getEventV, + getNumberV, + getStringV, + getCoreValue +} from '../CoreValue'; +import { + AddressV, + EventV, + NumberV, + StringV +} from '../Value'; +import { Arg, Command, processCommandEvent, View } from '../Command'; + +export function guardianCommands(governor: Governor) { + return [ + new Command<{ newPendingAdmin: AddressV, eta: NumberV }>( + ` + #### QueueSetTimelockPendingAdmin + + * "Governor QueueSetTimelockPendingAdmin newPendingAdmin:
eta:" - Queues in the timelock a function to set a new pending admin + * E.g. "Governor GovernorScenario Guardian QueueSetTimelockPendingAdmin Geoff 604900" + `, + 'QueueSetTimelockPendingAdmin', + [ + new Arg('newPendingAdmin', getAddressV), + new Arg('eta', getNumberV) + ], + async (world, from, { newPendingAdmin, eta }) => { + const invokation = await invoke(world, governor.methods.__queueSetTimelockPendingAdmin(newPendingAdmin.val, eta.encode()), from); + + return addAction( + world, + `Gov Guardian has queued in the timelock a new pending admin command for ${describeUser(world, newPendingAdmin.val)}`, + invokation + ) + } + ), + + new Command<{ newPendingAdmin: AddressV, eta: NumberV }>( + ` + #### ExecuteSetTimelockPendingAdmin + + * "Governor ExecuteSetTimelockPendingAdmin newPendingAdmin:
eta:" - Executes on the timelock the function to set a new pending admin + * E.g. "Governor GovernorScenario Guardian ExecuteSetTimelockPendingAdmin Geoff 604900" + `, + 'ExecuteSetTimelockPendingAdmin', + [ + new Arg('newPendingAdmin', getAddressV), + new Arg('eta', getNumberV) + ], + async (world, from, { newPendingAdmin, eta }) => { + const invokation = await invoke(world, governor.methods.__executeSetTimelockPendingAdmin(newPendingAdmin.val, eta.encode()), from); + + return addAction( + world, + `Gov Guardian has executed via the timelock a new pending admin to ${describeUser(world, newPendingAdmin.val)}`, + invokation + ) + } + ), + + new Command<{}>( + ` + #### AcceptAdmin + + * "Governor Guardian AcceptAdmin" - Calls \`acceptAdmin\` on the Timelock + * E.g. "Governor GovernorScenario Guardian AcceptAdmin" + `, + 'AcceptAdmin', + [], + async (world, from, { }) => { + const invokation = await invoke(world, governor.methods.__acceptAdmin(), from); + + return addAction( + world, + `Gov Guardian has accepted admin`, + invokation + ) + } + ), + + new Command<{}>( + ` + #### Abdicate + + * "Governor Guardian Abdicate" - Abdicates gov guardian role + * E.g. "Governor GovernorScenario Guardian Abdicate" + `, + 'Abdicate', + [], + async (world, from, { }) => { + const invokation = await invoke(world, governor.methods.__abdicate(), from); + + return addAction( + world, + `Gov Guardian has abdicated`, + invokation + ) + } + ) + ]; +} + +export async function processGuardianEvent(world: World, governor: Governor, event: Event, from: string | null): Promise { + return await processCommandEvent('Guardian', guardianCommands(governor), world, event, from); +} diff --git a/scenario/src/Event/GovernorEvent.ts b/scenario/src/Event/GovernorEvent.ts new file mode 100644 index 000000000..679c3642e --- /dev/null +++ b/scenario/src/Event/GovernorEvent.ts @@ -0,0 +1,209 @@ +import { Event } from '../Event'; +import { addAction, World } from '../World'; +import { Governor } from '../Contract/Governor'; +import { buildGovernor } from '../Builder/GovernorBuilder'; +import { invoke } from '../Invokation'; +import { + getAddressV, + getArrayV, + getEventV, + getNumberV, + getStringV, + getCoreValue, +} from '../CoreValue'; +import { + AddressV, + ArrayV, + EventV, + NumberV, + StringV +} from '../Value'; +import { Arg, Command, processCommandEvent, View } from '../Command'; +import { getGovernorData } from '../ContractLookup'; +import { verify } from '../Verify'; +import { encodedNumber } from '../Encoding'; +import { processProposalEvent } from './ProposalEvent'; +import { processGuardianEvent } from './GovGuardianEvent'; +import { encodeParameters } from '../Utils'; +import { getGovernorV } from '../Value/GovernorValue'; + +async function genGovernor(world: World, from: string, params: Event): Promise { + let { world: nextWorld, governor, govData } = await buildGovernor(world, from, params); + world = nextWorld; + + return addAction( + world, + `Deployed Governor ${govData.contract} to address ${governor._address}`, + govData.invokation + ); +} + +async function verifyGovernor(world: World, governor: Governor, apiKey: string, modelName: string, contractName: string): Promise { + if (world.isLocalNetwork()) { + world.printer.printLine(`Politely declining to verify on local network: ${world.network}.`); + } else { + await verify(world, apiKey, modelName, contractName, governor._address); + } + + return world; +} + +async function propose(world: World, from: string, governor: Governor, targets: string[], values: encodedNumber[], signatures: string[], calldatas: string[], description: string): Promise { + const invokation = await invoke(world, governor.methods.propose(targets, values, signatures, calldatas, description), from); + return addAction( + world, + `Created new proposal "${description}" with id=${invokation.value} in Governor`, + invokation + ); +} + +async function setBlockNumber( + world: World, + from: string, + governor: Governor, + blockNumber: NumberV +): Promise { + return addAction( + world, + `Set Governor blockNumber to ${blockNumber.show()}`, + await invoke(world, governor.methods.setBlockNumber(blockNumber.encode()), from) + ); +} + +async function setBlockTimestamp( + world: World, + from: string, + governor: Governor, + blockTimestamp: NumberV +): Promise { + return addAction( + world, + `Set Governor blockTimestamp to ${blockTimestamp.show()}`, + await invoke(world, governor.methods.setBlockTimestamp(blockTimestamp.encode()), from) + ); +} + +export function governorCommands() { + return [ + new Command<{ params: EventV }>(` + #### Deploy + + * "Deploy ...params" - Generates a new Governor + * E.g. "Governor Deploy Alpha" + `, + "Deploy", + [ + new Arg("params", getEventV, { variadic: true }) + ], + (world, from, { params }) => genGovernor(world, from, params.val) + ), + + new View<{ governorArg: StringV, apiKey: StringV }>(` + #### Verify + + * " Verify apiKey:" - Verifies Governor in Etherscan + * E.g. "Governor Verify "myApiKey" + `, + "Verify", + [ + new Arg("governorArg", getStringV), + new Arg("apiKey", getStringV) + ], + async (world, { governorArg, apiKey }) => { + let [governor, name, data] = await getGovernorData(world, governorArg.val); + + return await verifyGovernor(world, governor, apiKey.val, name, data.get('contract')!) + }, + { namePos: 1 } + ), + + new Command<{ governor: Governor, description: StringV, targets: ArrayV, values: ArrayV, signatures: ArrayV, callDataArgs: ArrayV> }>(` + #### Propose + + * "Governor Propose description: targets: signatures: callDataArgs:" - Creates a new proposal in Governor + * E.g. "Governor GovernorScenario Propose "New Interest Rate" [(Address cDAI)] [0] [("_setInterestRateModel(address)")] [[(Address MyInterestRateModel)]] + `, + "Propose", + [ + new Arg("governor", getGovernorV), + new Arg("description", getStringV), + new Arg("targets", getArrayV(getAddressV)), + new Arg("values", getArrayV(getNumberV)), + new Arg("signatures", getArrayV(getStringV)), + new Arg("callDataArgs", getArrayV(getArrayV(getCoreValue))), + ], + async (world, from, { governor, description, targets, values, signatures, callDataArgs }) => { + const targetsU = targets.val.map(a => a.val); + const valuesU = values.val.map(a => a.encode()); + const signaturesU = signatures.val.map(a => a.val); + const callDatasU: string[] = signatures.val.reduce((acc, cur, idx) => { + const args = callDataArgs.val[idx].val.map(a => a.val); + acc.push(encodeParameters(world, cur.val, args)); + return acc; + }, []); + return await propose(world, from, governor, targetsU, valuesU, signaturesU, callDatasU, description.val); + }, + { namePos: 1 } + ), + new Command<{ governor: Governor, params: EventV }>(` + #### Proposal + + * "Governor Proposal <...proposalEvent>" - Returns information about a proposal + * E.g. "Governor GovernorScenario Proposal LastProposal Vote For" + `, + "Proposal", + [ + new Arg('governor', getGovernorV), + new Arg("params", getEventV, { variadic: true }) + ], + (world, from, { governor, params }) => processProposalEvent(world, governor, params.val, from), + { namePos: 1 } + ), + new Command<{ governor: Governor, params: EventV }>(` + #### Guardian + + * "Governor Guardian <...guardianEvent>" - Returns information about a guardian + * E.g. "Governor GovernorScenario Guardian Abdicate" + `, + "Guardian", + [ + new Arg('governor', getGovernorV), + new Arg("params", getEventV, { variadic: true }) + ], + (world, from, { governor, params }) => processGuardianEvent(world, governor, params.val, from), + { namePos: 1 } + ), + new Command<{ governor: Governor, blockNumber: NumberV }>(` + #### SetBlockNumber + + * "Governor SetBlockNumber " - Sets the blockNumber of the Governance Harness + * E.g. "Governor SetBlockNumber 500" + `, + 'SetBlockNumber', + [ + new Arg('governor', getGovernorV), + new Arg('blockNumber', getNumberV) + ], + (world, from, { governor, blockNumber }) => setBlockNumber(world, from, governor, blockNumber), + { namePos: 1 } + ), + new Command<{ governor: Governor, blockTimestamp: NumberV }>(` + #### SetBlockTimestamp + + * "Governor SetBlockNumber " - Sets the blockTimestamp of the Governance Harness + * E.g. "Governor GovernorScenario SetBlockTimestamp 500" + `, + 'SetBlockTimestamp', + [ + new Arg('governor', getGovernorV), + new Arg('blockTimestamp', getNumberV) + ], + (world, from, { governor, blockTimestamp }) => setBlockTimestamp(world, from, governor, blockTimestamp), + { namePos: 1 } + ) + ]; +} + +export async function processGovernorEvent(world: World, event: Event, from: string | null): Promise { + return await processCommandEvent("Governor", governorCommands(), world, event, from); +} diff --git a/scenario/src/Event/ProposalEvent.ts b/scenario/src/Event/ProposalEvent.ts new file mode 100644 index 000000000..63daaa418 --- /dev/null +++ b/scenario/src/Event/ProposalEvent.ts @@ -0,0 +1,127 @@ +import { Event } from '../Event'; +import { addAction, describeUser, World } from '../World'; +import { Governor } from '../Contract/Governor'; +import { invoke } from '../Invokation'; +import { + getEventV, +} from '../CoreValue'; +import { + EventV, +} from '../Value'; +import { Arg, Command, processCommandEvent } from '../Command'; +import { getProposalId } from '../Value/ProposalValue'; + +function getSupport(support: Event): boolean { + if (typeof support === 'string') { + if (support === 'For' || support === 'Against') { + return support === 'For'; + } + } + + throw new Error(`Unknown support flag \`${support}\`, expected "For" or "Against"`); +} + +async function describeProposal(world: World, governor: Governor, proposalId: number): Promise { + // const proposal = await governor.methods.proposals(proposalId).call(); + return `proposal ${proposalId.toString()}`; // TODO: Cleanup +} + +export function proposalCommands(governor: Governor) { + return [ + new Command<{ proposalIdent: EventV, support: EventV }>( + ` + #### Vote + + * "Governor Vote " - Votes for or against a given proposal + * E.g. "Governor GovernorScenario Proposal LastProposal Vote For" + `, + 'Vote', + [ + new Arg("proposalIdent", getEventV), + new Arg("support", getEventV), + ], + async (world, from, { proposalIdent, support }) => { + const proposalId = await getProposalId(world, governor, proposalIdent.val); + const invokation = await invoke(world, governor.methods.castVote(proposalId, getSupport(support.val)), from); + + return addAction( + world, + `Cast ${support.val.toString()} vote from ${describeUser(world, from)} for proposal ${proposalId}`, + invokation + ) + }, + { namePos: 1 } + ), + + new Command<{ proposalIdent: EventV }>( + ` + #### Queue + * "Governor Queue" - Queues given proposal + * E.g. "Governor GovernorScenario Proposal LastProposal Queue" + `, + 'Queue', + [ + new Arg("proposalIdent", getEventV) + ], + async (world, from, { proposalIdent }) => { + const proposalId = await getProposalId(world, governor, proposalIdent.val); + const invokation = await invoke(world, governor.methods.queue(proposalId), from); + + return addAction( + world, + `Queue proposal ${await describeProposal(world, governor, proposalId)} from ${describeUser(world, from)}`, + invokation + ) + }, + { namePos: 1 } + ), + new Command<{ proposalIdent: EventV }>( + ` + #### Execute + * "Governor Execute" - Executes given proposal + * E.g. "Governor GovernorScenario Proposal LastProposal Execute" + `, + 'Execute', + [ + new Arg("proposalIdent", getEventV) + ], + async (world, from, { proposalIdent }) => { + const proposalId = await getProposalId(world, governor, proposalIdent.val); + const invokation = await invoke(world, governor.methods.execute(proposalId), from); + + return addAction( + world, + `Execute proposal ${await describeProposal(world, governor, proposalId)} from ${describeUser(world, from)}`, + invokation + ) + }, + { namePos: 1 } + ), + new Command<{ proposalIdent: EventV }>( + ` + #### Cancel + * "Cancel" - cancels given proposal + * E.g. "Governor Proposal LastProposal Cancel" + `, + 'Cancel', + [ + new Arg("proposalIdent", getEventV) + ], + async (world, from, { proposalIdent }) => { + const proposalId = await getProposalId(world, governor, proposalIdent.val); + const invokation = await invoke(world, governor.methods.cancel(proposalId), from); + + return addAction( + world, + `Cancel proposal ${await describeProposal(world, governor, proposalId)} from ${describeUser(world, from)}`, + invokation + ) + }, + { namePos: 1 } + ), + ]; +} + +export async function processProposalEvent(world: World, governor: Governor, event: Event, from: string | null): Promise { + return await processCommandEvent('Proposal', proposalCommands(governor), world, event, from); +} diff --git a/scenario/src/Event/TimelockEvent.ts b/scenario/src/Event/TimelockEvent.ts index 1ca5b02f7..86598bcb1 100644 --- a/scenario/src/Event/TimelockEvent.ts +++ b/scenario/src/Event/TimelockEvent.ts @@ -40,6 +40,19 @@ async function setPendingAdmin( ); } +async function setAdmin( + world: World, + from: string, + timeLock: Timelock, + admin: string +): Promise { + return addAction( + world, + `Set Timelock admin to ${admin}`, + await invoke(world, timeLock.methods.harnessSetAdmin(admin), from) + ); +} + async function setDelay(world: World, from: string, timeLock: Timelock, delay: NumberV): Promise { return addAction( world, @@ -232,6 +245,17 @@ export function timelockCommands() { [new Arg('timelock', getTimelock, { implicit: true }), new Arg('admin', getAddressV)], (world, from, { timelock, admin }) => setPendingAdmin(world, from, timelock, admin.val) ), + new Command<{ timelock: Timelock; admin: AddressV }>( + ` + #### SetAdmin + + * "SetAdmin
" - Sets the admin for the Timelock through the harness + * E.g. "Timelock SetAdmin \"0x0000000000000000000000000000000000000000\"" + `, + 'SetAdmin', + [new Arg('timelock', getTimelock, { implicit: true }), new Arg('admin', getAddressV)], + (world, from, { timelock, admin }) => setAdmin(world, from, timelock, admin.val) + ), new Command<{ timelock: Timelock; target: AddressV; diff --git a/scenario/src/Event/TrxEvent.ts b/scenario/src/Event/TrxEvent.ts index b559129b9..ae8285298 100644 --- a/scenario/src/Event/TrxEvent.ts +++ b/scenario/src/Event/TrxEvent.ts @@ -13,11 +13,11 @@ import {Arg, Command, processCommandEvent} from '../Command'; import {encodedNumber} from '../Encoding'; async function setTrxValue(world: World, value: encodedNumber): Promise { - return world.update('trxInvokationOpts', (t) => t.set('value', value)); + return world.update('trxInvokationOpts', (t) => t.set('value', value.toString())); } async function setTrxGasPrice(world: World, gasPrice: encodedNumber): Promise { - return world.update('trxInvokationOpts', (t) => t.set('gasPrice', gasPrice.toString())); + return world.update('trxInvokationOpts', (t) => t.set('gasPrice', gasPrice.toString()));; } export function trxCommands() { diff --git a/scenario/src/EventBuilder.ts b/scenario/src/EventBuilder.ts new file mode 100644 index 000000000..d38bab12b --- /dev/null +++ b/scenario/src/EventBuilder.ts @@ -0,0 +1,231 @@ +import { Event } from './Event'; +import { addAction, World } from './World'; +import { Governor } from './Contract/Governor'; +import { Invokation } from './Invokation'; +import { Arg, Command, Fetcher, getFetcherValue, processCommandEvent, View } from './Command'; +import { storeAndSaveContract } from './Networks'; +import { Contract, getContract } from './Contract'; +import { getWorldContract } from './ContractLookup'; +import { mustString } from './Utils'; +import { Callable, Sendable } from './Invokation'; +import { + AddressV, + ArrayV, + EventV, + NumberV, + StringV, + Value +} from './Value'; +import { + getAddressV, + getArrayV, + getEventV, + getNumberV, + getStringV, +} from './CoreValue'; +import { AbiItem, AbiInput } from 'web3-utils'; + +export interface ContractData { + invokation: Invokation; + name: string; + contract: string; + address?: string; +} + +async function getContractObject(world: World, event: Event): Promise { + return getWorldContract(world, [['Contracts', mustString(event)]]); +} + +export function buildContractEvent(contractName: string) { + let contractDeployer = getContract(contractName); + + async function build( + world: World, + from: string, + params: Event + ): Promise<{ world: World; contract: T; data: ContractData }> { + const fetchers = [ + new Fetcher<{ name: StringV }, ContractData>( + ` + #### ${contractName} + + * "${contractName} name:=${contractName}" - Build ${contractName} + * E.g. "${contractName} Deploy" + } + `, + contractName, + [ + new Arg('name', getStringV, { default: new StringV(contractName) }) + ], + async (world, { name }) => { + return { + invokation: await contractDeployer.deploy(world, from, []), + name: name.val, + contract: contractName + }; + }, + { catchall: true } + ) + ]; + + let data = await getFetcherValue>(`Deploy${contractName}`, fetchers, world, params); + let invokation = data.invokation; + delete data.invokation; + + if (invokation.error) { + throw invokation.error; + } + + const contract = invokation.value!; + contract.address = contract._address; + + world = await storeAndSaveContract( + world, + contract, + data.name, + invokation, + [ + { index: [contractName, data.name], data: data } + ] + ); + + return { world, contract, data }; + } + + async function deploy(world: World, from: string, params: Event) { + let { world: nextWorld, contract, data } = await build(world, from, params); + world = nextWorld; + + world = addAction( + world, + `Deployed ${contractName} ${data.contract} to address ${contract._address}`, + data.invokation + ); + + return world; + } + + function commands() { + return [ + new Command<{ params: EventV }>(` + #### ${contractName} + + * "${contractName} Deploy" - Deploy ${contractName} + * E.g. "Counter Deploy" + `, + "Deploy", + [ + new Arg("params", getEventV, { variadic: true }) + ], + (world, from, { params }) => deploy(world, from, params.val) + ) + ]; + } + + async function processEvent(world: World, event: Event, from: string | null): Promise { + return await processCommandEvent(contractName, commands(), world, event, from); + } + + let command = new Command<{ event: EventV }>( + ` + #### ${contractName} + + * "${contractName} ...event" - Runs given ${contractName} event + * E.g. "${contractName} Deploy" + `, + contractName, + [new Arg('event', getEventV, { variadic: true })], + (world, from, { event }) => { + return processEvent(world, event.val, from); + }, + { subExpressions: commands() } + ); + + return command; +} + +export async function buildContractFetcher(world: World, contractName: string) { + + let abis: AbiItem[] = await world.saddle.abi(contractName); + + function fetchers() { + const typeMappings = { + address: { + builder: (x) => new AddressV(x), + getter: getAddressV + }, + string: { + builder: (x) => new StringV(x), + getter: getStringV + }, + uint256: { + builder: (x) => new NumberV(x), + getter: getNumberV + } + }; + + function buildArg(name: string, input: AbiInput): Arg { + let { getter } = typeMappings[input.type] || {}; + + if (!getter) { + throw new Error(`Unknown ABI Input Type: ${input.type} of \`${name}\` in ${contractName}`); + } + + return new Arg(name, getter); + } + + async function buildOutput(world: World, fn: string, inputs: object, output: AbiItem): Promise { + const callable = >(inputs['contract'].methods[fn](...Object.values(inputs).slice(1))); + let value = await callable.call(); + let { builder } = typeMappings[output.type] || {}; + + if (!builder) { + throw new Error(`Unknown ABI Output Type: ${output.type} of \`${fn}\` in ${contractName}`); + } + + return builder(value); + } + + return abis.map((abi: any) => { + function getEventName(s) { + return s.charAt(0).toUpperCase() + s.slice(1); + } + + let eventName = getEventName(abi.name); + let inputNames = abi.inputs.map((input) => getEventName(input.name)); + let args = [ + new Arg("contract", getContractObject) + ].concat(abi.inputs.map((input) => buildArg(abi.name, input))); + + return new Fetcher(` + #### ${eventName} + + * "${eventName} ${inputNames.join(" ")}" - Returns the result of \`${abi.name}\` function + `, + eventName, + args, + (world, inputs) => buildOutput(world, abi.name, inputs, abi.outputs[0]), + { namePos: 1 } + ) + }); + } + + async function getValue(world: World, event: Event): Promise { + return await getFetcherValue(contractName, fetchers(), world, event); + } + + + let fetcher = new Fetcher<{ res: Value }, Value>( + ` + #### ${contractName} + + * "${contractName} ...args" - Returns ${contractName} value + `, + contractName, + [new Arg('res', getValue, { variadic: true })], + async (world, { res }) => res, + { subExpressions: fetchers() } + ) + + return fetcher; +} diff --git a/scenario/src/Hypothetical.ts b/scenario/src/Hypothetical.ts index cba2283f5..497ea3def 100644 --- a/scenario/src/Hypothetical.ts +++ b/scenario/src/Hypothetical.ts @@ -1,4 +1,4 @@ -import { Accounts, loadAccounts } from './Accounts'; +import {Accounts, loadAccounts} from './Accounts'; import { addAction, checkExpectations, @@ -9,7 +9,7 @@ import { setEvent, World } from './World'; -import Ganache from 'ganache-core'; +import {Ganache} from 'eth-saddle/dist/config'; import Web3 from 'web3'; export async function forkWeb3(web3: Web3, url: string, accounts: string[]): Promise { diff --git a/scenario/src/Invokation.ts b/scenario/src/Invokation.ts index 25e2c412e..940652507 100644 --- a/scenario/src/Invokation.ts +++ b/scenario/src/Invokation.ts @@ -221,7 +221,7 @@ export async function invoke(world: World, fn: Sendable, from: string, err ...worldInvokationOpts, ...trxInvokationOpts }; - + try { try { const gas = await fn.estimateGas({ ...invokationOpts }); diff --git a/scenario/src/Networks.ts b/scenario/src/Networks.ts index ecfcfd6fe..e8f0de698 100644 --- a/scenario/src/Networks.ts +++ b/scenario/src/Networks.ts @@ -3,7 +3,7 @@ import { World } from './World'; import { Invokation } from './Invokation'; import { Contract, setContractName } from './Contract'; import { getNetworkPath, readFile, writeFile } from './File'; -import { ABIItem } from 'web3-utils'; +import { AbiItem } from 'web3-utils'; type Networks = Map; @@ -159,7 +159,7 @@ export async function loadContractData( let contracts = networks.get('Contracts') || Map({}); world = contracts.reduce((world: World, address: string, name: string) => { - let abi: ABIItem[] = networksABI.has(name) ? networksABI.get(name).toJS() : []; + let abi: AbiItem[] = networksABI.has(name) ? networksABI.get(name).toJS() : []; let contract = new world.web3.eth.Contract(abi, address, {}); world = updateEventDecoder(world, contract); diff --git a/scenario/src/Repl.ts b/scenario/src/Repl.ts index 20ef2c18f..ce8b861e3 100644 --- a/scenario/src/Repl.ts +++ b/scenario/src/Repl.ts @@ -127,10 +127,6 @@ async function repl(): Promise { saddle.web3 = await forkWeb3(saddle.web3, forkJson.url, forkJson.unlocked); saddle.accounts = forkJson.unlocked; console.log(`Running on fork ${forkJson.url} with unlocked accounts ${forkJson.unlocked.join(', ')}`) - } else { - // Uck, we have to load accounts first..let's just see if we have any unlocked accounts - // XXX does this break something with wallet addresses? - saddle.accounts = await (new Web3(saddle.web3.currentProvider)).eth.personal.getAccounts(); } if (saddle.accounts.length > 0) { diff --git a/scenario/src/Utils.ts b/scenario/src/Utils.ts index 5a32f16e0..b57be88c1 100644 --- a/scenario/src/Utils.ts +++ b/scenario/src/Utils.ts @@ -1,6 +1,6 @@ import { Event } from './Event'; import { World } from './World'; -import { ABIItem } from 'web3-utils'; +import { AbiItem } from 'web3-utils'; // Wraps the element in an array, if it was not already an array // If array is null or undefined, return the empty array @@ -52,7 +52,7 @@ export function encodeABI(world: World, fnABI: string, fnParams: string[]): stri inputs: fnInputs.split(',').map(i => ({ name: '', type: i })) }; // XXXS - return world.web3.eth.abi.encodeFunctionCall(jsonInterface, fnParams); + return world.web3.eth.abi.encodeFunctionCall(jsonInterface, fnParams); } export function encodeParameters(world: World, fnABI: string, fnParams: string[]): string { @@ -88,7 +88,7 @@ export function sleep(timeout: number): Promise { export function sendRPC(world: World, method: string, params: any[]) { return new Promise((resolve, reject) => { - if (!world.web3.currentProvider || typeof(world.web3.currentProvider) === 'string') { + if (!world.web3.currentProvider || typeof (world.web3.currentProvider) === 'string') { return reject(`cannot send from currentProvider=${world.web3.currentProvider}`); } diff --git a/scenario/src/Value.ts b/scenario/src/Value.ts index b967d2251..9dde304d5 100644 --- a/scenario/src/Value.ts +++ b/scenario/src/Value.ts @@ -119,6 +119,8 @@ export class BoolV implements Value { return this.val === given.val; } else if (given instanceof NumberV) { return this.compareTo(world, given.toBoolV()); + } else if (given instanceof StringV && ( given.val === 'true' || given.val === 'false' )) { + return this.val || given.val !== 'true'; } else { throw new Error(`Cannot compare ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`); } @@ -250,6 +252,8 @@ export class NumberV implements Value { return thisBig === givenBig; } else if (given instanceof PreciseV) { return this.compareTo(world, given.toNumberV()); + } else if (given instanceof StringV) { + return this.compareTo(world, new NumberV(Number(given.val))); } else { throw new Error(`Cannot compare ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`); } @@ -371,7 +375,7 @@ export class ListV implements Value { } compareTo(world: World, given: Value): boolean { - if (given instanceof ListV) { + if (given instanceof ListV || given instanceof ArrayV) { return this.val.every((el, i) => el.compareTo(world, given.val[i])); } else { throw new Error(`Cannot compare ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`); @@ -390,3 +394,31 @@ export class ListV implements Value { return this.val.length > 0; } } + +export class ArrayV implements Value { + val: T[] + + constructor(els) { + this.val = els; + } + + compareTo(world: World, given: Value): boolean { + if (given instanceof ListV || given instanceof ArrayV) { + return this.val.every((el, i) => el.compareTo(world, given.val[i])); + } else { + throw new Error(`Cannot compare ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`); + } + } + + compareOrder(world: World, given: Value): Order { + throw new Error(`Cannot compare order of ${typeof this} to ${typeof given} (${this.toString()}, ${given.toString()})`); + } + + toString() { + return `ArrayV el.toString()).join(',')}>`; + } + + truthy() { + return this.val.length > 0; + } +} diff --git a/scenario/src/Value/CompValue.ts b/scenario/src/Value/CompValue.ts new file mode 100644 index 000000000..d95672434 --- /dev/null +++ b/scenario/src/Value/CompValue.ts @@ -0,0 +1,202 @@ +import { Event } from '../Event'; +import { World } from '../World'; +import { Comp } from '../Contract/Comp'; +import { + getAddressV, + getNumberV +} from '../CoreValue'; +import { + AddressV, + ListV, + NumberV, + StringV, + Value +} from '../Value'; +import { Arg, Fetcher, getFetcherValue } from '../Command'; +import { getComp } from '../ContractLookup'; + +export function compFetchers() { + return [ + new Fetcher<{ comp: Comp }, AddressV>(` + #### Address + + * " Address" - Returns the address of Comp token + * E.g. "Comp Address" + `, + "Address", + [ + new Arg("comp", getComp, { implicit: true }) + ], + async (world, { comp }) => new AddressV(comp._address) + ), + + new Fetcher<{ comp: Comp }, StringV>(` + #### Name + + * " Name" - Returns the name of the Comp token + * E.g. "Comp Name" + `, + "Name", + [ + new Arg("comp", getComp, { implicit: true }) + ], + async (world, { comp }) => new StringV(await comp.methods.name().call()) + ), + + new Fetcher<{ comp: Comp }, StringV>(` + #### Symbol + + * " Symbol" - Returns the symbol of the Comp token + * E.g. "Comp Symbol" + `, + "Symbol", + [ + new Arg("comp", getComp, { implicit: true }) + ], + async (world, { comp }) => new StringV(await comp.methods.symbol().call()) + ), + + new Fetcher<{ comp: Comp }, NumberV>(` + #### Decimals + + * " Decimals" - Returns the number of decimals of the Comp token + * E.g. "Comp Decimals" + `, + "Decimals", + [ + new Arg("comp", getComp, { implicit: true }) + ], + async (world, { comp }) => new NumberV(await comp.methods.decimals().call()) + ), + + new Fetcher<{ comp: Comp }, NumberV>(` + #### TotalSupply + + * "Comp TotalSupply" - Returns Comp token's total supply + `, + "TotalSupply", + [ + new Arg("comp", getComp, { implicit: true }) + ], + async (world, { comp }) => new NumberV(await comp.methods.totalSupply().call()) + ), + + new Fetcher<{ comp: Comp, address: AddressV }, NumberV>(` + #### TokenBalance + + * "Comp TokenBalance
" - Returns the Comp token balance of a given address + * E.g. "Comp TokenBalance Geoff" - Returns Geoff's Comp balance + `, + "TokenBalance", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("address", getAddressV) + ], + async (world, { comp, address }) => new NumberV(await comp.methods.balanceOf(address.val).call()) + ), + + new Fetcher<{ comp: Comp, owner: AddressV, spender: AddressV }, NumberV>(` + #### Allowance + + * "Comp Allowance owner:
spender:
" - Returns the Comp allowance from owner to spender + * E.g. "Comp Allowance Geoff Torrey" - Returns the Comp allowance of Geoff to Torrey + `, + "Allowance", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("owner", getAddressV), + new Arg("spender", getAddressV) + ], + async (world, { comp, owner, spender }) => new NumberV(await comp.methods.allowance(owner.val, spender.val).call()) + ), + + new Fetcher<{ comp: Comp, account: AddressV }, NumberV>(` + #### GetCurrentVotes + + * "Comp GetCurrentVotes account:
" - Returns the current Comp votes balance for an account + * E.g. "Comp GetCurrentVotes Geoff" - Returns the current Comp vote balance of Geoff + `, + "GetCurrentVotes", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("account", getAddressV), + ], + async (world, { comp, account }) => new NumberV(await comp.methods.getCurrentVotes(account.val).call()) + ), + + new Fetcher<{ comp: Comp, account: AddressV, blockNumber: NumberV }, NumberV>(` + #### GetPriorVotes + + * "Comp GetPriorVotes account:
blockBumber:" - Returns the current Comp votes balance at given block + * E.g. "Comp GetPriorVotes Geoff 5" - Returns the Comp vote balance for Geoff at block 5 + `, + "GetPriorVotes", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("account", getAddressV), + new Arg("blockNumber", getNumberV), + ], + async (world, { comp, account, blockNumber }) => new NumberV(await comp.methods.getPriorVotes(account.val, blockNumber.encode()).call()) + ), + + new Fetcher<{ comp: Comp, account: AddressV }, NumberV>(` + #### GetCurrentVotesBlock + + * "Comp GetCurrentVotesBlock account:
" - Returns the current Comp votes checkpoint block for an account + * E.g. "Comp GetCurrentVotesBlock Geoff" - Returns the current Comp votes checkpoint block for Geoff + `, + "GetCurrentVotesBlock", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("account", getAddressV), + ], + async (world, { comp, account }) => { + const numCheckpoints = Number(await comp.methods.numCheckpoints(account.val).call()); + const checkpoint = await comp.methods.checkpoints(account.val, numCheckpoints - 1).call(); + + return new NumberV(checkpoint.fromBlock); + } + ), + + new Fetcher<{ comp: Comp, account: AddressV }, NumberV>(` + #### VotesLength + + * "Comp VotesLength account:
" - Returns the Comp vote checkpoint array length + * E.g. "Comp VotesLength Geoff" - Returns the Comp vote checkpoint array length of Geoff + `, + "VotesLength", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("account", getAddressV), + ], + async (world, { comp, account }) => new NumberV(await comp.methods.numCheckpoints(account.val).call()) + ), + + new Fetcher<{ comp: Comp, account: AddressV }, ListV>(` + #### AllVotes + + * "Comp AllVotes account:
" - Returns information about all votes an account has had + * E.g. "Comp AllVotes Geoff" - Returns the Comp vote checkpoint array + `, + "AllVotes", + [ + new Arg("comp", getComp, { implicit: true }), + new Arg("account", getAddressV), + ], + async (world, { comp, account }) => { + const numCheckpoints = Number(await comp.methods.numCheckpoints(account.val).call()); + const checkpoints = await Promise.all(new Array(numCheckpoints).fill(undefined).map(async (_, i) => { + const {fromBlock, votes} = await comp.methods.checkpoints(account.val, i).call(); + + return new StringV(`Block ${fromBlock}: ${votes} vote${votes !== 1 ? "s" : ""}`); + })); + + return new ListV(checkpoints); + } + ) + ]; +} + +export async function getCompValue(world: World, event: Event): Promise { + return await getFetcherValue("Comp", compFetchers(), world, event); +} diff --git a/scenario/src/Value/GovernorValue.ts b/scenario/src/Value/GovernorValue.ts new file mode 100644 index 000000000..c7352b500 --- /dev/null +++ b/scenario/src/Value/GovernorValue.ts @@ -0,0 +1,87 @@ +import { Event } from '../Event'; +import { World } from '../World'; +import { Governor } from '../Contract/Governor'; +import { + getCoreValue, + getEventV, + mapValue +} from '../CoreValue'; +import { + AddressV, + EventV, + Value +} from '../Value'; +import { Arg, Fetcher, getFetcherValue } from '../Command'; +import { getProposalValue } from './ProposalValue'; +import { getGovernorAddress, getWorldContractByAddress } from '../ContractLookup'; + +export async function getGovernorV(world: World, event: Event): Promise { + const address = await mapValue( + world, + event, + (str) => new AddressV(getGovernorAddress(world, str)), + getCoreValue, + AddressV + ); + + return getWorldContractByAddress(world, address.val); +} + +export async function governorAddress(world: World, governor: Governor): Promise { + return new AddressV(governor._address); +} + +export async function getGovernorGuardian(world: World, governor: Governor): Promise { + return new AddressV(await governor.methods.guardian().call()); +} + +export function governorFetchers() { + return [ + new Fetcher<{ governor: Governor }, AddressV>(` + #### Address + + * "Governor Address" - Returns the address of governor contract + * E.g. "Governor GovernorScenario Address" + `, + "Address", + [ + new Arg("governor", getGovernorV) + ], + (world, { governor }) => governorAddress(world, governor), + { namePos: 1 } + ), + + new Fetcher<{ governor: Governor }, AddressV>(` + #### Guardian + + * "Governor Guardian" - Returns the address of governor guardian + * E.g. "Governor GovernorScenario Guardian" + `, + "Guardian", + [ + new Arg("governor", getGovernorV) + ], + (world, { governor }) => getGovernorGuardian(world, governor), + { namePos: 1 } + ), + + new Fetcher<{ governor: Governor, params: EventV }, Value>(` + #### Proposal + + * "Governor Proposal <...proposalValue>" - Returns information about a proposal + * E.g. "Governor GovernorScenario Proposal LastProposal Id" + `, + "Proposal", + [ + new Arg("governor", getGovernorV), + new Arg("params", getEventV, { variadic: true }) + ], + (world, { governor, params }) => getProposalValue(world, governor, params.val), + { namePos: 1 } + ), + ]; +} + +export async function getGovernorValue(world: World, event: Event): Promise { + return await getFetcherValue("Governor", governorFetchers(), world, event); +} diff --git a/scenario/src/Value/ProposalValue.ts b/scenario/src/Value/ProposalValue.ts new file mode 100644 index 000000000..e957bc146 --- /dev/null +++ b/scenario/src/Value/ProposalValue.ts @@ -0,0 +1,159 @@ +import { Event } from '../Event'; +import { World } from '../World'; +import { Governor, proposalStateEnums } from '../Contract/Governor'; +import { getAddress } from '../ContractLookup'; +import { + getAddressV, + getArrayV, + getEventV, + getNumberV, + getStringV +} from '../CoreValue'; +import { + AddressV, + BoolV, + EventV, + NumberV, + StringV, + Value +} from '../Value'; +import { Arg, Fetcher, getFetcherValue } from '../Command'; +import { encodedNumber } from '../Encoding'; + +export async function getProposalId(world: World, governor: Governor, proposalIdent: Event): Promise { + if (typeof proposalIdent === 'string' && proposalIdent === 'LastProposal') { + return Number(await governor.methods.proposalCount().call()); + } else if (Array.isArray(proposalIdent) && proposalIdent[0] === 'ActiveProposal' && typeof proposalIdent[1] === 'string') { + let proposer = getAddress(world, proposalIdent[1]); + + return Number(await governor.methods.latestProposalIds(proposer).call()); + } else { + try { + return (await getNumberV(world, proposalIdent)).toNumber(); + } catch (e) { + throw new Error(`Unknown proposal identifier \`${proposalIdent}\`, expected Number or "LastProposal"`); + } + } +} + +async function getProposal(world: World, governor: Governor, proposalIdent: Event, getter: (govener: Governor, number: encodedNumber) => Promise): Promise { + return await getter(governor, new NumberV(await getProposalId(world, governor, proposalIdent)).encode()); +} + +async function getProposalState(world: World, governor: Governor, proposalIdent: Event): Promise { + const proposalId = await getProposalId(world, governor, proposalIdent); + const stateEnum = await governor.methods.state(proposalId).call(); + return new StringV(proposalStateEnums[stateEnum]); +} + +function capitalize(s) { + return s.charAt(0).toUpperCase() + s.slice(1); +} + +export function proposalFetchers(governor: Governor) { + const fields = { + id: getNumberV, + proposer: getAddressV, + eta: getNumberV, + targets: { + constructor: getArrayV(getStringV), + getter: async (governor, proposalId) => (await governor.methods.getProposalFunctionData(proposalId).call())[0] + }, + values: { + constructor: getArrayV(getNumberV), + getter: async (governor, proposalId) => (await governor.methods.getProposalFunctionData(proposalId).call())[1] + }, + signatures: { + constructor: getArrayV(getStringV), + getter: async (governor, proposalId) => (await governor.methods.getProposalFunctionData(proposalId).call())[2] + }, + calldatas: { + constructor: getArrayV(getStringV), + getter: async (governor, proposalId) => (await governor.methods.getProposalFunctionData(proposalId).call())[3] + }, + startBlock: getNumberV, + endBlock: getNumberV, + forVotes: getNumberV, + againstVotes: getNumberV + }; + + const defaultedFields = Object.entries(fields).map(([field, values]) => { + let givenValues; + + if (typeof values === 'object') { + givenValues = values; + } else { + givenValues = { + constructor: values + } + }; + + return { + field: field, + event: capitalize(field.toString()), + getter: async (governor, proposalId) => (await governor.methods.proposals(proposalId).call())[field], + constructor: values, + name: field.toString(), + ...givenValues + }; + }); + + const baseFetchers = []>defaultedFields.map(({ field, constructor, event, name, getter }) => { + return new Fetcher<{ proposalIdent: EventV }, Value>(` + #### ${event} + + * "Governor Proposal ${event}" - Returns the ${name || field} of given proposal + * E.g. "Governor GovernorScenario Proposal 5 ${event}" + * E.g. "Governor GovernorScenario Proposal LastProposal ${event}" + `, + event, + [ + new Arg("proposalIdent", getEventV) + ], + async (world, { proposalIdent }) => await constructor(world, await getProposal(world, governor, proposalIdent.val, getter)), + { namePos: 1 } + ) + }); + + const otherFetchers = []>[ + new Fetcher<{ proposalIdent: EventV, voter: AddressV }, BoolV>(` + #### HasVoted + + * "Governor Proposal HasVoted " - Returns true if the given address has voted on given proposal + * E.g. "Governor GovernorScenario Proposal 5 HasVoted Geoff" + * E.g. "Governor GovernorScenario Proposal LastProposal HasVoted Geoff" + `, + "HasVoted", + [ + new Arg("proposalIdent", getEventV), + new Arg("voter", getAddressV) + ], + async (world, { proposalIdent, voter }) => { + const receipt = await governor.methods.getReceipt(await getProposalId(world, governor, proposalIdent.val), voter.val).call(); + return new BoolV(receipt.hasVoted); + }, + { namePos: 1 } + ), + new Fetcher<{ proposalIdent: EventV }, StringV>(` + #### State + + * "Governor Proposal State" - Returns a string of a proposal's current state + * E.g. "Governor GovernorScenario Proposal LastProposal State" + `, + "State", + [ + new Arg("proposalIdent", getEventV), + ], + async (world, { proposalIdent }) => { + return await getProposalState(world, governor, proposalIdent.val); + }, + { namePos: 1 } + ) + ]; + + return baseFetchers.concat(otherFetchers); +} + +export async function getProposalValue(world: World, governor: Governor, event: Event): Promise { + return await getFetcherValue("Proposal", proposalFetchers(governor), world, event); +} diff --git a/scenario/src/World.ts b/scenario/src/World.ts index b883566aa..4469ca4a2 100644 --- a/scenario/src/World.ts +++ b/scenario/src/World.ts @@ -17,6 +17,8 @@ import { Settings } from './Settings'; import { Accounts, loadAccounts } from './Accounts'; import Web3 from 'web3'; import { Saddle } from 'eth-saddle'; +import { Command, Fetcher } from './Command'; +import { Value} from './Value'; const startingBlockNumber = 1000; @@ -48,6 +50,8 @@ export interface WorldProps { basePath: string | null; eventDecoder: EventDecoder; fs: object | null; + commands: Command[] | undefined; + fetchers: Fetcher[] | undefined; } const defaultWorldProps: WorldProps = { @@ -74,7 +78,9 @@ const defaultWorldProps: WorldProps = { trxInvokationOpts: Map({}), basePath: null, eventDecoder: {}, - fs: null + fs: null, + commands: undefined, + fetchers: undefined, }; export class World extends Record(defaultWorldProps) { @@ -178,8 +184,6 @@ export async function initWorld( accounts: string[], basePath: string | null ): Promise { - let web3 = new Web3(iweb3.currentProvider); - return new World({ actions: [], event: null, @@ -192,7 +196,7 @@ export async function initWorld( contractIndex: {}, contractData: Map({}), expect: expect, - web3: web3, + web3: iweb3, saddle: saddle, printer: printer, network: network, @@ -313,18 +317,18 @@ export function describeUser(world: World, address: string): string { // Look up by alias let alias = Object.entries(world.settings.aliases).find(([name, aliasAddr]) => aliasAddr === address); if (alias) { - return alias[0]; + return `${alias[0]} (${address.slice(0,6)}...)`; } // Look up by `from` if (world.settings.from === address) { - return 'root'; + return `root (${address.slice(0,6)}...)`; } // Look up by unlocked accounts let account = world.accounts.find(account => account.address === address); if (account) { - return account.name; + return `${account.name} (${address.slice(0,6)}...)`; } // Otherwise, just return the address itself diff --git a/scenario/tsconfig.json b/scenario/tsconfig.json index ef2183052..ffeb434d4 100644 --- a/scenario/tsconfig.json +++ b/scenario/tsconfig.json @@ -44,14 +44,14 @@ // "typeRoots": [], /* List of folders to include type definitions from. */ // "types": [], /* Type declaration files to be included in compilation. */ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ /* Source Map Options */ // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ /* Experimental Options */ // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ diff --git a/scenario/yarn.lock b/scenario/yarn.lock index 2e74e12ed..c15cd9463 100644 --- a/scenario/yarn.lock +++ b/scenario/yarn.lock @@ -13,6 +13,17 @@ lodash "^4.17.11" valid-url "^1.0.9" +"@0x/assert@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@0x/assert/-/assert-3.0.3.tgz#18f92aa4e5d87824259b3ddd1cc1882b59f29e8e" + integrity sha512-Yvu701gtykj44ggWe66E2sje4v9odBrO9uAoPwEj3EfN7Kk/AXJEthyWSZVGXQvj7MaFlAElq1Uw8VfzF/gtqA== + dependencies: + "@0x/json-schemas" "^5.0.3" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + lodash "^4.17.11" + valid-url "^1.0.9" + "@0x/dev-utils@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@0x/dev-utils/-/dev-utils-3.0.0.tgz#c14a7ac03c9ca03a3063b700c933df70628a5031" @@ -32,6 +43,25 @@ lodash "^4.17.11" web3-provider-engine "14.0.6" +"@0x/dev-utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@0x/dev-utils/-/dev-utils-3.1.0.tgz#a343f36aa819b2e748fe9946645fd959ebff843c" + integrity sha512-Xy2ub6gxsIu5MsWdmFpxsMaIg5o33lRwzeZshdfPLqGKx6GVM2Kk4GTWUiBrukpoUA8LvyV5nW8vzOrZm0UJfA== + dependencies: + "@0x/subproviders" "^6.0.3" + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + "@0x/web3-wrapper" "^7.0.3" + "@types/web3-provider-engine" "^14.0.0" + chai "^4.0.1" + chai-as-promised "^7.1.0" + chai-bignumber "^3.0.0" + dirty-chai "^2.0.1" + ethereum-types "^3.0.0" + lodash "^4.17.11" + web3-provider-engine "14.0.6" + "@0x/json-schemas@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-5.0.0.tgz#95c29fb7977adb19b9f0127122ec90efb38651ec" @@ -42,6 +72,16 @@ jsonschema "^1.2.0" lodash.values "^4.3.0" +"@0x/json-schemas@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-5.0.3.tgz#8804d20eb13f2551146c399b83cb5e1597205bee" + integrity sha512-B8mAyEb2bPrWHdaIpQjODGRmiH+gCAxadppWibpa36fkHF+4c9FNJCFqRE98Eg5w/IYTOj7JkrsRnkA3Ux1ltQ== + dependencies: + "@0x/typescript-typings" "^5.0.1" + "@types/node" "*" + jsonschema "^1.2.0" + lodash.values "^4.3.0" + "@0x/sol-compiler@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@0x/sol-compiler/-/sol-compiler-4.0.0.tgz#387bd6933c340124d0d2e78d5aa4a134840e3630" @@ -69,6 +109,33 @@ web3-eth-abi "^1.0.0-beta.24" yargs "^10.0.3" +"@0x/sol-compiler@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@0x/sol-compiler/-/sol-compiler-4.0.3.tgz#8e44c352071d2fff5022807cffd011ff274a8857" + integrity sha512-Aj8PQz5yOqo57ciHeL3Da4v4Dkn+JB/t+gBaqIHkrk7IvJ/d/AjPB3LKpGmqRT/AHVljYt3XbWokKxI7gZYafQ== + dependencies: + "@0x/assert" "^3.0.3" + "@0x/json-schemas" "^5.0.3" + "@0x/sol-resolver" "^3.0.2" + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + "@0x/web3-wrapper" "^7.0.3" + "@types/yargs" "^11.0.0" + chalk "^2.3.0" + chokidar "^3.0.2" + ethereum-types "^3.0.0" + ethereumjs-util "^5.1.1" + lodash "^4.17.11" + mkdirp "^0.5.1" + pluralize "^7.0.0" + require-from-string "^2.0.1" + semver "5.5.0" + solc "^0.5.5" + source-map-support "^0.5.0" + web3-eth-abi "^1.0.0-beta.24" + yargs "^10.0.3" + "@0x/sol-resolver@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@0x/sol-resolver/-/sol-resolver-3.0.0.tgz#0b67ce0b39aa571d0ce24f3401f9315005dbe8ee" @@ -78,6 +145,42 @@ "@0x/typescript-typings" "^5.0.0" lodash "^4.17.11" +"@0x/sol-resolver@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@0x/sol-resolver/-/sol-resolver-3.0.2.tgz#2f89df2f049d5ea8501ee1fc2a1d0866a0b3c761" + integrity sha512-+FseY6gmifzrrtnHt70hNezmCDavVd69MqT/r2uyxXtgz2F3oegkPBTBYo4/sxrdiSA+2tYFcqGHNiMDtx6ELA== + dependencies: + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + lodash "^4.17.11" + +"@0x/sol-tracing-utils@^7.0.3": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@0x/sol-tracing-utils/-/sol-tracing-utils-7.0.3.tgz#33de0c07466b1faed2e7b3c9ffdf7fe3fd24315a" + integrity sha512-7LLAb+7EYIuT92xb84Ta560vbSs7EnbomgWztDeKK9HvQ13rRo0XPeu+TlsTsVbgPxVDba1rw30Ax0r9vmLdJw== + dependencies: + "@0x/dev-utils" "^3.1.0" + "@0x/sol-compiler" "^4.0.3" + "@0x/sol-resolver" "^3.0.2" + "@0x/subproviders" "^6.0.3" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + "@0x/web3-wrapper" "^7.0.3" + "@types/solidity-parser-antlr" "^0.2.3" + chalk "^2.3.0" + ethereum-types "^3.0.0" + ethereumjs-util "^5.1.1" + ethers "~4.0.4" + glob "^7.1.2" + istanbul "^0.4.5" + lodash "^4.17.11" + loglevel "^1.6.1" + mkdirp "^0.5.1" + rimraf "^2.6.2" + semaphore-async-await "^1.5.1" + solc "^0.5.5" + solidity-parser-antlr "^0.4.2" + "@0x/subproviders@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-6.0.0.tgz#9d4b32e22c9e71f450b0f6d00978ca6b1129c0b3" @@ -106,6 +209,34 @@ optionalDependencies: "@ledgerhq/hw-transport-node-hid" "^4.3.0" +"@0x/subproviders@^6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-6.0.3.tgz#5d88dc15efab2df6463de5e48706396645c2b5ed" + integrity sha512-sPw9I1rv/JMXxkf6c7xZVbwSMB0RizsuqG45NSHaIwPoWPh3/+IkmIgRv4M9nWignDu/q+F8v0D1ww3aIGMX0Q== + dependencies: + "@0x/assert" "^3.0.3" + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + "@0x/web3-wrapper" "^7.0.3" + "@ledgerhq/hw-app-eth" "^4.3.0" + "@ledgerhq/hw-transport-u2f" "4.24.0" + "@types/hdkey" "^0.7.0" + "@types/web3-provider-engine" "^14.0.0" + bip39 "^2.5.0" + bn.js "^4.11.8" + ethereum-types "^3.0.0" + ethereumjs-tx "^1.3.5" + ethereumjs-util "^5.1.1" + ganache-core "^2.6.0" + hdkey "^0.7.1" + json-rpc-error "2.0.0" + lodash "^4.17.11" + semaphore-async-await "^1.5.1" + web3-provider-engine "14.0.6" + optionalDependencies: + "@ledgerhq/hw-transport-node-hid" "^4.3.0" + "@0x/types@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@0x/types/-/types-3.0.0.tgz#3cc815094fb9b73d3bc6bbe29735af982a0f519c" @@ -115,6 +246,15 @@ bignumber.js "~9.0.0" ethereum-types "^3.0.0" +"@0x/types@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@0x/types/-/types-3.1.1.tgz#b20ca76e9516201b9c27621f941696f41ffc9fac" + integrity sha512-+TQmzH+chWeDWpc+Lce3/q4X2UEHFfAwZcWrV7tEQ5EVAJvph7gpKawRW2XRsmHeQDSHBmiiBdSZ8Rc/OAjvlQ== + dependencies: + "@types/node" "*" + bignumber.js "~9.0.0" + ethereum-types "^3.0.0" + "@0x/typescript-typings@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@0x/typescript-typings/-/typescript-typings-5.0.0.tgz#54bb89fe78216cd9a1a737dead329ad1cb05bd94" @@ -126,6 +266,17 @@ ethereum-types "^3.0.0" popper.js "1.14.3" +"@0x/typescript-typings@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@0x/typescript-typings/-/typescript-typings-5.0.1.tgz#031e291cc506ecd26d3fe10adf618f4f51ff1510" + integrity sha512-zSA39URHkFnL16WD30VMa8wL8va0Khpx9APHffdPWpBOr9SUPdADtae5HO4iNCYvSgo3mrtPlKID2nIqREIHOQ== + dependencies: + "@types/bn.js" "^4.11.0" + "@types/react" "*" + bignumber.js "~9.0.0" + ethereum-types "^3.0.0" + popper.js "1.14.3" + "@0x/utils@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-5.0.0.tgz#4b0acff872c9b158c9293849f8bd2bb62f17b8c5" @@ -145,6 +296,25 @@ js-sha3 "^0.7.0" lodash "^4.17.11" +"@0x/utils@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-5.1.2.tgz#defc545a42343729c9bf7252f0b7413d7ba47694" + integrity sha512-p5BZxs3krXwkjBY8hrmGLkLp4BziVQ6z4tRFIcWSR8C4ptAlZ4QfFL1zqK6O6/rbOsGj+JSIpqRRrxJr2Is6LQ== + dependencies: + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + "@types/node" "*" + abortcontroller-polyfill "^1.1.9" + bignumber.js "~9.0.0" + chalk "^2.3.0" + detect-node "2.0.3" + ethereum-types "^3.0.0" + ethereumjs-util "^5.1.1" + ethers "~4.0.4" + isomorphic-fetch "2.2.1" + js-sha3 "^0.7.0" + lodash "^4.17.11" + "@0x/web3-wrapper@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.0.0.tgz#323e7931f067f7f9ed88cca30bd1ed1f7505fc48" @@ -159,6 +329,73 @@ ethers "~4.0.4" lodash "^4.17.11" +"@0x/web3-wrapper@^7.0.3": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.0.3.tgz#b6015a820909b36e00115047ca1c0c693d56fff8" + integrity sha512-ocUhIz04KORg1Hu3j+w/pKgJ3VF6WiFhwN0VbZkMBggK2eIAYsb3VncLY5hl9g63bTxSk0l3GI5WFgGuxMMn6Q== + dependencies: + "@0x/assert" "^3.0.3" + "@0x/json-schemas" "^5.0.3" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + ethereum-types "^3.0.0" + ethereumjs-util "^5.1.1" + ethers "~4.0.4" + lodash "^4.17.11" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.1.0": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" + integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.7.7" + "@babel/helpers" "^7.7.4" + "@babel/parser" "^7.7.7" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.7.4", "@babel/generator@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" + integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== + dependencies: + "@babel/types" "^7.7.4" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-function-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" + integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== + dependencies: + "@babel/helper-get-function-arity" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helper-get-function-arity@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" + integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== + dependencies: + "@babel/types" "^7.7.4" + "@babel/helper-module-imports@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" @@ -171,6 +408,43 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== +"@babel/helper-split-export-declaration@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" + integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helpers@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" + integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== + dependencies: + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4", "@babel/parser@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" + integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== + +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" + integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-runtime@^7.5.5": version "7.7.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz#4f2b548c88922fb98ec1c242afd4733ee3e12f61" @@ -181,6 +455,13 @@ resolve "^1.8.1" semver "^5.5.1" +"@babel/runtime@^7.3.1": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" + integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/runtime@^7.5.5": version "7.7.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.6.tgz#d18c511121aff1b4f2cd1d452f1bac9601dd830f" @@ -188,7 +469,31 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/types@^7.7.4": +"@babel/template@^7.4.0", "@babel/template@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" + integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" + integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.7.4" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/parser" "^7.7.4" + "@babel/types" "^7.7.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== @@ -197,6 +502,14 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" +"@cnakazawa/watch@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" + integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + "@compound-finance/sol-coverage@^4.0.0-r1": version "4.0.0-r1" resolved "https://registry.yarnpkg.com/@compound-finance/sol-coverage/-/sol-coverage-4.0.0-r1.tgz#d887f875f6ad0a8675fccf30357546a7bc17b2aa" @@ -238,6 +551,154 @@ solc "^0.5.5" solidity-parser-antlr "^0.4.2" +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + "@ledgerhq/devices@^4.78.0": version "4.78.0" resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-4.78.0.tgz#149b572f0616096e2bd5eb14ce14d0061c432be6" @@ -353,6 +814,39 @@ dependencies: defer-to-connect "^1.0.1" +"@types/babel__core@^7.1.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" + integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" + integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== + dependencies: + "@babel/types" "^7.3.0" + "@types/bignumber.js@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@types/bignumber.js/-/bignumber.js-5.0.0.tgz#d9f1a378509f3010a3255e9cc822ad0eeb4ab969" @@ -381,6 +875,33 @@ dependencies: "@types/node" "*" +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" + integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/jest@^24.0.15": + version "24.0.25" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.25.tgz#2aba377824ce040114aa906ad2cac2c85351360f" + integrity sha512-hnP1WpjN4KbGEK4dLayul6lgtys6FPz0UfxMeMQCv0M+sTnzN3ConfiO72jHgLxl119guHgI8gLqDOrRLsyp2g== + dependencies: + jest-diff "^24.3.0" + "@types/minimatch@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -424,6 +945,11 @@ resolved "https://registry.yarnpkg.com/@types/solidity-parser-antlr/-/solidity-parser-antlr-0.2.3.tgz#bb2d9c6511bf483afe4fc3e2714da8a924e59e3f" integrity sha512-FoSyZT+1TTaofbEtGW1oC9wHND1YshvVeHerME/Jh6gIdHbBAWFW8A97YYqO/dpHcFjIwEPEepX0Efl2ckJgwA== +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + "@types/web3-provider-engine@^14.0.0": version "14.0.0" resolved "https://registry.yarnpkg.com/@types/web3-provider-engine/-/web3-provider-engine-14.0.0.tgz#43adc3b39dc9812b82aef8cd2d66577665ad59b0" @@ -431,11 +957,23 @@ dependencies: "@types/ethereum-protocol" "*" +"@types/yargs-parser@*": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" + integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== + "@types/yargs@^11.0.0": version "11.1.3" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-11.1.3.tgz#33c8ebf05f78f1edeb249c1cde1a42ae57f5664e" integrity sha512-moBUF6X8JsK5MbLZGP3vCfG/TVHZHsaePj3EimlLKp8+ESUjGjpXalxyn90a2L9fTM2ZGtW4swb6Am1DvVRNGA== +"@types/yargs@^13.0.0": + version "13.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.4.tgz#53d231cebe1a540e7e13727fc1f0d13ad4a9ba3b" + integrity sha512-Ke1WmBbIkVM8bpvsNEcGgQM70XcEh/nbpxQhW7FhrsbCsXSY9BmLB1+LHtD7r9zrsOcFlLiF+a/UeJsdfw3C5A== + dependencies: + "@types/yargs-parser" "*" + "@web3-js/scrypt-shim@^0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@web3-js/scrypt-shim/-/scrypt-shim-0.1.0.tgz#0bf7529ab6788311d3e07586f7d89107c3bea2cc" @@ -611,6 +1149,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -662,12 +1205,25 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-walk@^6.1.1: +acorn-globals@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-walk@^6.0.1, acorn-walk@^6.1.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== -acorn@^6.0.7, acorn@^6.2.1: +acorn@^5.5.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +acorn@^6.0.1, acorn@^6.0.7, acorn@^6.2.1: version "6.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== @@ -714,6 +1270,11 @@ ansi-colors@^1.0.1: dependencies: ansi-wrap "^0.1.0" +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + ansi-gray@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" @@ -731,7 +1292,7 @@ ansi-regex@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= -ansi-regex@^4.1.0: +ansi-regex@^4.0.0, ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== @@ -753,7 +1314,7 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0: resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= -any-promise@1.3.0, any-promise@^1.3.0: +any-promise@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -840,6 +1401,11 @@ array-each@^1.0.0, array-each@^1.0.1: resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -918,6 +1484,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + async-done@^1.2.0, async-done@^1.2.2: version "1.3.2" resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" @@ -1157,6 +1728,19 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== + dependencies: + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" + babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" @@ -1171,6 +1755,23 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" + +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" + babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" @@ -1445,6 +2046,14 @@ babel-preset-env@^1.7.0: invariant "^2.2.2" semver "^5.3.0" +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" + babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" @@ -1614,7 +2223,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== -bindings@^1.2.1, bindings@^1.3.1, bindings@^1.4.0, bindings@^1.5.0: +bindings@^1.2.1, bindings@^1.4.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -1732,6 +2341,18 @@ brorand@^1.0.1: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-process-hrtime@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== + +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" @@ -1812,6 +2433,13 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + bs58@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.1.tgz#55908d58f1982aba2008fa1bed8f91998a29bf8d" @@ -1833,6 +2461,13 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + btoa@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" @@ -1866,7 +2501,7 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -1980,6 +2615,11 @@ cachedown@1.0.0: abstract-leveldown "^2.4.1" lru-cache "^3.2.0" +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" @@ -1990,7 +2630,7 @@ camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -camelcase@^5.0.0: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -2000,6 +2640,13 @@ caniuse-lite@^1.0.30000844: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz#15a7ddf66aba786a71d99626bc8f2b91c6f0f5f0" integrity sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ== +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2029,7 +2676,7 @@ chai@^4.0.1: pathval "^1.1.0" type-detect "^4.0.5" -chalk@2.4.2, chalk@^2.3.0, chalk@^2.4.1: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2112,6 +2759,11 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -2188,6 +2840,11 @@ cloneable-readable@^1.0.0: process-nextick-args "^2.0.0" readable-stream "^2.3.5" +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -2321,7 +2978,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -2368,6 +3025,11 @@ copy-props@^2.0.1: each-props "^1.3.0" is-plain-object "^2.0.1" +core-js-pure@^3.0.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.2.tgz#81f08059134d1c7318838024e1b8e866bcb1ddb3" + integrity sha512-PRasaCPjjCB65au2dMBPtxuIR6LM8MVNdbIbN57KxcDV1FAYQWlF0pqje/HC2sM6nm/s9KqSTkMTU75pozaghA== + core-js@^2.4.0, core-js@^2.5.0: version "2.6.10" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" @@ -2462,6 +3124,18 @@ crypto-browserify@3.12.0, crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + csstype@^2.2.0: version "2.6.7" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5" @@ -2487,6 +3161,15 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-urls@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2508,6 +3191,13 @@ debug@3.2.6, debug@^3.1.0, debug@^3.2.6: dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -2718,11 +3408,21 @@ detect-libc@^1.0.2, detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + detect-node@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" integrity sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc= +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + diff@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" @@ -2752,6 +3452,13 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -2900,13 +3607,30 @@ errno@^0.1.3, errno@~0.1.1, errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" +es-abstract@^1.17.0-next.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" + integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + es-abstract@^1.5.0: version "1.16.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.3.tgz#52490d978f96ff9f89ec15b5cf244304a5bca161" @@ -2990,6 +3714,18 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" +escodegen@^1.9.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76" + integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -3003,6 +3739,11 @@ esprima@2.7.x, esprima@^2.7.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -3020,7 +3761,7 @@ estraverse@^1.9.1: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= -estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -3162,6 +3903,15 @@ eth-lib@0.2.7: elliptic "^6.4.0" xhr-request-promise "^0.1.2" +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + eth-lib@^0.1.26: version "0.1.29" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" @@ -3182,16 +3932,26 @@ 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.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/eth-saddle/-/eth-saddle-0.0.30.tgz#9be303d4155e6482c098664fef43f812034a23dc" - integrity sha512-0KR/yurqQX3ZgD7QJwHyAK51lPLIaPfMUvkeUUos08btz0UlblnR+p2IJ2hR3Nkemu8rnBiKH3y39o/rGkEJ6w== +eth-saddle@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/eth-saddle/-/eth-saddle-0.1.3.tgz#4a2f9f5cff05e23acc96a8f10d0aaab6f6c0faa2" + integrity sha512-EgxPDA7vCMvPjUAH+ZFp+ycbybO1e/wE2j0GxOeZvj/guGj2vIKAhc8Jl7qiTJvZ6aJVOuzPgipGeUHQtITpcg== dependencies: + "@0x/sol-tracing-utils" "^7.0.3" "@0x/subproviders" "^6.0.0" "@compound-finance/sol-coverage" "^4.0.0-r1" - truffle-hdwallet-provider "^1.0.10" + "@types/jest" "^24.0.15" + ethereumjs-tx "2.1.2" + ethereumjs-util "5.2.0" + ganache-core "^2.9.1" + jest "^24.9.0" + jest-cli "^24.9.0" + jest-junit "^6.4.0" + ts-jest "^24.0.2" + typescript "^3.5.1" web3 "^1.2.4" web3-provider-engine "^15.0.4" + web3-providers "^1.0.0-beta.55" yargs "^13.2.4" eth-sig-util@2.3.0: @@ -3288,7 +4048,7 @@ ethereumjs-abi@0.6.7: bn.js "^4.11.8" ethereumjs-util "^6.0.0" -ethereumjs-account@3.0.0: +ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== @@ -3306,14 +4066,14 @@ ethereumjs-account@^2.0.3: rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-block@2.2.0, ethereumjs-block@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.0.tgz#8c6c3ab4a5eff0a16d9785fbeedbe643f4dbcbef" - integrity sha512-Ye+uG/L2wrp364Zihdlr/GfC3ft+zG8PdHcRtsBFNNH1CkOhxOwdB8friBU85n89uRZ9eIMAywCq0F4CwT1wAw== +ethereumjs-block@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.1.tgz#5fba423305b40ab6486a6b81922e5312b2667c8d" + integrity sha512-ze8I1844m5oKZL7hiHuezRcPzqdi4Iv0ssqQyuRaJ9Je0/YCYfXobJHvNLnex2ETgs5JypicdtLYrCNWdgcLvg== dependencies: async "^2.0.1" ethereumjs-common "^1.1.0" - ethereumjs-tx "^1.2.2" + ethereumjs-tx "^2.1.1" ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" @@ -3328,33 +4088,71 @@ ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" -ethereumjs-blockchain@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-3.4.0.tgz#92240da6ecd86b3d8d324df69510b381f26c966b" - integrity sha512-wxPSmt6EQjhbywkFbftKcb0qRFIZWocHMuDa8/AB4eWL/UPYalNcDyLaxYbrDytmhHid3Uu8G/tA3C/TxZBuOQ== +ethereumjs-block@^2.2.1, ethereumjs-block@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" + integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== + dependencies: + async "^2.0.1" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.1" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-block@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.0.tgz#8c6c3ab4a5eff0a16d9785fbeedbe643f4dbcbef" + integrity sha512-Ye+uG/L2wrp364Zihdlr/GfC3ft+zG8PdHcRtsBFNNH1CkOhxOwdB8friBU85n89uRZ9eIMAywCq0F4CwT1wAw== + dependencies: + async "^2.0.1" + ethereumjs-common "^1.1.0" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-blockchain@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.3.tgz#e013034633a30ad2006728e8e2b21956b267b773" + integrity sha512-0nJWbyA+Gu0ZKZr/cywMtB/77aS/4lOVsIKbgUN2sFQYscXO5rPbUfrEe7G2Zhjp86/a0VqLllemDSTHvx3vZA== dependencies: async "^2.6.1" ethashjs "~0.0.7" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "~6.0.0" + ethereumjs-block "~2.2.2" + ethereumjs-common "^1.5.0" + ethereumjs-util "~6.1.0" flow-stoplight "^1.0.0" level-mem "^3.0.1" lru-cache "^5.1.1" - safe-buffer "^5.1.2" + rlp "^2.2.2" semaphore "^1.1.0" -ethereumjs-common@^1.1.0: +ethereumjs-common@1.4.0, ethereumjs-common@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.4.0.tgz#a940685f88f3c2587e4061630fe720b089c965b8" integrity sha512-ser2SAplX/YI5W2AnzU8wmSjKRy4KQd4uxInJ36BzjS3m18E/B9QedPUIresZN1CSEQb/RgNQ2gN7C/XbpTafA== -ethereumjs-common@^1.3.1, ethereumjs-common@^1.3.2: +ethereumjs-common@^1.3.1, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== -ethereumjs-tx@1.3.7, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.5, ethereumjs-tx@^1.3.7: +ethereumjs-tx@2.1.1, ethereumjs-tx@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.1.tgz#7d204e2b319156c9bc6cec67e9529424a26e8ccc" + integrity sha512-QtVriNqowCFA19X9BCRPMgdVNJ0/gMBS91TQb1DfrhsbR748g4STwxZptFAwfqehMyrF8rDwB23w87PQwru0wA== + dependencies: + ethereumjs-common "^1.3.1" + ethereumjs-util "^6.0.0" + +ethereumjs-tx@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.5, ethereumjs-tx@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== @@ -3362,15 +4160,20 @@ ethereumjs-tx@1.3.7, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^ ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" -ethereumjs-tx@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.1.tgz#7d204e2b319156c9bc6cec67e9529424a26e8ccc" - integrity sha512-QtVriNqowCFA19X9BCRPMgdVNJ0/gMBS91TQb1DfrhsbR748g4STwxZptFAwfqehMyrF8rDwB23w87PQwru0wA== +ethereumjs-util@5.2.0, ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" + integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== dependencies: - ethereumjs-common "^1.3.1" - ethereumjs-util "^6.0.0" + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.3" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" -ethereumjs-util@6.1.0: +ethereumjs-util@6.1.0, ethereumjs-util@~6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" integrity sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q== @@ -3394,19 +4197,6 @@ ethereumjs-util@^4.0.1, ethereumjs-util@^4.3.0: rlp "^2.0.0" secp256k1 "^3.0.1" -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" - integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "^0.1.3" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - ethereumjs-util@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" @@ -3420,36 +4210,26 @@ ethereumjs-util@^6.0.0: rlp "^2.2.3" secp256k1 "^3.0.1" -ethereumjs-util@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz#f14841c182b918615afefd744207c7932c8536c0" - integrity sha512-E3yKUyl0Fs95nvTFQZe/ZSNcofhDzUsDlA5y2uoRmf1+Ec7gpGhNCsgKkZBRh7Br5op8mJcYF/jFbmjj909+nQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "^0.1.6" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - -ethereumjs-vm@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-3.0.0.tgz#70fea2964a6797724b0d93fe080f9984ad18fcdd" - integrity sha512-lNu+G/RWPRCrQM5s24MqgU75PEGiAhL4Ombw0ew6m08d+amsxf/vGAb98yDNdQqqHKV6JbwO/tCGfdqXGI6Cug== +ethereumjs-vm@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.1.1.tgz#ba6f565fd7788a0e7db494fa2096d45f9ea0802b" + integrity sha512-Bh2avDY9Hyon9TvJ/fmkdyd5JDnmTudLJ5oKhmTfXn0Jjq7UzP4YRNp7e5PWoWXSmdXAGXU9W0DXK5TV9Qy/NQ== dependencies: async "^2.1.2" async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-blockchain "^3.4.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" + core-js-pure "^3.0.1" + ethereumjs-account "^3.0.0" + ethereumjs-block "^2.2.1" + ethereumjs-blockchain "^4.0.2" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + ethereumjs-util "~6.1.0" fake-merkle-patricia-tree "^1.0.1" functional-red-black-tree "^1.0.1" merkle-patricia-tree "^2.3.2" rustbn.js "~0.2.0" safe-buffer "^5.1.1" + util.promisify "^1.0.0" ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: version "2.6.0" @@ -3514,7 +4294,7 @@ ethers@^4.0.0-beta.1, ethers@~4.0.4: uuid "2.0.1" xmlhttprequest "1.8.0" -ethjs-unit@0.1.6: +ethjs-unit@0.1.6, ethjs-unit@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= @@ -3522,7 +4302,7 @@ ethjs-unit@0.1.6: bn.js "4.11.6" number-to-bn "1.7.0" -ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: +ethjs-util@0.1.6, ethjs-util@^0.1.3: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== @@ -3530,7 +4310,12 @@ ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -eventemitter3@3.1.2: +eventemitter3@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + +eventemitter3@3.1.2, eventemitter3@^3.1.0: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== @@ -3548,6 +4333,11 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -3574,6 +4364,11 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -3599,6 +4394,18 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== + dependencies: + "@jest/types" "^24.9.0" + ansi-styles "^3.2.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" + express@^4.14.0, express@^4.16.3: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -3708,6 +4515,11 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +fast-json-stable-stringify@2.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -3723,6 +4535,13 @@ fast-safe-stringify@^2.0.6: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -4013,10 +4832,9 @@ functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -ganache-core@^2.6.0, ganache-core@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.8.0.tgz#eeadc7f7fc3a0c20d99f8f62021fb80b5a05490c" - integrity sha512-hfXqZGJx700jJqwDHNXrU2BnPYuETn1ekm36oRHuXY3oOuJLFs5C+cFdUFaBlgUxcau1dOgZUUwKqTAy0gTA9Q== +ganache-core@^2.6.0, ganache-core@^2.9.1, "ganache-core@https://github.com/compound-finance/ganache-core.git#compound": + version "2.9.1" + resolved "https://github.com/compound-finance/ganache-core.git#1d1610a2a0b921e2120fade845658c6238100e21" dependencies: abstract-leveldown "3.0.0" async "2.6.2" @@ -4028,10 +4846,11 @@ ganache-core@^2.6.0, ganache-core@^2.8.0: eth-sig-util "2.3.0" ethereumjs-abi "0.6.7" ethereumjs-account "3.0.0" - ethereumjs-block "2.2.0" - ethereumjs-tx "1.3.7" + ethereumjs-block "2.2.1" + ethereumjs-common "1.4.0" + ethereumjs-tx "2.1.1" ethereumjs-util "6.1.0" - ethereumjs-vm "3.0.0" + ethereumjs-vm "4.1.1" heap "0.2.6" level-sublevel "6.6.4" levelup "3.1.1" @@ -4044,7 +4863,7 @@ ganache-core@^2.6.0, ganache-core@^2.8.0: websocket "1.0.29" optionalDependencies: ethereumjs-wallet "0.6.3" - web3 "1.2.1" + web3 "1.2.4" gauge@~2.7.3: version "2.7.4" @@ -4241,6 +5060,11 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -4305,6 +5129,11 @@ growl@1.10.3: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" integrity sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q== +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + gulp-cli@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" @@ -4354,7 +5183,7 @@ gzip-size@^5.0.0: duplexer "^0.1.1" pify "^4.0.1" -handlebars@^4.0.1: +handlebars@^4.0.1, handlebars@^4.1.2: version "4.5.3" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== @@ -4545,6 +5374,13 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + http-cache-semantics@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" @@ -4632,7 +5468,7 @@ immutable@^4.0.0-rc.12: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" integrity sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A== -import-local@2.0.0: +import-local@2.0.0, import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== @@ -4683,7 +5519,7 @@ interpret@1.2.0, interpret@^1.1.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== -invariant@^2.2.2: +invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -4756,6 +5592,18 @@ is-callable@^1.1.3, is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4839,6 +5687,11 @@ is-function@^1.0.1: resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -4909,6 +5762,13 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -5005,6 +5865,51 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-reports@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" + integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== + dependencies: + handlebars "^4.1.2" + istanbul@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" @@ -5033,6 +5938,370 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== + dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" + throat "^4.0.0" + +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== + dependencies: + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.3.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== + dependencies: + chalk "^2.0.1" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== + dependencies: + detect-newline "^2.1.0" + +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== + dependencies: + "@jest/types" "^24.9.0" + chalk "^2.0.1" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + jsdom "^11.5.1" + +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" + +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== + +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== + dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-junit@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e" + integrity sha512-GXEZA5WBeUich94BARoEUccJumhCgCerg7mXDFLxWwI2P7wL3Z7sGWk+53x343YdBLjiMR9aD/gYMVKO+0pE4Q== + dependencies: + jest-validate "^24.0.0" + mkdirp "^0.5.1" + strip-ansi "^4.0.0" + xml "^1.0.1" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== + dependencies: + chalk "^2.0.1" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" + +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== + +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== + dependencies: + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" + +jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== + dependencies: + "@jest/types" "^24.9.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + source-map-support "^0.5.6" + throat "^4.0.0" + +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" + +jest-validate@^24.0.0, jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== + dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" + chalk "^2.0.1" + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.9.0" + string-length "^2.0.0" + +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== + dependencies: + import-local "^2.0.0" + jest-cli "^24.9.0" + js-sha3@0.5.7, js-sha3@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" @@ -5053,7 +6322,7 @@ js-sha3@^0.7.0: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.7.0.tgz#0a5c57b36f79882573b2d84051f8bb85dd1bd63a" integrity sha512-Wpks3yBDm0UcL5qlVhwW9Jr9n9i4FfeWBFOOXP5puDS/SiudJGhw7DPyBqn3487qD4F0lsC0q3zxink37f7zeA== -"js-tokens@^3.0.0 || ^4.0.0": +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -5076,11 +6345,48 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdom@^11.5.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== + dependencies: + abab "^2.0.0" + acorn "^5.5.3" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle "^1.0.0" + data-urls "^1.0.0" + domexception "^1.0.1" + escodegen "^1.9.1" + html-encoding-sniffer "^1.0.2" + left-pad "^1.3.0" + nwsapi "^2.0.7" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.87.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.4" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.1" + ws "^5.2.0" + xml-name-validator "^3.0.0" + jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -5091,7 +6397,7 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -5157,6 +6463,13 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json5@2.x, json5@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + dependencies: + minimist "^1.2.0" + json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -5274,6 +6587,11 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + last-run@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" @@ -5310,6 +6628,11 @@ lead@^1.0.0: dependencies: flush-write-stream "^1.0.2" +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + level-codec@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.1.tgz#042f4aa85e56d4328ace368c950811ba802b7247" @@ -5439,6 +6762,11 @@ levelup@^1.2.1: semver "~5.4.1" xtend "~4.0.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -5472,6 +6800,16 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + loader-runner@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -5507,6 +6845,16 @@ lodash.flatmap@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.values@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" @@ -5593,7 +6941,7 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-dir@^2.0.0: +make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -5601,6 +6949,11 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" +make-error@1.x: + version "1.3.5" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== + make-iterator@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" @@ -5608,6 +6961,13 @@ make-iterator@^1.0.0: dependencies: kind-of "^6.0.2" +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + mamacro@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" @@ -5722,6 +7082,11 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" @@ -5834,7 +7199,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.2.0, minimist@~1.2.0: +minimist@^1.1.1, minimist@^1.2.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -5890,7 +7255,7 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -5987,6 +7352,11 @@ napi-build-utils@^1.0.1: resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508" integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA== +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + needle@^2.2.1: version "2.4.0" resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" @@ -6045,6 +7415,11 @@ node-hid@^0.7.9: nan "^2.13.2" prebuild-install "^5.3.0" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + node-libs-browser@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" @@ -6074,6 +7449,22 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== + dependencies: + growly "^1.3.0" + is-wsl "^1.1.0" + semver "^5.5.0" + shellwords "^0.1.1" + which "^1.3.0" + node-pre-gyp@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" @@ -6187,6 +7578,11 @@ number-to-bn@1.7.0: bn.js "4.11.6" strip-hex-prefix "1.0.0" +nwsapi@^2.0.7: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -6233,7 +7629,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4: +object.assign@^4.0.4, object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -6253,6 +7649,14 @@ object.defaults@^1.0.0, object.defaults@^1.1.0: for-own "^1.0.0" isobject "^3.0.0" +object.getownpropertydescriptors@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + object.map@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" @@ -6392,6 +7796,13 @@ p-defer@^1.0.0: resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -6430,6 +7841,11 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + p-timeout@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" @@ -6494,6 +7910,14 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse-node-version@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" @@ -6504,6 +7928,11 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -6577,6 +8006,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + pathval@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" @@ -6640,6 +8076,13 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -6652,6 +8095,11 @@ pluralize@^7.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + popper.js@1.14.3: version "1.14.3" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" @@ -6703,6 +8151,16 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== + dependencies: + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + react-is "^16.8.4" + pretty-hrtime@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" @@ -6741,6 +8199,14 @@ promise-to-callback@^1.0.0: is-fn "^1.0.0" set-immediate-shim "^1.0.1" +prompts@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" + integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.3" + proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" @@ -6764,6 +8230,11 @@ psl@^1.1.24: resolved "https://registry.yarnpkg.com/psl/-/psl-1.6.0.tgz#60557582ee23b6c43719d9890fb4170ecd91e110" integrity sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA== +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -6864,7 +8335,7 @@ punycode@^1.2.4, punycode@^1.4.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== @@ -6898,6 +8369,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +querystringify@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -6913,11 +8389,6 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -randomhex@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" - integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -6943,6 +8414,11 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-is@^16.8.4: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" + integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -6951,6 +8427,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -6960,6 +8444,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -7018,6 +8511,13 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -7131,7 +8631,23 @@ replace-homedir@^1.0.0: is-absolute "^1.0.0" remove-trailing-separator "^1.1.0" -request@^2.67.0, request@^2.79.0, request@^2.85.0, request@^2.88.0: +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.67.0, request@^2.79.0, request@^2.85.0, request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -7177,6 +8693,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -7209,11 +8730,18 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@1.1.x: +resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +resolve@1.x, resolve@^1.3.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" + integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== + dependencies: + path-parse "^1.0.6" + resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0, resolve@^1.8.1: version "1.13.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" @@ -7262,13 +8790,18 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.3: +rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3: version "2.2.4" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.4.tgz#d6b0e1659e9285fc509a5d169a9bd06f704951c1" integrity sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw== dependencies: bn.js "^4.11.1" +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -7281,6 +8814,13 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== +rxjs@^6.4.0: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + rxjs@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" @@ -7317,6 +8857,21 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -7354,7 +8909,7 @@ scrypt.js@^0.3.0, "scrypt.js@https://registry.npmjs.org/@compound-finance/ethere utf8 "^3.0.0" uuid "^3.3.2" -scryptsy@2.1.0, scryptsy@^2.1.0: +scryptsy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== @@ -7402,7 +8957,7 @@ semver-greatest-satisfied-range@^1.1.0: dependencies: sver-compat "^1.5.0" -"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -7412,12 +8967,7 @@ semver@5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" - integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== - -semver@^6.3.0: +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -7534,7 +9084,12 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -signal-exit@^3.0.0: +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= @@ -7562,11 +9117,21 @@ simple-get@^3.0.3: once "^1.3.1" simple-concat "^1.0.0" +sisteransi@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" + integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -7656,7 +9221,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.0, source-map-support@~0.5.12: +source-map-support@^0.5.0, source-map-support@^0.5.6, source-map-support@~0.5.12: version "0.5.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== @@ -7669,7 +9234,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -7756,6 +9321,11 @@ stack-trace@0.0.10: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= +stack-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -7769,6 +9339,11 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -7819,6 +9394,14 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -7854,7 +9437,7 @@ string.prototype.trim@~1.1.2: es-abstract "^1.5.0" function-bind "^1.0.2" -string.prototype.trimleft@^2.1.0: +string.prototype.trimleft@^2.1.0, string.prototype.trimleft@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== @@ -7862,7 +9445,7 @@ string.prototype.trimleft@^2.1.0: define-properties "^1.1.3" function-bind "^1.1.1" -string.prototype.trimright@^2.1.0: +string.prototype.trimright@^2.1.0, string.prototype.trimright@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== @@ -7917,6 +9500,11 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" @@ -7948,7 +9536,7 @@ supports-color@4.4.0: dependencies: has-flag "^2.0.0" -supports-color@6.1.0: +supports-color@6.1.0, supports-color@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== @@ -8000,6 +9588,11 @@ swarm-js@0.1.39: tar "^4.0.2" xhr-request-promise "^0.1.2" +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -8095,6 +9688,21 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= + through2-filter@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" @@ -8147,6 +9755,11 @@ tmp@0.1.0: dependencies: rimraf "^2.6.3" +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + to-absolute-glob@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" @@ -8224,6 +9837,14 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +tough-cookie@^2.3.3, tough-cookie@^2.3.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -8232,6 +9853,13 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -8248,30 +9876,27 @@ truffle-flattener@^1.3.0: solidity-parser-antlr "^0.4.11" tsort "0.0.1" -truffle-hdwallet-provider@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.5.tgz#76059fb37d13df70bf37a9c296cf27d5a944e112" - integrity sha512-T9qNm7b6MD0UPWVmmJEhgzW1DdR6mkMDijGBSbdJqYaaBLufoycE+qH3dsV+m1mLTE+ebM5RcJ4gF4oXgDW67w== - dependencies: - any-promise "^1.3.0" - bindings "^1.3.1" - websocket "^1.0.28" - -truffle-hdwallet-provider@^1.0.10: - version "1.0.17" - resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.17.tgz#fe8edd0d6974eeb31af9959e41525fb19abd74ca" - integrity sha512-s6DvSP83jiIAc6TUcpr7Uqnja1+sLGJ8og3X7n41vfyC4OCaKmBtXL5HOHf+SsU3iblOvnbFDgmN6Y1VBL/fsg== - dependencies: - any-promise "^1.3.0" - bindings "^1.3.1" - web3 "1.2.1" - websocket "^1.0.28" - tryer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== +ts-jest@^24.0.2: + version "24.3.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.3.0.tgz#b97814e3eab359ea840a1ac112deae68aa440869" + integrity sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" + ts-loader@^5.3.3: version "5.4.5" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.4.5.tgz#a0c1f034b017a9344cef0961bfd97cc192492b8b" @@ -8374,6 +9999,11 @@ typescript@^3.3.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.3.tgz#b36840668a16458a7025b9eabfad11b66ab85c69" integrity sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw== +typescript@^3.5.1: + version "3.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.4.tgz#1743a5ec5fef6a1fa9f3e4708e33c81c73876c19" + integrity sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw== + typewise-core@^1.2, typewise-core@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" @@ -8533,6 +10163,14 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" +url-parse@1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" + integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== + dependencies: + querystringify "^2.0.0" + requires-port "^1.0.0" + url-set-query@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" @@ -8565,6 +10203,11 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +utf8@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" + integrity sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g= + utf8@3.0.0, utf8@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" @@ -8575,6 +10218,14 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -8706,6 +10357,20 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +w3c-hr-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + dependencies: + browser-process-hrtime "^0.1.2" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + watchpack@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" @@ -8715,15 +10380,6 @@ watchpack@^1.6.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -web3-bzz@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" - integrity sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw== - dependencies: - got "9.6.0" - swarm-js "0.1.39" - underscore "1.9.1" - web3-bzz@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.4.tgz#a4adb7a8cba3d260de649bdb1f14ed359bfb3821" @@ -8734,14 +10390,16 @@ web3-bzz@1.2.4: swarm-js "0.1.39" underscore "1.9.1" -web3-core-helpers@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" - integrity sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw== +web3-core-helpers@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.55.tgz#832b8499889f9f514b1d174f00172fd3683d63de" + integrity sha512-suj9Xy/lIqajaYLJTEjr2rlFgu6hGYwChHmf8+qNrC2luZA6kirTamtB9VThWMxbywx7p0bqQFjW6zXogAgWhg== dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.1" - web3-utils "1.2.1" + "@babel/runtime" "^7.3.1" + lodash "^4.17.11" + web3-core "1.0.0-beta.55" + web3-eth-iban "1.0.0-beta.55" + web3-utils "1.0.0-beta.55" web3-core-helpers@1.2.4: version "1.2.4" @@ -8752,16 +10410,19 @@ web3-core-helpers@1.2.4: web3-eth-iban "1.2.4" web3-utils "1.2.4" -web3-core-method@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" - integrity sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ== +web3-core-method@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.55.tgz#0af994295ac2dd64ccd53305b7df8da76e11da49" + integrity sha512-w1cW/s2ji9qGELHk2uMJCn1ooay0JJLVoPD1nvmsW6OTRWcVjxa62nJrFQhe6P5lEb83Xk9oHgmCxZoVUHibOw== dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-core-promievent "1.2.1" - web3-core-subscriptions "1.2.1" - web3-utils "1.2.1" + "@babel/runtime" "^7.3.1" + eventemitter3 "3.1.0" + lodash "^4.17.11" + rxjs "^6.4.0" + web3-core "1.0.0-beta.55" + web3-core-helpers "1.0.0-beta.55" + web3-core-subscriptions "1.0.0-beta.55" + web3-utils "1.0.0-beta.55" web3-core-method@1.2.4: version "1.2.4" @@ -8774,14 +10435,6 @@ web3-core-method@1.2.4: web3-core-subscriptions "1.2.4" web3-utils "1.2.4" -web3-core-promievent@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" - integrity sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw== - dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" - web3-core-promievent@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.4.tgz#75e5c0f2940028722cdd21ba503ebd65272df6cb" @@ -8790,17 +10443,6 @@ web3-core-promievent@1.2.4: any-promise "1.3.0" eventemitter3 "3.1.2" -web3-core-requestmanager@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" - integrity sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-providers-http "1.2.1" - web3-providers-ipc "1.2.1" - web3-providers-ws "1.2.1" - web3-core-requestmanager@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.4.tgz#0a7020a23fb91c6913c611dfd3d8c398d1e4b4a8" @@ -8812,14 +10454,14 @@ web3-core-requestmanager@1.2.4: web3-providers-ipc "1.2.4" web3-providers-ws "1.2.4" -web3-core-subscriptions@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" - integrity sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g== +web3-core-subscriptions@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.55.tgz#105902c13db53466fc17d07a981ad3d41c700f76" + integrity sha512-pb3oQbUzK7IoyXwag8TYInQddg0rr7BHxKc+Pbs/92hVNQ5ps4iGMVJKezdrjlQ1IJEEUiDIglXl4LZ1hIuMkw== dependencies: - eventemitter3 "3.1.2" - underscore "1.9.1" - web3-core-helpers "1.2.1" + "@babel/runtime" "^7.3.1" + eventemitter3 "^3.1.0" + lodash "^4.17.11" web3-core-subscriptions@1.2.4: version "1.2.4" @@ -8830,15 +10472,18 @@ web3-core-subscriptions@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" -web3-core@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" - integrity sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg== +web3-core@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.55.tgz#26b9abbf1bc1837c9cc90f06ecbc4ed714f89b53" + integrity sha512-AMMp7TLEtE7u8IJAu/THrRhBTZyZzeo7Y6GiWYNwb5+KStC9hIGLr9cI1KX9R6ZioTOLRHrqT7awDhnJ1ku2mg== dependencies: - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-requestmanager "1.2.1" - web3-utils "1.2.1" + "@babel/runtime" "^7.3.1" + "@types/bn.js" "^4.11.4" + "@types/node" "^10.12.18" + lodash "^4.17.11" + web3-core-method "1.0.0-beta.55" + web3-providers "1.0.0-beta.55" + web3-utils "1.0.0-beta.55" web3-core@1.2.4: version "1.2.4" @@ -8853,15 +10498,6 @@ web3-core@1.2.4: web3-core-requestmanager "1.2.4" web3-utils "1.2.4" -web3-eth-abi@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" - integrity sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g== - dependencies: - ethers "4.0.0-beta.3" - underscore "1.9.1" - web3-utils "1.2.1" - web3-eth-abi@1.2.4, web3-eth-abi@^1.0.0-beta.24: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.4.tgz#5b73e5ef70b03999227066d5d1310b168845e2b8" @@ -8871,23 +10507,6 @@ web3-eth-abi@1.2.4, web3-eth-abi@^1.0.0-beta.24: underscore "1.9.1" web3-utils "1.2.4" -web3-eth-accounts@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" - integrity sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ== - dependencies: - any-promise "1.3.0" - crypto-browserify "3.12.0" - eth-lib "0.2.7" - scryptsy "2.1.0" - semver "6.2.0" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-utils "1.2.1" - web3-eth-accounts@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.4.tgz#ada6edc49542354328a85cafab067acd7f88c288" @@ -8906,20 +10525,6 @@ web3-eth-accounts@1.2.4: web3-core-method "1.2.4" web3-utils "1.2.4" -web3-eth-contract@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" - integrity sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g== - dependencies: - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-promievent "1.2.1" - web3-core-subscriptions "1.2.1" - web3-eth-abi "1.2.1" - web3-utils "1.2.1" - web3-eth-contract@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.4.tgz#68ef7cc633232779b0a2c506a810fbe903575886" @@ -8935,20 +10540,6 @@ web3-eth-contract@1.2.4: web3-eth-abi "1.2.4" web3-utils "1.2.4" -web3-eth-ens@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" - integrity sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q== - dependencies: - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-promievent "1.2.1" - web3-eth-abi "1.2.1" - web3-eth-contract "1.2.1" - web3-utils "1.2.1" - web3-eth-ens@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.4.tgz#b95b3aa99fb1e35c802b9e02a44c3046a3fa065e" @@ -8963,13 +10554,14 @@ web3-eth-ens@1.2.4: web3-eth-contract "1.2.4" web3-utils "1.2.4" -web3-eth-iban@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" - integrity sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ== +web3-eth-iban@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.55.tgz#15146a69de21addc99e7dbfb2920555b1e729637" + integrity sha512-a2Fxsb5Mssa+jiXgjUdIzJipE0175IcQXJbZLpKft2+zeSJWNTbaa3PQD2vPPpIM4W789q06N+f9Zc0Fyls+1g== dependencies: + "@babel/runtime" "^7.3.1" bn.js "4.11.8" - web3-utils "1.2.1" + web3-utils "1.0.0-beta.55" web3-eth-iban@1.2.4: version "1.2.4" @@ -8979,17 +10571,6 @@ web3-eth-iban@1.2.4: bn.js "4.11.8" web3-utils "1.2.4" -web3-eth-personal@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" - integrity sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg== - dependencies: - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-net "1.2.1" - web3-utils "1.2.1" - web3-eth-personal@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.4.tgz#3224cca6851c96347d9799b12c1b67b2a6eb232b" @@ -9002,25 +10583,6 @@ web3-eth-personal@1.2.4: web3-net "1.2.4" web3-utils "1.2.4" -web3-eth@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" - integrity sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA== - dependencies: - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-subscriptions "1.2.1" - web3-eth-abi "1.2.1" - web3-eth-accounts "1.2.1" - web3-eth-contract "1.2.1" - web3-eth-ens "1.2.1" - web3-eth-iban "1.2.1" - web3-eth-personal "1.2.1" - web3-net "1.2.1" - web3-utils "1.2.1" - web3-eth@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.4.tgz#24c3b1f1ac79351bbfb808b2ab5c585fa57cdd00" @@ -9040,15 +10602,6 @@ web3-eth@1.2.4: web3-net "1.2.4" web3-utils "1.2.4" -web3-net@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" - integrity sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw== - dependencies: - web3-core "1.2.1" - web3-core-method "1.2.1" - web3-utils "1.2.1" - web3-net@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.4.tgz#1d246406d3aaffbf39c030e4e98bce0ca5f25458" @@ -9139,14 +10692,6 @@ web3-provider-engine@^15.0.4: xhr "^2.2.0" xtend "^4.0.1" -web3-providers-http@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" - integrity sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ== - dependencies: - web3-core-helpers "1.2.1" - xhr2-cookies "1.1.0" - web3-providers-http@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.4.tgz#514fcad71ae77832c2c15574296282fbbc5f4a67" @@ -9155,15 +10700,6 @@ web3-providers-http@1.2.4: web3-core-helpers "1.2.4" xhr2-cookies "1.1.0" -web3-providers-ipc@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" - integrity sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-providers-ipc@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.4.tgz#9d6659f8d44943fb369b739f48df09092be459bd" @@ -9173,15 +10709,6 @@ web3-providers-ipc@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" -web3-providers-ws@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" - integrity sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" - web3-providers-ws@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.4.tgz#099ee271ee03f6ea4f5df9cfe969e83f4ce0e36f" @@ -9191,15 +10718,22 @@ web3-providers-ws@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" -web3-shh@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" - integrity sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA== +web3-providers@1.0.0-beta.55, web3-providers@^1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-providers/-/web3-providers-1.0.0-beta.55.tgz#639503517741b69baaa82f1f940630df6a25992b" + integrity sha512-MNifc7W+iF6rykpbDR1MuX152jshWdZXHAU9Dk0Ja2/23elhIs4nCWs7wOX9FHrKgdrQbscPoq0uy+0aGzyWVQ== dependencies: - web3-core "1.2.1" - web3-core-method "1.2.1" - web3-core-subscriptions "1.2.1" - web3-net "1.2.1" + "@babel/runtime" "^7.3.1" + "@types/node" "^10.12.18" + eventemitter3 "3.1.0" + lodash "^4.17.11" + url-parse "1.4.4" + web3-core "1.0.0-beta.55" + web3-core-helpers "1.0.0-beta.55" + web3-core-method "1.0.0-beta.55" + web3-utils "1.0.0-beta.55" + websocket "^1.0.28" + xhr2-cookies "1.1.0" web3-shh@1.2.4: version "1.2.4" @@ -9211,18 +10745,21 @@ web3-shh@1.2.4: web3-core-subscriptions "1.2.4" web3-net "1.2.4" -web3-utils@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" - integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== +web3-utils@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.55.tgz#beb40926b7c04208b752d36a9bc959d27a04b308" + integrity sha512-ASWqUi8gtWK02Tp8ZtcoAbHenMpQXNvHrakgzvqTNNZn26wgpv+Q4mdPi0KOR6ZgHFL8R/9b5BBoUTglS1WPpg== dependencies: + "@babel/runtime" "^7.3.1" + "@types/bn.js" "^4.11.4" + "@types/node" "^10.12.18" bn.js "4.11.8" - eth-lib "0.2.7" - ethjs-unit "0.1.6" + eth-lib "0.2.8" + ethjs-unit "^0.1.6" + lodash "^4.17.11" number-to-bn "1.7.0" - randomhex "0.1.5" - underscore "1.9.1" - utf8 "3.0.0" + randombytes "^2.1.0" + utf8 "2.1.1" web3-utils@1.2.4: version "1.2.4" @@ -9238,20 +10775,7 @@ web3-utils@1.2.4: underscore "1.9.1" utf8 "3.0.0" -web3@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" - integrity sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw== - dependencies: - web3-bzz "1.2.1" - web3-core "1.2.1" - web3-eth "1.2.1" - web3-eth-personal "1.2.1" - web3-net "1.2.1" - web3-shh "1.2.1" - web3-utils "1.2.1" - -web3@^1.2.4: +web3@1.2.4, web3@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.4.tgz#6e7ab799eefc9b4648c2dab63003f704a1d5e7d9" integrity sha512-xPXGe+w0x0t88Wj+s/dmAdASr3O9wmA9mpZRtixGZxmBexAF0MjfqYM+MS4tVl5s11hMTN3AZb8cDD4VLfC57A== @@ -9265,6 +10789,11 @@ web3@^1.2.4: web3-shh "1.2.4" web3-utils "1.2.4" +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webpack-bundle-analyzer@^3.1.0: version "3.6.0" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz#39b3a8f829ca044682bc6f9e011c95deb554aefd" @@ -9360,15 +10889,12 @@ websocket@^1.0.28: typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" -"websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": - version "1.0.29" - resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/905deb4812572b344f5801f8c9ce8bb02799d82e" +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: - debug "^2.2.0" - es5-ext "^0.10.50" - nan "^2.14.0" - typedarray-to-buffer "^3.1.5" - yaeti "^0.0.6" + iconv-lite "0.4.24" whatwg-fetch@2.0.4: version "2.0.4" @@ -9380,6 +10906,29 @@ whatwg-fetch@>=0.10.0: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^6.4.1: + version "6.5.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -9395,7 +10944,7 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.1.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@^1.1.1, which@^1.2.14, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -9453,6 +11002,15 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -9462,7 +11020,7 @@ ws@^3.0.0: safe-buffer "~5.1.0" ultron "~1.1.0" -ws@^5.1.1: +ws@^5.1.1, ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== @@ -9513,6 +11071,16 @@ xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: parse-headers "^2.0.0" xtend "^4.0.0" +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xml@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= + xmlhttprequest@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" @@ -9555,6 +11123,13 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yargs-parser@10.x: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + yargs-parser@^13.1.0, yargs-parser@^13.1.1: version "13.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" @@ -9612,7 +11187,7 @@ yargs@^10.0.3: y18n "^3.2.1" yargs-parser "^8.1.0" -yargs@^13.2.4: +yargs@^13.2.4, yargs@^13.3.0: version "13.3.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== diff --git a/script/build_scenarios b/script/build_scenarios index c333107bf..bf372c2e0 100755 --- a/script/build_scenarios +++ b/script/build_scenarios @@ -5,9 +5,9 @@ set -eo pipefail dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" root_dir="$(cd $dir/.. && pwd)" tests_dir="$(cd $root_dir/tests && pwd)" -scenario_dir="$tests_dir/scenarios" +scenario_dir="$tests_dir/Scenarios" cache_file="$root_dir/.scencache" -checksum="$(echo $root_dir/spec/scenario/*.scen | xargs shasum -p | shasum -p | cut -d' ' -f 1)" +checksum="$(echo $root_dir/spec/scenario{,/**}/*.scen | xargs shasum -p | shasum -p | cut -d' ' -f 1)" if [ -z "$rebuild" -a -f "$cache_file" ]; then cached="$(cat $cache_file)" @@ -22,17 +22,21 @@ echo "Build scenario stubs..." rm -rf "$scenario_dir" && mkdir "$scenario_dir" scenario_test="$(cat <<-EOF -const scenario = require('../Scenario'); +const scenario = require('REL_PATHScenario'); scenario.run('SCEN_FILE'); EOF )" -for scenario in $root_dir/spec/scenario/*.scen; do - base="$(basename -- $scenario)" +cd $root_dir/spec/scenario + +for scenario in .{,/**}/*.scen; do + base="${scenario#.\/}" filename="${base%.*}ScenTest.js" final="$scenario_dir/$filename" - echo "$scenario_test" | sed "s^SCEN_FILE^$base^g" > "$final" + mkdir -p "$(dirname "$final")" + rel_path="$(echo "$scenario" | sed 's$[^/]$$g' | sed 's$/$../$g')" + echo "$scenario_test" | sed "s^SCEN_FILE^$base^g" | sed "s^REL_PATH^$rel_path^g" > "$final" done echo "$checksum" > "$cache_file" diff --git a/script/compile b/script/compile index f9a980bce..ba346374e 100755 --- a/script/compile +++ b/script/compile @@ -5,8 +5,10 @@ set -eo pipefail dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" root_dir="$(cd $dir/.. && pwd)" cache_file="$root_dir/.solcache" -[[ "$*" == "--coverage" ]] && cache_file="${cache_file}cov" -checksum="$(ls $root_dir/{contracts,tests/Contracts}/*.sol | xargs shasum -p | shasum -p | cut -d' ' -f 1)" +saddle_config_file="$root_dir/saddle.config.js" +config_trace=`node -e "console.log(require(\"$saddle_config_file\").trace)"` +[[ "$*" == "--trace" ]] || [[ "$config_trace" == "true" ]] && cache_file="${cache_file}cov" +checksum="$(ls $root_dir/{contracts,contracts/**,tests/Contracts}/*.sol | xargs shasum -p | shasum -p | cut -d' ' -f 1)" if [ -z "$rebuild" -a -f "$cache_file" ]; then cached="$(cat $cache_file)" diff --git a/script/coverage b/script/coverage index 53200e20d..025ddfb3b 100755 --- a/script/coverage +++ b/script/coverage @@ -14,12 +14,12 @@ verbose=${verbose:-} [[ -z $NO_TSC ]] && "$proj_root/scenario/script/tsc" # Build scenario stubs -[[ -z $NO_BUILD_STUB ]] && "$proj_root/script/compile" --coverage +[[ -z $NO_BUILD_STUB ]] && "$proj_root/script/compile" --trace # Build scenario stubs [[ -z $NO_BUILD_SCEN ]] && "$proj_root/script/build_scenarios" -# rm -rf "$coverage_root" +rm -rf "$coverage_root" proj_root="$proj_root" verbose="$verbose" node --max_old_space_size=4096 "./node_modules/.bin/saddle" coverage $@ coverage_code=$? diff --git a/script/ganache b/script/ganache deleted file mode 100755 index fad88e7bd..000000000 --- a/script/ganache +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -dir=`dirname $0` -proj_root="$dir/.." - -npx ganache-cli \ - --gasLimit 20000000 \ - --gasPrice 20000 \ - --defaultBalanceEther 1000000000 \ - --allowUnlimitedContractSize \ - $@ diff --git a/script/test b/script/test index dd2a4656e..ff45cf460 100755 --- a/script/test +++ b/script/test @@ -7,6 +7,9 @@ proj_root="$dir/.." network=${NETWORK:-test} verbose=${verbose:-} +debug_args="-n --inspect" #add "debugger" statements to javascript and interact with running code in repl found at chrome://inspect +[[ -z $DEBUG ]] && debug_args="" + # Compile scenario runner [[ -z $NO_TSC ]] && "$proj_root/scenario/script/tsc" @@ -16,4 +19,12 @@ verbose=${verbose:-} # Build scenario stubs [[ -z $NO_BUILD_SCEN ]] && "$proj_root/script/build_scenarios" -proj_root="$proj_root" verbose="$verbose" npx saddle test $@ +[[ -n $NO_RUN ]] && exit 0 + +args=() +for arg in "$@"; do + mapped=`node -e "console.log(\"$arg\".replace(/spec\/scenario\/(.*).scen/i, \"tests/Scenarios/\\$1ScenTest.js\"))"` + args+=("$mapped") +done + +proj_root="$proj_root" verbose="$verbose" npx $debug_args saddle test "${args[@]}" diff --git a/script/verify b/script/verify index 4941646cf..c62d83e29 100755 --- a/script/verify +++ b/script/verify @@ -9,13 +9,13 @@ command -v z3 >/dev/null 2>&1 || { echo "Error: z3 is not installed." >&2; exit function verify_spec { [ -e "$1" ] || (echo "spec file not found: $1" && exit 1) - echo "Not verifying $1" + make -B "$1" } if [ "$CI" ]; then - all_specs=($(echo spec/certora/*/*.cvl | circleci tests split --split-by=timings)) + all_specs=($(echo "" | circleci tests split --split-by=timings)) elif [[ $# -eq 0 ]] ; then - all_specs=(spec/certora/*/*.cvl) + all_specs=(spec/certora/{Comp,Governor}/*.cvl) else all_specs=($@) fi diff --git a/spec/certora/Comp/comp.cvl b/spec/certora/Comp/comp.cvl new file mode 100644 index 000000000..8fbdbc49e --- /dev/null +++ b/spec/certora/Comp/comp.cvl @@ -0,0 +1,23 @@ +binarySearch(uint blockNumber, uint futureBlock) { + env e0; + require e0.msg.value == 0; + require blockNumber < e0.block.number; + require futureBlock >= e0.block.number; + + uint nCheckpoints; + require nCheckpoints <= 4; + require invoke certoraNCheckpoints(e0) == nCheckpoints; + + require invoke certoraOrdered(e0); + + invoke certoraGetPriorVotes(e0, futureBlock); + assert lastReverted, "Must revert for future blocks"; + + uint votes_linear = invoke certoraScan(e0, blockNumber); + assert !lastReverted, "Linear scan should not revert for any valid block number"; + + uint votes_binary = invoke certoraGetPriorVotes(e0, blockNumber); + assert !lastReverted, "Query should not revert for any valid block number"; + + assert votes_linear == votes_binary, "Linear search and binary search disagree"; +} diff --git a/spec/certora/Governor/governor_alpha.cvl b/spec/certora/Governor/governor_alpha.cvl new file mode 100644 index 000000000..eb4992d6a --- /dev/null +++ b/spec/certora/Governor/governor_alpha.cvl @@ -0,0 +1,10 @@ +year(uint yearRes) +description "Returns correct year [yearRes=$yearRes]" +{ + // Free Variables + env e0; + + require yearRes == sinvoke year(e0); + + assert yearRes == 1791; +} diff --git a/spec/certora/Math/int.cvl b/spec/certora/Math/int.cvl index c662b94ca..05c8265d3 100644 --- a/spec/certora/Math/int.cvl +++ b/spec/certora/Math/int.cvl @@ -1,4 +1,15 @@ +basicDiv(uint a, uint b) { + require b > 0; + + uint c = a + 1; + uint d = a / b; + uint e = c / b; + + assert c >= a, "Failed to prove ${c} >= ${a}"; + assert e >= d, "Failed to prove: ${e} >= ${d}"; +} + atLeastEnough(uint256 chi, uint256 amount) { uint256 WAD = 1000000000000000000; uint256 RAY = 1000000000000000000000000000; diff --git a/spec/certora/contracts/CompCertora.sol b/spec/certora/contracts/CompCertora.sol new file mode 100644 index 000000000..1bd9c4eb4 --- /dev/null +++ b/spec/certora/contracts/CompCertora.sol @@ -0,0 +1,40 @@ +pragma solidity ^0.5.12; + +import "../../../contracts/Governance/Comp.sol"; + +contract CompCertora is Comp { + address account; + + constructor(address grantor) Comp(grantor) public {} + + function certoraOrdered() external returns (bool) { + bool ans = true; + for (uint i = 1; i < checkpoints[account].length; i++) { + ans = ans && checkpoints[account][i-1].fromBlock < checkpoints[account][i].fromBlock; + } + return ans; + } + + function certoraScan(uint blockNumber) external returns (uint) { + uint length = checkpoints[account].length; + + // find most recent checkpoint from before blockNumber + for (uint i = length; i != 0; i--) { + Checkpoint memory cp = checkpoints[account][i-1]; + if (cp.fromBlock <= blockNumber) { + return cp.votes; + } + } + + // blockNumber is from before first checkpoint (or list is empty) + return 0; + } + + function certoraNCheckpoints() external returns (uint) { + return checkpoints[account].length; + } + + function certoraGetPriorVotes(uint blockNumber) external returns (uint) { + return getPriorVotes(account, blockNumber); + } +} diff --git a/spec/certora/contracts/GovernorAlphaCertora.sol b/spec/certora/contracts/GovernorAlphaCertora.sol new file mode 100644 index 000000000..e9e2357af --- /dev/null +++ b/spec/certora/contracts/GovernorAlphaCertora.sol @@ -0,0 +1,7 @@ +pragma solidity ^0.5.12; + +import "../../../contracts/Governance/GovernorAlpha.sol"; + +contract GovernorAlphaCertora is GovernorAlpha { + +} diff --git a/spec/scenario/Comp/Comp.scen b/spec/scenario/Comp/Comp.scen new file mode 100644 index 000000000..b898eb5b3 --- /dev/null +++ b/spec/scenario/Comp/Comp.scen @@ -0,0 +1,274 @@ + +Test "Check Name" + Comp Deploy Geoff + Assert Equal (Comp Name) "Compound Governance Token" + +Test "Check Symbol" + Comp Deploy Geoff + Assert Equal (Comp Symbol) "COMP" + +Test "Check Decimals" + Comp Deploy Geoff + Assert Equal (Comp Decimals) 18 + +Test "Check Total Supply" + Comp Deploy Geoff + Assert Equal (Comp TotalSupply) 10000000e18 + +Test "Check account receives Total Supply after deploy and emits Transfer event" + Comp Deploy Geoff + Assert Equal (Comp TokenBalance Geoff) 10000000e18 + Assert Log Transfer (from (Address Zero)) (to (Address Geoff)) (amount "10000000000000000000000000") + +Test "Check approve sets correct approval and emits Approval event" + Comp Deploy Geoff + From Geoff (Comp Approve Jared 10) + Assert Equal (Comp Allowance Geoff Jared) 10 + Assert Log Approval (owner (Address Geoff)) (spender (Address Jared)) (amount "10") + +Test "Check transfer updates balances correctly, emits Transfer event, and returns true" + Comp Deploy Geoff + From Geoff (Comp Transfer Jared 10) + Assert Equal (Comp TokenBalance Geoff) 9999999999999999999999990 + Assert Equal (Comp TokenBalance Jared) 10 + Assert Log Transfer (from (Address Geoff)) (to (Address Jared)) (amount "10") + +Test "Check transferFrom with unlimited allowance updates balances correctly, emits Transfer event, and returns true" + Comp Deploy Geoff + From Geoff (Comp Approve Jared Max) + From Jared (Comp TransferFrom Geoff Jared 10) + Assert Equal (Comp TokenBalance Geoff) 9999999999999999999999990 + Assert Equal (Comp TokenBalance Jared) 10 + Assert Equal (Comp Allowance Geoff Jared) Max + Assert Log Transfer (from (Address Geoff)) (to (Address Jared)) (amount "10") + +Test "Check transferFrom with allowance updates balances correctly, emits Transfer event, and returns true" + Comp Deploy Geoff + From Geoff (Comp Approve Jared 10) + From Jared (Comp TransferFrom Geoff Jared 9) + Assert Equal (Comp TokenBalance Geoff) 9999999999999999999999991 + Assert Equal (Comp TokenBalance Jared) 9 + Assert Equal (Comp Allowance Geoff Jared) 1 + Assert Log Transfer (from (Address Geoff)) (to (Address Jared)) (amount "9") + Assert Log Approval (owner (Address Geoff)) (spender (Address Jared)) (amount "1") + +Test "Check transferFrom reverts with not sufficient allowance" + Comp Deploy Geoff + From Geoff (Comp Approve Jared 10) + AllowFailures + From Jared (Comp TransferFrom Geoff Jared 11) + Assert Revert "revert Comp::transferFrom: transfer amount exceeds spender allowance" + +Test "Check transfer reverts when transferring too much" + Comp Deploy Geoff + AllowFailures + From Geoff (Comp Transfer Jared 10000001e18) + Assert Revert "revert Comp::_transferTokens: transfer amount exceeds balance" + +Test "Check transfer reverts when transferring to address 0" + Comp Deploy Geoff + AllowFailures + From Geoff (Comp Transfer (Address Zero) 10000000e18) + Assert Revert "revert Comp::_transferTokens: cannot transfer to the zero address" + +Test "Delegate with zero balance doesn't change votes checkpoints" + Comp Deploy Geoff + Assert Equal (Comp VotesLength Geoff) 0 + From Jared (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 0 + Assert Log DelegateChanged (delegator (Address Jared)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + +Test "Delegate from address(0) to account with zero checkpoints" + Comp Deploy Geoff + From Geoff (Comp Transfer Jared 10) + Assert Equal (Comp VotesLength Geoff) 0 + From Jared (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 1 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Equal (Comp VotesLength Zero) 0 + Assert Log DelegateChanged (delegator (Address Jared)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "0") (newBalance "10") + +Test "Delegate from address(0) to account with existing checkpoints" + Comp Deploy Geoff + From Geoff (Comp Transfer Jared 10) + From Geoff (Comp Transfer Torrey 14) + Assert Equal (Comp VotesLength Geoff) 0 + From Jared (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 1 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Jared)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "0") (newBalance "10") + From Torrey (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 2 + Assert Equal (Comp GetCurrentVotes Geoff) 24 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Equal (Comp VotesLength Zero) 0 + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "10") (newBalance "24") + +Test "Delegate to address(0)" + Comp Deploy Geoff + From Geoff (Comp Transfer Jared 10) + From Geoff (Comp Transfer Torrey 14) + Assert Equal (Comp VotesLength Geoff) 0 + From Jared (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 1 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Jared)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "0") (newBalance "10") + From Torrey (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 2 + Assert Equal (Comp GetCurrentVotes Geoff) 24 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "10") (newBalance "24") + From Torrey (Comp Delegate Zero) + Assert Equal (Comp VotesLength Geoff) 3 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Geoff)) (toDelegate (Address Zero)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "24") (newBalance "10") + Assert Equal (Comp VotesLength Zero) 0 + +Test "Delegate from one account to another account with zero checkpoints" + Comp Deploy Geoff + From Geoff (Comp Transfer Jared 10) + From Geoff (Comp Transfer Torrey 14) + Assert Equal (Comp VotesLength Geoff) 0 + From Jared (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 1 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Jared)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "0") (newBalance "10") + From Torrey (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 2 + Assert Equal (Comp GetCurrentVotes Geoff) 24 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Equal (Comp VotesLength Coburn) 0 + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "10") (newBalance "24") + From Torrey (Comp Delegate Coburn) + Assert Equal (Comp VotesLength Coburn) 1 + Assert Equal (Comp GetCurrentVotes Coburn) 14 + Assert Equal (Comp GetCurrentVotesBlock Coburn) LastBlock + Assert Equal (Comp VotesLength Geoff) 3 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Geoff)) (toDelegate (Address Coburn)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "24") (newBalance "10") + Assert Log DelegateVotesChanged (delegate (Address Coburn)) (previousBalance "0") (newBalance "14") + +Test "Delegate from one account to another account with multiple checkpoints" + Comp Deploy Geoff + From Geoff (Comp Transfer Jared 10) + From Geoff (Comp Transfer Torrey 14) + From Geoff (Comp Transfer Coburn 2) + Assert Equal (Comp VotesLength Geoff) 0 + From Jared (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 1 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Jared)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "0") (newBalance "10") + From Torrey (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 2 + Assert Equal (Comp GetCurrentVotes Geoff) 24 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Equal (Comp VotesLength Coburn) 0 + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "10") (newBalance "24") + From Coburn (Comp Delegate Coburn) + Assert Equal (Comp VotesLength Coburn) 1 + Assert Equal (Comp GetCurrentVotes Coburn) 2 + Assert Equal (Comp GetCurrentVotesBlock Coburn) LastBlock + Assert Log DelegateChanged (delegator (Address Coburn)) (fromDelegate (Address Zero)) (toDelegate (Address Coburn)) + Assert Log DelegateVotesChanged (delegate (Address Coburn)) (previousBalance "0") (newBalance "2") + From Torrey (Comp Delegate Coburn) + Assert Equal (Comp VotesLength Coburn) 2 + Assert Equal (Comp GetCurrentVotes Coburn) 16 + Assert Equal (Comp GetCurrentVotesBlock Coburn) LastBlock + Assert Equal (Comp VotesLength Geoff) 3 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Geoff)) (toDelegate (Address Coburn)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "24") (newBalance "10") + Assert Log DelegateVotesChanged (delegate (Address Coburn)) (previousBalance "2") (newBalance "16") + +Test "Vote checkpoints don't change on transfer when to and from accounts delegate to same account" + Comp Deploy Geoff + From Geoff (Comp Transfer Jared 10) + From Geoff (Comp Transfer Torrey 14) + Assert Equal (Comp VotesLength Geoff) 0 + From Jared (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 1 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Jared)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "0") (newBalance "10") + From Torrey (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 2 + Assert Equal (Comp GetCurrentVotes Geoff) 24 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "10") (newBalance "24") + Invariant Static (Comp VotesLength Geoff) + Invariant Static (Comp GetCurrentVotes Geoff) + Invariant Static (Comp GetCurrentVotesBlock Geoff) + From Torrey (Comp Transfer Jared 14) + +Test "Only one checkpoint is added per block for multiple increased balance updates" + Comp Deploy Scenario Geoff + Assert Equal (Comp VotesLength Geoff) 0 + Assert Equal (Comp GetCurrentVotes Geoff) 0 + From Jared (Comp Delegate Geoff) + Assert Log DelegateChanged (delegator (Address Jared)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + From Torrey (Comp Delegate Geoff) + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + From Geoff (Comp TransferScenario (Jared Torrey) 10) + Assert Equal (Comp VotesLength Geoff) 1 + Assert Equal (Comp GetCurrentVotes Geoff) 20 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Equal (Comp VotesLength Zero) 0 + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "0") (newBalance "10") + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "10") (newBalance "20") + +Test "Only one checkpoint is added per block for multiple decreased balance updates" + Comp Deploy Scenario Geoff + From Geoff (Comp Transfer Jared 10) + From Geoff (Comp Transfer Torrey 10) + Assert Equal (Comp VotesLength Geoff) 0 + Assert Equal (Comp GetCurrentVotes Geoff) 0 + From Jared (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 1 + Assert Equal (Comp GetCurrentVotes Geoff) 10 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Jared)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "0") (newBalance "10") + From Torrey (Comp Delegate Geoff) + Assert Equal (Comp VotesLength Geoff) 2 + Assert Equal (Comp GetCurrentVotes Geoff) 20 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Log DelegateChanged (delegator (Address Torrey)) (fromDelegate (Address Zero)) (toDelegate (Address Geoff)) + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "10") (newBalance "20") + From Jared (Comp Approve Geoff 10) + From Torrey (Comp Approve Geoff 10) + From Geoff (Comp TransferFromScenario (Jared Torrey) 10) + Assert Equal (Comp VotesLength Geoff) 3 + Assert Equal (Comp GetCurrentVotes Geoff) 0 + Assert Equal (Comp GetCurrentVotesBlock Geoff) LastBlock + Assert Equal (Comp VotesLength Zero) 0 + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "20") (newBalance "10") + Assert Log DelegateVotesChanged (delegate (Address Geoff)) (previousBalance "10") (newBalance "0") + +Test "Check transfer reverts when block number exceeds 32 bits" + Comp Deploy Geoff + From Jared (Comp Delegate Geoff) + AllowFailures + SetBlockNumber 5000000000 + From Geoff (Comp Transfer Jared 10000000e18) + Assert Revert "revert Comp::_pushCheckpoint: block number exceeds 32 bits" diff --git a/spec/scenario/Governor/Cancel.scen b/spec/scenario/Governor/Cancel.scen new file mode 100644 index 000000000..1b99ba985 --- /dev/null +++ b/spec/scenario/Governor/Cancel.scen @@ -0,0 +1,99 @@ +Macro DeployGov + SetBlockNumber 1 + Counter Deploy CNT1 + Timelock Deploy Scenario Jared 604800 + Comp Deploy Bank + Governor Deploy Alpha LegitGov (Address Timelock) (Address Comp) Guardian + Timelock SetAdmin (Address LegitGov) + Enfranchise Root 400001e18 + Enfranchise Jared 200000e18 + +Macro Enfranchise user amount + From Bank (Comp Transfer user amount) + From user (Comp Delegate user) + +Macro GivenPendingProposal + DeployGov + MineBlock + MineBlock + Governor LegitGov Propose "Add and sub" [(Address CNT1) (Address CNT1)] [0 0] ["increment(uint256,uint256)" "decrement(uint256)"] [["7" "4"] ["2"]] + Assert Equal ("Pending") (Governor LegitGov Proposal LastProposal State) + +Macro GivenActiveProposal + GivenPendingProposal + MineBlock + MineBlock + Assert Equal ("Active") (Governor LegitGov Proposal LastProposal State) + +Macro GivenSucceededProposal + GivenActiveProposal + Governor LegitGov Proposal LastProposal Vote For + From Jared (Governor LegitGov Proposal LastProposal Vote For) + AdvanceBlocks 20000 + Assert Equal ("Succeeded") (Governor LegitGov Proposal LastProposal State) + +Macro GivenQueuedProposal + GivenSucceededProposal + FreezeTime 100 + Governor LegitGov Proposal LastProposal Queue + Assert Log ProposalQueued (id 1) + Assert Equal ("Queued") (Governor LegitGov Proposal LastProposal State) + +Macro GivenExecutedProposal + GivenQueuedProposal + FreezeTime 604901 + Governor LegitGov Proposal LastProposal Execute + Assert Equal ("Executed") (Governor LegitGov Proposal LastProposal State) + +Test "Cancel a Pending proposal" + GivenPendingProposal + From Root (Comp Delegate Geoff) + Assert Equal ("Pending") (Governor LegitGov Proposal LastProposal State) + --sending away delegates takes a block, so proposal will be "Active" by time it is cancelable + Governor LegitGov Proposal LastProposal Cancel + Assert Log ProposalCanceled (id 1) + Assert Equal ("Canceled") (Governor LegitGov Proposal LastProposal State) + +Test "Cancel an Active proposal" + GivenActiveProposal + From Root (Comp Delegate Geoff) + Governor LegitGov Proposal LastProposal Cancel + Assert Log ProposalCanceled (id 1) + Assert Equal ("Canceled") (Governor LegitGov Proposal LastProposal State) + +Test "Cancel a Succeded proposal" + GivenSucceededProposal + From Root (Comp Delegate Geoff) + Governor LegitGov Proposal LastProposal Cancel + Assert Log ProposalCanceled (id 1) + Assert Equal ("Canceled") (Governor LegitGov Proposal LastProposal State) + +Test "Cancel a queued proposal" + GivenQueuedProposal + Assert True (Timelock QueuedTransaction (Timelock TxHash (Address CNT1) 0 (Governor LegitGov Proposal LastProposal Eta) "increment(uint256,uint256)" 7 4)) + Assert True (Timelock QueuedTransaction (Timelock TxHash (Address CNT1) 0 (Governor LegitGov Proposal LastProposal Eta) "decrement(uint256)" 2)) + From Root (Comp Delegate Geoff) + Governor LegitGov Proposal LastProposal Cancel + Assert Log ProposalCanceled (id 1) + Assert False (Timelock QueuedTransaction (Timelock TxHash (Address CNT1) 0 (Governor LegitGov Proposal LastProposal Eta) "increment(uint256,uint256)" 7 4)) + Assert False (Timelock QueuedTransaction (Timelock TxHash (Address CNT1) 0 (Governor LegitGov Proposal LastProposal Eta) "decrement(uint256)" 2)) + Assert Equal ("Canceled") (Governor LegitGov Proposal LastProposal State) + +Test "Revert when trying to cancel an executed proposal" + GivenExecutedProposal + From Root (Comp Delegate Geoff) + AllowFailures + Governor LegitGov Proposal LastProposal Cancel + Assert Revert "revert GovernorAlpha::cancel: cannot cancel executed proposal" + +Test "Revert when canceling if proposer has votes" + GivenPendingProposal + AllowFailures + Governor LegitGov Proposal LastProposal Cancel + Assert Revert "revert GovernorAlpha::cancel: proposer above threshold" + +Test "Guardian can cancel any proposal" + GivenActiveProposal + From Guardian (Governor LegitGov Proposal LastProposal Cancel) + Assert Log ProposalCanceled (id 1) + Assert Equal (Governor LegitGov Proposal LastProposal State) "Canceled" diff --git a/spec/scenario/Governor/Execute.scen b/spec/scenario/Governor/Execute.scen new file mode 100644 index 000000000..18ca8e961 --- /dev/null +++ b/spec/scenario/Governor/Execute.scen @@ -0,0 +1,106 @@ +Macro DeployGov + SetBlockNumber 1 + IncreaseTime 100 + Counter Deploy CNT1 + Timelock Deploy Jared 604800 + Comp Deploy Bank + Enfranchise Root 400001e18 + Enfranchise Jared 200001e18 + Governor Deploy Alpha LegitGov (Address Timelock) (Address Comp) Guardian + Timelock SetAdmin (Address LegitGov) + +Macro Enfranchise user amount + From Bank (Comp Transfer user amount) + From user (Comp Delegate user) + +Macro SucceedProposal + MineBlock + Governor LegitGov Proposal LastProposal Vote For + From Jared (Governor LegitGov Proposal LastProposal Vote For) + AdvanceBlocks 20000 + Assert Equal ("Succeeded") (Governor LegitGov Proposal LastProposal State) + +Macro GivenSucceededProposal + DeployGov + Governor LegitGov Propose "Add 2" [(Address CNT1)] [0] ["increment(uint256)"] [["2"]] + SucceedProposal + +Macro GivenQueuedProposal + GivenSucceededProposal + Governor LegitGov Proposal LastProposal Queue + +Test "Execute a simple queued proposal with value" + GivenQueuedProposal + Assert Equal ("Queued") (Governor LegitGov Proposal LastProposal State) + IncreaseTime 605000 + Governor LegitGov Proposal LastProposal Execute + Assert Equal ("Executed") (Governor LegitGov Proposal LastProposal State) + Assert Log ProposalExecuted (id 1) (eta (Governor LegitGov Proposal LastProposal Eta)) + Assert Equal (Counter CNT1 Count) 2 + +Test "Execute a complex queued proposal with value" + DeployGov + Governor LegitGov Propose "Add and sub" [(Address CNT1) (Address CNT1)] [1 1] ["increment(uint256,uint256)" "decrement(uint256)"] [["7" "4"] ["2"]] + SucceedProposal + Governor LegitGov Proposal LastProposal Queue + IncreaseTime 604910 + Assert Equal (Counter CNT1 Count) 0 + Assert Equal (Counter CNT1 Count2) 0 + Trx Value 2 (Governor LegitGov Proposal LastProposal Execute) + Assert Equal ("Executed") (Governor LegitGov Proposal LastProposal State) + Assert Equal (Counter CNT1 Count) 5 + Assert Equal (Counter CNT1 Count2) 4 + +Test "Revert when trying to execute a succeeded but unqueued proposal" + DeployGov + Governor LegitGov Propose "Add 5" [(Address CNT1)] [0] ["increment(uint256)"] [["2"]] + SucceedProposal + AllowFailures + Governor LegitGov Proposal LastProposal Execute + Assert Revert "revert GovernorAlpha::execute: proposal can only be executed if it is queued" + +Test "Revert when executing a proposal that reverts" + DeployGov + Governor LegitGov Propose "Add 1 and revert" [(Address CNT1) (Address CNT1)] [0 0] ["increment(uint256)" "doRevert()"] [["1"] []] + SucceedProposal + Governor LegitGov Proposal LastProposal Queue + IncreaseTime 604905 + AllowFailures + Governor LegitGov Proposal LastProposal Execute + Assert Revert "revert Timelock::executeTransaction: Transaction execution reverted." + +Test "Repeated proposal items" + DeployGov + Governor LegitGov Propose "Add 1 and Add 1" [(Address CNT1) (Address CNT1)] [0 0] ["increment(uint256)" "increment(uint256)"] [["1"] ["1"]] + SucceedProposal + Governor LegitGov Proposal LastProposal Queue + IncreaseTime 604905 + AllowFailures + Governor LegitGov Proposal LastProposal Execute + Assert Revert "revert Timelock::executeTransaction: Transaction hasn't been queued." + +Test "Revert when executing an expired proposal" + GivenQueuedProposal + -- eta + grace period (2 weeks) + 1 + -- 604900 + 1209600 + 1 = + IncreaseTime 1814505 + Assert Equal ("Expired") (Governor LegitGov Proposal LastProposal State) + AllowFailures + Governor LegitGov Proposal LastProposal Execute + Assert Revert "revert GovernorAlpha::execute: proposal can only be executed if it is queued" + +Test "Assert execution order" + DeployGov + Governor LegitGov Propose "Increment and require not zero" [(Address CNT1) (Address CNT1)] [0 0] ["increment(uint256)" "notZero()"] [["1"] []] + SucceedProposal + Governor LegitGov Proposal LastProposal Queue + IncreaseTime 604905 + Governor LegitGov Proposal LastProposal Execute + +Test "Cannot execute cancelled proposal" + GivenQueuedProposal + IncreaseTime 604905 + From Guardian (Governor LegitGov Proposal LastProposal Cancel) + AllowFailures + Governor LegitGov Proposal LastProposal Execute + Assert Revert "revert GovernorAlpha::execute: proposal can only be executed if it is queued" diff --git a/spec/scenario/Governor/Guardian.scen b/spec/scenario/Governor/Guardian.scen new file mode 100644 index 000000000..f3b840fd8 --- /dev/null +++ b/spec/scenario/Governor/Guardian.scen @@ -0,0 +1,68 @@ +Macro GivenGov + Counter Deploy + SetTime 10 + Timelock Deploy Jared 604800 + Comp Deploy Bank + Governor Deploy Alpha LegitGov (Address Timelock) (Address Comp) Guardian + Timelock SetAdmin (Address LegitGov) + +Test "Guardian can switch to a new governor" + GivenGov + From Guardian (Governor LegitGov Guardian QueueSetTimelockPendingAdmin (Address Geoff) 604900) + SetTime 604901 + From Guardian (Governor LegitGov Guardian ExecuteSetTimelockPendingAdmin (Address Geoff) 604900) + From Geoff (Timelock AcceptAdmin) + Assert Equal (Timelock Admin) (Address Geoff) + +Test "Only guardian can queue" + GivenGov + AllowFailures + Governor LegitGov Guardian QueueSetTimelockPendingAdmin Geoff 604900 + Assert Revert "revert GovernorAlpha::__queueSetTimelockPendingAdmin: sender must be gov guardian" + +Test "Only guardian can execute" + GivenGov + From Guardian (Governor LegitGov Guardian QueueSetTimelockPendingAdmin Geoff 604900) + AllowFailures + IncreaseTime 604901 + Governor LegitGov Guardian ExecuteSetTimelockPendingAdmin Geoff 604900 + Assert Revert "revert GovernorAlpha::__executeSetTimelockPendingAdmin: sender must be gov guardian" + +Test "Guardian can abdicate" + GivenGov + Assert Equal (Governor LegitGov Guardian) (Address Guardian) + From Guardian (Governor LegitGov Guardian Abdicate) + Assert Equal (Governor LegitGov Guardian) (Address Zero) + +Test "Only guardian can abdicate" + GivenGov + AllowFailures + Governor LegitGov Guardian Abdicate + Assert Revert "revert GovernorAlpha::__abdicate: sender must be gov guardian" + +Test "Guardian can accept admin" + Timelock Deploy Jared 604800 + Comp Deploy Bank + Governor Deploy Alpha LegitGov (Address Timelock) (Address Comp) Guardian + From Jared (Timelock QueueTransaction (Timelock Address) 0 604900 "setPendingAdmin(address)" (Governor LegitGov Address)) + IncreaseTime 604901 + From Jared (Timelock ExecuteTransaction (Timelock Address) 0 604900 "setPendingAdmin(address)" (Governor LegitGov Address)) + Assert Equal (Timelock Admin) (Address Jared) + Assert Equal (Timelock PendingAdmin) (Governor LegitGov Address) + From Guardian (Governor LegitGov Guardian AcceptAdmin) + Assert Equal (Timelock Admin) (Governor LegitGov Address) + Assert Equal (Timelock PendingAdmin) (Address Zero) + +Test "Only guardian can accept admin" + SetTime 10 + Timelock Deploy Jared 604800 + Comp Deploy Bank + Governor Deploy Alpha LegitGov (Address Timelock) (Address Comp) Guardian + From Jared (Timelock QueueTransaction (Timelock Address) 0 604900 "setPendingAdmin(address)" (Governor LegitGov Address)) + IncreaseTime 604901 + From Jared (Timelock ExecuteTransaction (Timelock Address) 0 604900 "setPendingAdmin(address)" (Governor LegitGov Address)) + Assert Equal (Timelock Admin) (Address Jared) + Assert Equal (Timelock PendingAdmin) (Governor LegitGov Address) + AllowFailures + Governor LegitGov Guardian AcceptAdmin + Assert Revert "revert GovernorAlpha::__acceptAdmin: sender must be gov guardian" diff --git a/spec/scenario/Governor/Propose.scen b/spec/scenario/Governor/Propose.scen new file mode 100644 index 000000000..490b927d9 --- /dev/null +++ b/spec/scenario/Governor/Propose.scen @@ -0,0 +1,91 @@ + +Macro DeployGov + Comp Deploy Bank + Timelock Deploy Jared 604800 + Governor Deploy Alpha LegitGov (Address Timelock) (Address Comp) Guardian + Timelock SetAdmin (Address LegitGov) + Enfranchise Root 400001e18 + +Macro Enfranchise user amount + From Bank (Comp Transfer user amount) + From user (Comp Delegate user) + +Test "Propose 💍 [1 Action]" + DeployGov + Counter Deploy + Governor LegitGov Propose "Add 5" [(Address Counter)] [1] ["increment(uint256)"] [["5"]] + Assert Log NewProposal (description "Add 5") + Assert Equal (Governor LegitGov Proposal LastProposal Id) 1 + Assert Equal (Governor LegitGov Proposal LastProposal Proposer) (Address Root) + Assert Equal (Governor LegitGov Proposal LastProposal StartBlock) 9 + Assert Equal (Governor LegitGov Proposal LastProposal EndBlock) 17289 + Assert Equal (Governor LegitGov Proposal LastProposal ForVotes) 0 + Assert Equal (Governor LegitGov Proposal LastProposal AgainstVotes) 0 + Assert Equal (Governor LegitGov Proposal LastProposal Eta) 0 + Assert Equal (Governor LegitGov Proposal LastProposal Targets) [(Address Counter)] + Assert Equal (Governor LegitGov Proposal LastProposal Values) [1] + Assert Equal (Governor LegitGov Proposal LastProposal Signatures) ["increment(uint256)"] + Assert Equal (Governor LegitGov Proposal LastProposal Calldatas) ["0x0000000000000000000000000000000000000000000000000000000000000005"] + Assert False (Governor LegitGov Proposal LastProposal HasVoted Geoff) + +Test "Propose 💍💍 [2 Actions]" + DeployGov + Counter Deploy CounterA + Counter Deploy CounterB + Governor LegitGov Propose "Add 5, Sub 3" [(Address CounterA) (Address CounterB)] [1 2] ["increment(uint256)" "decrement(uint256)"] [["5"] ["3"]] + Assert Log NewProposal (description "Add 5, Sub 3") + Assert Equal (Governor LegitGov Proposal LastProposal Targets) [(Address CounterA) (Address CounterB)] + Assert Equal (Governor LegitGov Proposal LastProposal Values) [1 2] + Assert Equal (Governor LegitGov Proposal LastProposal Signatures) ["increment(uint256)" "decrement(uint256)"] + Assert Equal (Governor LegitGov Proposal LastProposal Calldatas) ["0x0000000000000000000000000000000000000000000000000000000000000005" "0x0000000000000000000000000000000000000000000000000000000000000003"] + +Test "Propose fails when insufficient sender votes" + DeployGov + Counter Deploy + AllowFailures + From Geoff (Governor LegitGov Propose "Add 5" [(Address Counter)] [1] ["increment(uint256)"] [["5"]]) + Assert Revert "revert GovernorAlpha::propose: proposer votes below proposal threshold" + +Test "Propose fails when no actions given" + DeployGov + Counter Deploy + AllowFailures + Governor LegitGov Propose "Add 5" [] [] [] [[]] + Assert Revert "revert GovernorAlpha::propose: must provide actions" + +Test "Propose fails when actions mismatch length" + DeployGov + Counter Deploy + AllowFailures + Governor LegitGov Propose "Add 5" [(Address Counter)] [1 2] ["increment(uint256)"] [["5"]] + Assert Revert "revert GovernorAlpha::propose: proposal function information arity mismatch" + +Test "Propose fails when proposer has active proposal" + DeployGov + Counter Deploy + Governor LegitGov Propose "Add 5" [(Address Counter)] [1] ["increment(uint256)"] [["5"]] + AllowFailures + Governor LegitGov Propose "Add 5" [(Address Counter)] [1] ["increment(uint256)"] [["5"]] + Assert Revert "revert GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal" + +Test "Can re-propose after vote completes" + DeployGov + Counter Deploy + Governor LegitGov Propose "Add 5" [(Address Counter)] [1] ["increment(uint256)"] [["5"]] + Assert Equal (Governor LegitGov Proposal (ActiveProposal Root) Id) 1 + AdvanceBlocks 20000 + Governor LegitGov Propose "Add 7" [(Address Counter)] [1] ["increment(uint256)"] [["7"]] + Assert Equal (Governor LegitGov Proposal (ActiveProposal Root) Id) 2 + +Test "Can re-propose after vote is canceled" + DeployGov + Counter Deploy + Governor LegitGov Propose "Add 5" [(Address Counter)] [1] ["increment(uint256)"] [["5"]] + Assert Equal (Governor LegitGov Proposal (ActiveProposal Root) Id) 1 + From Root (Comp Delegate Geoff) + Governor LegitGov Proposal (ActiveProposal Root) Cancel + From Root (Comp Delegate Root) + Governor LegitGov Propose "Add 7" [(Address Counter)] [1] ["increment(uint256)"] [["7"]] + Assert Equal (Governor LegitGov Proposal (ActiveProposal Root) Id) 2 + + diff --git a/spec/scenario/Governor/Queue.scen b/spec/scenario/Governor/Queue.scen new file mode 100644 index 000000000..eb1a41a49 --- /dev/null +++ b/spec/scenario/Governor/Queue.scen @@ -0,0 +1,126 @@ +Macro DeployGov + Counter Deploy CNT1 + Timelock Deploy Jared 604800 + Comp Deploy Bank + Governor Deploy Alpha LegitGov (Address Timelock) (Address Comp) Guardian + Timelock SetAdmin (Address LegitGov) + Enfranchise Root 600001e18 + MineBlock + +Macro Enfranchise user amount + From Bank (Comp Transfer user amount) + From user (Comp Delegate user) + MineBlock + +Macro QueueLastProposal + --anyone should be able to queue, set time to 100 for predictable eta's + SetTime 100 + From Torrey (Governor LegitGov Proposal LastProposal Queue) + +Macro GivenPendingProposal + DeployGov + MineBlock + Governor LegitGov Propose "Add and sub" [(Address CNT1) (Address CNT1)] [0 0] ["increment(uint256,uint256)" "decrement(uint256)"] [["7" "4"] ["2"]] + Assert Equal ("Pending") (Governor LegitGov Proposal LastProposal State) + +Macro GivenActiveProposal + GivenPendingProposal + MineBlock + MineBlock + Assert Equal ("Active") (Governor LegitGov Proposal LastProposal State) + +Macro GivenSucceededProposal + GivenActiveProposal + SucceedProposal + +Macro SucceedProposal + Governor LegitGov Proposal LastProposal Vote For + AdvanceBlocks 20000 + Assert Equal ("Succeeded") (Governor LegitGov Proposal LastProposal State) + +Test "Queue simple action" + DeployGov + Enfranchise Geoff 100 + Governor LegitGov Propose "Add 5" [(Address CNT1)] [1] ["increment(uint256)"] [["2"]] + MineBlock + SucceedProposal + --anyone should be able to queue + From Torrey (Governor LegitGov Proposal LastProposal Queue) + Assert True (Timelock QueuedTransaction (Timelock TxHash (Address CNT1) 1 (Governor LegitGov Proposal LastProposal Eta) "increment(uint256)" 2)) + Assert Log ProposalQueued (id 1) + Assert Log ProposalQueued (eta (Governor LegitGov Proposal LastProposal Eta)) + Assert True (Timelock QueuedTransaction (Timelock TxHash (Address CNT1) 1 (Governor LegitGov Proposal LastProposal Eta) "increment(uint256)" 2)) + +Test "Queue 2 actions with multiple params" + GivenActiveProposal + Governor LegitGov Proposal LastProposal Vote For + AdvanceBlocks 20000 + QueueLastProposal + Assert Log ProposalQueued (id 1) + Assert Log ProposalQueued (eta (Governor LegitGov Proposal LastProposal Eta)) + Assert True (Timelock QueuedTransaction (Timelock TxHash (Address CNT1) 0 (Governor LegitGov Proposal LastProposal Eta) "increment(uint256,uint256)" 7 4)) + Assert True (Timelock QueuedTransaction (Timelock TxHash (Address CNT1) 0 (Governor LegitGov Proposal LastProposal Eta) "decrement(uint256)" 2)) + +Test "Revert queue when proposal Id is Invalid" + DeployGov + AllowFailures + Governor LegitGov Proposal LastProposal Queue + Assert Revert "revert GovernorAlpha::state: invalid proposal id" + +Test "Revert queue when proposal is Pending" + DeployGov + Governor LegitGov Propose "Add 5" [(Address CNT1)] [1] ["increment(uint256)"] [["2"]] + Assert Equal ("Pending") (Governor LegitGov Proposal LastProposal State) + AllowFailures + Governor LegitGov Proposal LastProposal Queue + Assert Revert "revert GovernorAlpha::queue: proposal can only be queued if it is succeeded" + +Test "Revert queue proposal is Active" + GivenActiveProposal + AllowFailures + Governor LegitGov Proposal LastProposal Queue + Assert Revert "revert GovernorAlpha::queue: proposal can only be queued if it is succeeded" + +Test "Revert queue when proposal is Defeated" + GivenActiveProposal + Governor LegitGov Proposal LastProposal Vote Against + AdvanceBlocks 20000 + AllowFailures + Assert Equal ("Defeated") (Governor LegitGov Proposal LastProposal State) + Governor LegitGov Proposal LastProposal Queue + Assert Revert "revert GovernorAlpha::queue: proposal can only be queued if it is succeeded" + +Test "Revert queue when proposal is Queued" + GivenSucceededProposal + Governor LegitGov Proposal LastProposal Queue + Assert Equal ("Queued") (Governor LegitGov Proposal LastProposal State) + AllowFailures + Governor LegitGov Proposal LastProposal Queue + Assert Revert "revert GovernorAlpha::queue: proposal can only be queued if it is succeeded" + +Test "Revert when queuing an already executed proposal" + GivenSucceededProposal + QueueLastProposal + SetTime 604902 + Governor LegitGov Proposal LastProposal Execute + AllowFailures + Governor LegitGov Proposal LastProposal Queue + Assert Revert "revert GovernorAlpha::queue: proposal can only be queued if it is succeeded" + +Test "Revert when queuing on invalid Timelock" + Comp Deploy Bank + Enfranchise Root 600001e18 + Counter Deploy CNT1 + Governor Deploy Alpha LegitGov (Address Zero) (Address Comp) Guardian + Governor LegitGov Propose "Add 5" [(Address CNT1)] [1] ["increment(uint256)"] [["2"]] + MineBlock + Governor LegitGov Proposal LastProposal Vote For + AllowFailures + Governor LegitGov Proposal LastProposal Queue + Assert Revert "revert" + +--TODO: + +--Test "Dont queue when cancelled" +--deploy => propose => cancel +--Assert revert on queue diff --git a/spec/scenario/Governor/Upgrade.scen b/spec/scenario/Governor/Upgrade.scen new file mode 100644 index 000000000..9cbb51913 --- /dev/null +++ b/spec/scenario/Governor/Upgrade.scen @@ -0,0 +1,63 @@ + +Macro DeployGov + SetBlockNumber 1 + SetTime 10 + Counter Deploy CNT1 + Comp Deploy Bank + Enfranchise Root 600001e18 + Timelock Deploy Jared 604800 + Governor Deploy Alpha Alpha (Address Timelock) (Address Comp) Guardian + Timelock SetAdmin (Address Alpha) + Assert Equal (Timelock Admin) (Address Alpha) + +Macro SucceedQueueExecuteLastProposal gov + MineBlock + Governor gov Proposal LastProposal Vote For + AdvanceBlocks 20000 + MineBlock + Enfranchise Root 600001e18 + Assert Equal ("Succeeded") (Governor gov Proposal LastProposal State) + Governor gov Proposal LastProposal Queue + Assert Equal ("Queued") (Governor gov Proposal LastProposal State) + IncreaseTime 604905 + Governor gov Proposal LastProposal Execute + Assert Equal ("Executed") (Governor gov Proposal LastProposal State) + +Macro Enfranchise user amount + From Bank (Comp Transfer user amount) + From user (Comp Delegate user) + +Test "Governor can switch to a new governor" + DeployGov + Governor Deploy Alpha Beta (Address Timelock) (Address Comp) Guardian + Governor Alpha Propose "Upgrade Governor" [(Address Timelock)] [0] ["setPendingAdmin(address)"] [[(Address Beta)]] + SucceedQueueExecuteLastProposal Alpha + Assert Equal (Timelock PendingAdmin) (Address Beta) + From Guardian (Governor Beta Guardian AcceptAdmin) + Assert Equal (Timelock Admin) (Address Beta) + Assert Equal (Timelock PendingAdmin) (Address Zero) + Governor Beta Propose "Add 2" [(Address CNT1)] [0] ["increment(uint256)"] [["2"]] + SucceedQueueExecuteLastProposal Beta + Assert Log ProposalExecuted (id 1) (eta (Governor Beta Proposal LastProposal Eta)) + Assert Equal (Counter CNT1 Count) 2 + +Test "Guardian can switch to a new governor" + DeployGov + Governor Deploy Alpha Beta (Address Timelock) (Address Comp) Guardian + From Guardian (Governor Alpha Guardian QueueSetTimelockPendingAdmin (Address Beta) 604902) + IncreaseTime 604905 + From Guardian (Governor Alpha Guardian ExecuteSetTimelockPendingAdmin (Address Beta) 604902) + From Guardian (Governor Beta Guardian AcceptAdmin) + Assert Equal (Timelock Admin) (Address Beta) + Assert Equal (Timelock PendingAdmin) (Address Zero) + Governor Beta Propose "Add 2" [(Address CNT1)] [0] ["increment(uint256)"] [["2"]] + IncreaseTime 604901 + From Root (Governor Beta Proposal LastProposal Vote For) + AdvanceBlocks 20000 + Governor Beta Proposal LastProposal Queue + Assert Equal ("Queued") (Governor Beta Proposal LastProposal State) + IncreaseTime 604901 + Governor Beta Proposal LastProposal Execute + Assert Equal ("Executed") (Governor Beta Proposal LastProposal State) + Assert Log ProposalExecuted (id 1) (eta (Governor Beta Proposal LastProposal Eta)) + Assert Equal (Counter CNT1 Count) 2 diff --git a/spec/scenario/Governor/Vote.scen b/spec/scenario/Governor/Vote.scen new file mode 100644 index 000000000..c5291d720 --- /dev/null +++ b/spec/scenario/Governor/Vote.scen @@ -0,0 +1,72 @@ + +Macro GivenProposal + Counter Deploy + Comp Deploy Bank + Timelock Deploy Jared 604800 + Governor Deploy Alpha LegitGov (Address Timelock) (Address Comp) Guardian + Timelock SetAdmin (Address LegitGov) + Enfranchise Root 400001e18 + Enfranchise Geoff 100 + Governor LegitGov Propose "Add 5" [(Address Counter)] [1] ["increment(uint256)"] [["0x5"]] + MineBlock + +Macro Enfranchise user amount + From Bank (Comp Transfer user amount) + From user (Comp Delegate user) + +Test "Successfully Cast For Vote" + GivenProposal + From Geoff (Governor LegitGov Proposal LastProposal Vote For) + Assert Log VoteCast (support true) (votes 100) -- TODO: More fields + Assert Equal (Governor LegitGov Proposal LastProposal ForVotes) 100 + Assert Equal (Governor LegitGov Proposal LastProposal AgainstVotes) 0 + Assert True (Governor LegitGov Proposal LastProposal HasVoted Geoff) + +Test "Successfully Cast Against Vote" + GivenProposal + From Geoff (Governor LegitGov Proposal LastProposal Vote Against) + Assert Log VoteCast (support false) (votes 100) + Assert Equal (Governor LegitGov Proposal LastProposal ForVotes) 0 + Assert Equal (Governor LegitGov Proposal LastProposal AgainstVotes) 100 + Assert True (Governor LegitGov Proposal LastProposal HasVoted Geoff) + +Test "Successfully Cast Zero Vote" + GivenProposal + From Torrey (Governor LegitGov Proposal LastProposal Vote For) + Assert Log VoteCast (support true) (votes 0) + Assert Equal (Governor LegitGov Proposal LastProposal ForVotes) 0 + Assert Equal (Governor LegitGov Proposal LastProposal AgainstVotes) 0 + Assert True (Governor LegitGov Proposal LastProposal HasVoted Torrey) + +Test "Fail to vote twice" + GivenProposal + Governor LegitGov Proposal LastProposal Vote For + AllowFailures + Governor LegitGov Proposal LastProposal Vote For + Assert Revert "revert GovernorAlpha::castVote: voter already voted" + Governor LegitGov Proposal LastProposal Vote Against + Assert Revert "revert GovernorAlpha::castVote: voter already voted" + Assert Equal (Governor LegitGov Proposal LastProposal ForVotes) 400001e18 + Assert Equal (Governor LegitGov Proposal LastProposal AgainstVotes) 0 + Assert False (Governor LegitGov Proposal LastProposal HasVoted Geoff) + +Test "Cannot vote before vote starts" + GivenProposal + AllowFailures + SetBlockNumber 7 + Governor LegitGov Proposal LastProposal Vote For + Assert Revert "revert GovernorAlpha::castVote: voting is closed" + +Test "Cannot vote after vote ends" + GivenProposal + AllowFailures + AdvanceBlocks 20000 + Governor LegitGov Proposal LastProposal Vote For + Assert Revert "revert GovernorAlpha::castVote: voting is closed" + +Test "Cannot vote on cancelled vote" + GivenProposal + From Guardian (Governor LegitGov Proposal LastProposal Cancel) + AllowFailures + Governor LegitGov Proposal LastProposal Vote For + Assert Revert "revert GovernorAlpha::castVote: voting is closed" diff --git a/spec/scenario/Timelock.scen b/spec/scenario/Timelock.scen index b03f07a9f..08b439c31 100644 --- a/spec/scenario/Timelock.scen +++ b/spec/scenario/Timelock.scen @@ -18,7 +18,7 @@ Test "Reverts if calling acceptAdmin while not being pendingAdmin" Assert Revert "revert Timelock::acceptAdmin: Call must come from pendingAdmin." Test "Queuing and execute a transaction for setDelay" - -- The default blockTimestamp is 100 + FreezeTime 90 -- Admin:Geoff Delay:1 week Timelock Deploy Geoff 604800 Assert Equal (Timelock Delay) 604800 @@ -27,13 +27,13 @@ Test "Queuing and execute a transaction for setDelay" From Geoff (Timelock QueueTransaction (Timelock Address) 0 604900 "setDelay(uint256)" "1209600") Assert True (Timelock QueuedTransaction (Timelock TxHash (Timelock Address) 0 604900 "setDelay(uint256)" "1209600")) -- Now execute after delay time - Timelock FastForward 604801 + FreezeTime 604900 From Geoff (Timelock ExecuteTransaction (Timelock Address) 0 604900 "setDelay(uint256)" "1209600") Assert False (Timelock QueuedTransaction (Timelock TxHash (Timelock Address) 0 604900 "setDelay(uint256)" "1209600")) Assert Equal (Timelock Delay) 1209600 Test "Queuing and execute a transaction for setPendingAdmin" - -- The default blockTimestamp is 100 + FreezeTime 90 -- Admin:Geoff Delay:1 week Timelock Deploy Geoff 604800 Assert Equal (Timelock Admin) (User Geoff Address) @@ -43,7 +43,7 @@ Test "Queuing and execute a transaction for setPendingAdmin" From Geoff (Timelock QueueTransaction (Timelock Address) 0 604900 "setPendingAdmin(address)" (User Jared Address)) Assert True (Timelock QueuedTransaction (Timelock TxHash (Timelock Address) 0 604900 "setPendingAdmin(address)" (User Jared Address))) -- Now execute after delay time - Timelock FastForward 604801 + FreezeTime 604900 From Geoff (Timelock ExecuteTransaction (Timelock Address) 0 604900 "setPendingAdmin(address)" (User Jared Address)) Assert False (Timelock QueuedTransaction (Timelock TxHash (Timelock Address) 0 604900 "setPendingAdmin(address)" (User Jared Address))) Assert Equal (Timelock PendingAdmin) (User Jared Address) @@ -52,7 +52,7 @@ Test "Queuing and execute a transaction for setPendingAdmin" Assert Equal (Timelock PendingAdmin) (Address Zero) Test "Accept cToken admin from Timelock" - -- The default blockTimestamp is 100 + FreezeTime 90 -- Admin:Geoff Delay:1 week Timelock Deploy Geoff 604800 Assert Equal (Timelock Admin) (User Geoff Address) @@ -62,19 +62,18 @@ Test "Accept cToken admin from Timelock" Assert Equal (CToken cZRX PendingAdmin) (Address Zero) From Root (CToken cZRX SetPendingAdmin (Timelock Address)) Assert Equal (CToken cZRX PendingAdmin) (Timelock Address) - -- eta = 1 week (604800) + blockTimestamp (100) = 604900 + -- eta = 1 week (604800) + blockTimestamp (~100) = 604900 Assert False (Timelock QueuedTransaction (Timelock TxHash (CToken cZRX Address) 0 604900 "_acceptAdmin()" "")) From Geoff (Timelock QueueTransaction (CToken cZRX Address) 0 604900 "_acceptAdmin()" "") Assert True (Timelock QueuedTransaction (Timelock TxHash (CToken cZRX Address) 0 604900 "_acceptAdmin()" "")) -- Now execute after delay time - Timelock FastForward 604801 + FreezeTime 604900 From Geoff (Timelock ExecuteTransaction (CToken cZRX Address) 0 604900 "_acceptAdmin()" "") Assert False (Timelock QueuedTransaction (Timelock TxHash (CToken cZRX Address) 0 604900 "_acceptAdmin()" "")) Assert Equal (CToken cZRX Admin) (Timelock Address) Assert Equal (CToken cZRX PendingAdmin) (Address Zero) Test "Accept unitroller admin from Timelock" - -- The default blockTimestamp is 100 -- Admin:Geoff Delay:1 week Timelock Deploy Geoff 604800 Assert Equal (Timelock Admin) (User Geoff Address) @@ -85,10 +84,11 @@ Test "Accept unitroller admin from Timelock" Assert Equal (Unitroller PendingAdmin) (Timelock Address) -- eta = 1 week (604800) + blockTimestamp (100) = 604900 Assert False (Timelock QueuedTransaction (Timelock TxHash (Unitroller Address) 0 604900 "_acceptAdmin()" "")) + FreezeTime 90 From Geoff (Timelock QueueTransaction (Unitroller Address) 0 604900 "_acceptAdmin()" "") Assert True (Timelock QueuedTransaction (Timelock TxHash (Unitroller Address) 0 604900 "_acceptAdmin()" "")) -- Now execute after delay time - Timelock FastForward 604801 + FreezeTime 604900 From Geoff (Timelock ExecuteTransaction (Unitroller Address) 0 604900 "_acceptAdmin()" "") Assert False (Timelock QueuedTransaction (Timelock TxHash (Unitroller Address) 0 604900 "_acceptAdmin()" "")) Assert Equal (Unitroller Admin) (Timelock Address) @@ -120,10 +120,11 @@ Test "Reduce reserves for CErc20 from Timelock and send reserves to external add -- Set Timelock as admin From Root (CToken cZRX SetPendingAdmin (Timelock Address)) -- Queue Transactions + FreezeTime 90 From Jared (Timelock QueueTransaction (CToken cZRX Address) 0 604900 "_acceptAdmin()" "") From Jared (Timelock QueueTransaction (CToken cZRX Address) 0 604900 "_reduceReserves(uint256)" "1000000000000000000") From Jared (Timelock QueueTransaction (Erc20 ZRX Address) 0 604900 "transfer(address,uint256)" "0x0000000000000000000000000000000000000001" "1000000000000000000") - Timelock FastForward 604802 + FreezeTime 604900 From Jared (Timelock ExecuteTransaction (CToken cZRX Address) 0 604900 "_acceptAdmin()" "") -- Now, let's pull out all of our reserves (1e18) From Jared (Timelock ExecuteTransaction (CToken cZRX Address) 0 604900 "_reduceReserves(uint256)" "1000000000000000000") @@ -152,6 +153,7 @@ Test "Reduce reserves for CEther from Timelock and send reserves to external add -- The reserves should get 20% of this, or 1e18, and the rest -- is due pro-rata to all holders. We just have one, so -- let's check that account is given correct new balance. + FreezeTime 90 Timelock Deploy Jared 604800 Assert Equal (EtherBalance cETH) (Exactly 55e18) Assert Equal (EtherBalance (Timelock Address)) (Exactly 0e18) @@ -166,7 +168,7 @@ Test "Reduce reserves for CEther from Timelock and send reserves to external add From Jared (Timelock QueueTransaction (CToken cETH Address) 0 604900 "_acceptAdmin()" "") From Jared (Timelock QueueTransaction (CToken cETH Address) 0 604900 "_reduceReserves(uint256)" "1000000000000000000") From Jared (Timelock QueueTransaction Jared 1000000000000000000 604900 "" "") - Timelock FastForward 604802 + FreezeTime 604900 From Jared (Timelock ExecuteTransaction (CToken cETH Address) 0 604900 "_acceptAdmin()" "") -- Now, let's pull out all of our reserves (1e18) From Jared (Timelock ExecuteTransaction (CToken cETH Address) 0 604900 "_reduceReserves(uint256)" "1000000000000000000") @@ -191,6 +193,7 @@ Test "Set Pending Comptroller implemention on Unitroller from Timelock" ComptrollerImpl ScenComptrollerG1 BecomeG1 (PriceOracleProxy Address) 0.1 20 Assert Equal (Unitroller PendingImplementation) (Address Zero) Assert Equal (Unitroller Implementation) (Address ScenComptrollerG1) + FreezeTime 90 Timelock Deploy Coburn 604800 ComptrollerImpl Deploy Scenario ScenComptroller Unitroller SetPendingImpl ScenComptroller @@ -199,7 +202,7 @@ Test "Set Pending Comptroller implemention on Unitroller from Timelock" Assert Equal (Unitroller PendingImplementation) (ComptrollerImpl ScenComptroller Address) From Coburn (Timelock QueueTransaction (Unitroller Address) 0 604900 "_acceptAdmin()" "") From Coburn (Timelock QueueTransaction (ComptrollerImpl ScenComptroller Address) 0 604900 "_become(address)" (Unitroller Address)) - Timelock FastForward 604802 + FreezeTime 604900 From Coburn (Timelock ExecuteTransaction (Unitroller Address) 0 604900 "_acceptAdmin()" "") Assert Equal (Unitroller Admin) (Timelock Address) Assert Equal (Unitroller PendingAdmin) (Address Zero) diff --git a/tests/CompilerTest.js b/tests/CompilerTest.js new file mode 100644 index 000000000..f22f65909 --- /dev/null +++ b/tests/CompilerTest.js @@ -0,0 +1,51 @@ +const { + etherBalance, + etherGasCost, + getContract +} = require('./Utils/Ethereum'); + +const { + makeComptroller, + makeCToken, + makePriceOracle, + pretendBorrow, + borrowSnapshot +} = require('./Utils/Compound'); + +describe('Const', () => { + it("does the right thing and not too expensive", async () => { + const base = await deploy('ConstBase'); + const sub = await deploy('ConstSub'); + expect(await call(base, 'c')).toEqual("1"); + expect(await call(sub, 'c')).toEqual("2"); + expect(await call(base, 'ADD', [1])).toEqual("2"); + expect(await call(base, 'add', [1])).toEqual("2"); + expect(await call(sub, 'ADD', [1])).toEqual("2"); + expect(await call(sub, 'add', [1])).toEqual("3"); + + const tx1 = await send(base, 'ADD', [1]); + const tx2 = await send(base, 'add', [1]); + const tx3 = await send(sub, 'ADD', [1]); + const tx4 = await send(sub, 'add', [1]); + expect(Math.abs(tx2.gasUsed - tx1.gasUsed) < 20); + expect(Math.abs(tx4.gasUsed - tx3.gasUsed) < 20); + }); +}); + +describe('Structs', () => { + it("only writes one slot", async () => { + const structs1 = await deploy('Structs'); + const tx1_0 = await send(structs1, 'writeEach', [0, 1, 2, 3]); + const tx1_1 = await send(structs1, 'writeEach', [0, 1, 2, 3]); + const tx1_2 = await send(structs1, 'writeOnce', [0, 1, 2, 3]); + + const structs2 = await deploy('Structs'); + const tx2_0 = await send(structs2, 'writeOnce', [0, 1, 2, 3]); + const tx2_1 = await send(structs2, 'writeOnce', [0, 1, 2, 3]); + const tx2_2 = await send(structs2, 'writeEach', [0, 1, 2, 3]); + + expect(tx1_0.gasUsed < tx2_0.gasUsed); // each beats once + expect(tx1_1.gasUsed < tx2_1.gasUsed); // each beats once + expect(tx1_2.gasUsed > tx2_2.gasUsed); // each beats once + }); +}); diff --git a/tests/Contracts/CompScenario.sol b/tests/Contracts/CompScenario.sol new file mode 100644 index 000000000..297da1efe --- /dev/null +++ b/tests/Contracts/CompScenario.sol @@ -0,0 +1,31 @@ +pragma solidity ^0.5.12; +pragma experimental ABIEncoderV2; + +import "../../contracts/Governance/Comp.sol"; + +contract CompScenario is Comp { + + constructor(address account) Comp(account) public {} + + function transferScenario(address[] calldata destinations, uint256 amount) external returns (bool) { + for (uint i = 0; i < destinations.length; i++) { + address dst = destinations[i]; + _transferTokens(msg.sender, dst, amount); + } + return true; + } + + function transferFromScenario(address[] calldata froms, uint256 amount) external returns (bool) { + for (uint i = 0; i < froms.length; i++) { + address from = froms[i]; + _transferTokens(from, msg.sender, amount); + } + return true; + } + + function generateCheckpoints(uint count, uint offset) external { + for (uint i = 1 + offset; i <= count + offset; i++) { + _pushCheckpoint(msg.sender, uint32(i), uint96(i)); + } + } +} diff --git a/tests/Contracts/Const.sol b/tests/Contracts/Const.sol new file mode 100644 index 000000000..55f49db21 --- /dev/null +++ b/tests/Contracts/Const.sol @@ -0,0 +1,31 @@ +pragma solidity ^0.5.12; + +contract ConstBase { + uint public constant C = 1; + + function c() public pure returns (uint) { + return 1; + } + + function ADD(uint a) public view returns (uint) { + // tells compiler to accept view instead of pure + if (false) { + C + now; + } + return a + C; + } + + function add(uint a) public view returns (uint) { + // tells compiler to accept view instead of pure + if (false) { + C + now; + } + return a + c(); + } +} + +contract ConstSub is ConstBase { + function c() public pure returns (uint) { + return 2; + } +} diff --git a/tests/Contracts/Counter.sol b/tests/Contracts/Counter.sol new file mode 100644 index 000000000..b3b459b7f --- /dev/null +++ b/tests/Contracts/Counter.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.5.12; + +contract Counter { + uint public count; + uint public count2; + + function increment(uint amount) public payable { + count += amount; + } + + function decrement(uint amount) public payable { + require(amount <= count, "counter underflow"); + count -= amount; + } + + function increment(uint amount, uint amount2) public payable { + count += amount; + count2 += amount2; + } + + function notZero() public view { + require(count != 0, "Counter::notZero"); + } + + function doRevert() public pure { + require(false, "Counter::revert Testing"); + } +} diff --git a/tests/Contracts/Structs.sol b/tests/Contracts/Structs.sol new file mode 100644 index 000000000..951c1a41b --- /dev/null +++ b/tests/Contracts/Structs.sol @@ -0,0 +1,29 @@ +pragma solidity ^0.5.12; +pragma experimental ABIEncoderV2; + +contract Structs { + struct Outer { + uint sentinel; + mapping(address => Inner) inners; + } + + struct Inner { + uint16 a; + uint16 b; + uint96 c; + } + + mapping(uint => Outer) public outers; + + function writeEach(uint id, uint16 a, uint16 b, uint96 c) public { + Inner storage inner = outers[id].inners[msg.sender]; + inner.a = a; + inner.b = b; + inner.c = c; + } + + function writeOnce(uint id, uint16 a, uint16 b, uint96 c) public { + Inner memory inner = Inner({a: a, b: b, c: c}); + outers[id].inners[msg.sender] = inner; + } +} \ No newline at end of file diff --git a/tests/Contracts/TimelockHarness.sol b/tests/Contracts/TimelockHarness.sol index fab73dbff..8ec01e4e8 100644 --- a/tests/Contracts/TimelockHarness.sol +++ b/tests/Contracts/TimelockHarness.sol @@ -4,22 +4,10 @@ import "../../contracts/Timelock.sol"; contract TimelockHarness is Timelock { - uint public blockTimestamp; - constructor(address admin_, uint delay_) Timelock(admin_, delay_) public { - // solium-disable-next-line security/no-block-members - blockTimestamp = 100; - } - - function getBlockTimestamp() internal view returns (uint) { - return blockTimestamp; - } - - function harnessSetBlockTimestamp(uint newBlockTimestamp) public { - blockTimestamp = newBlockTimestamp; } function harnessSetPendingAdmin(address pendingAdmin_) public { @@ -30,8 +18,4 @@ contract TimelockHarness is Timelock { admin = admin_; } - function harnessFastForward(uint seconds_) public { - blockTimestamp += seconds_; - } - } diff --git a/tests/Governance/CompScenarioTest.js b/tests/Governance/CompScenarioTest.js new file mode 100644 index 000000000..6b088827b --- /dev/null +++ b/tests/Governance/CompScenarioTest.js @@ -0,0 +1,50 @@ + +describe('CompScenario', () => { + let root, accounts; + let comp; + + beforeEach(async () => { + [root, ...accounts] = saddle.accounts; + comp = await deploy('CompScenario', [root]); + }); + + describe('lookup curve', () => { + [ + [1, 3], + [2, 5], + [20, 8], + [100, 10], + [500, 12], + ...(process.env['SLOW'] ? [ [5000, 16], [20000, 18] ] : []) + ].forEach(([checkpoints, expectedReads]) => { + it(`with ${checkpoints} checkpoints, has ${expectedReads} reads`, async () => { + let remaining = checkpoints; + let offset = 0; + while (remaining > 0) { + let amt = remaining > 1000 ? 1000 : remaining; + await comp.methods.generateCheckpoints(amt, offset).send({from: root, gas: 200000000}); + remaining -= amt; + offset += amt; + } + + let result = await comp.methods.getPriorVotes(root, 1).send(); + + await saddle.trace(result, { + constants: { + "account": root + }, + preFilter: ({op}) => op === 'SLOAD', + postFilter: ({source}) => !source || !source.includes('mockBlockNumber'), + execLog: (log) => { + if (process.env['VERBOSE']) { + log.show(); + } + }, + exec: (logs, info) => { + expect(logs.length).toEqual(expectedReads); + } + }); + }, 600000); + }); + }); +}); diff --git a/tests/Governance/CompTest.js b/tests/Governance/CompTest.js new file mode 100644 index 000000000..912b98760 --- /dev/null +++ b/tests/Governance/CompTest.js @@ -0,0 +1,131 @@ +const { + address, + encodeParameters, + etherMantissa, + keccak256, + unlockedAccount, + mineBlock +} = require('../Utils/Ethereum'); + +const EIP712 = require('../Utils/EIP712'); + +describe('Comp', () => { + const name = 'Compound Governance Token'; + const symbol = 'COMP'; + + let root, a1, a2, accounts, chainId; + let comp; + + beforeEach(async () => { + [root, a1, a2, ...accounts] = saddle.accounts; + chainId = 1 // await web3.eth.net.getId(); See: https://github.com/trufflesuite/ganache-core/issues/515 + comp = await deploy('Comp', [root]); + }); + + describe('metadata', () => { + it('has given name', async () => { + expect(await call(comp, 'name')).toEqual(name); + }); + + it('has given symbol', async () => { + expect(await call(comp, 'symbol')).toEqual(symbol); + }); + }); + + describe('balanceOf', () => { + it('grants to initial account', async () => { + expect(await call(comp, 'balanceOf', [root])).toEqual("10000000000000000000000000"); + }); + }); + + describe('delegateBySig', () => { + const Domain = (comp) => ({name, chainId, verifyingContract: comp._address}); + const Types = { + Delegation: [ + {name: 'delegatee', type: 'address'}, + {name: 'nonce', type: 'uint256'}, + {name: 'expiry', type: 'uint256'} + ] + }; + + it('reverts if the signatory is invalid', async () => { + const delegatee = root, nonce = 0, expiry = 0; + await expect(send(comp, 'delegateBySig', [delegatee, nonce, expiry, 0, '0xbad', '0xbad'])).rejects.toRevert("revert Comp::delegateBySig: invalid signature"); + }); + + it('reverts if the nonce is bad ', async () => { + const delegatee = root, nonce = 1, expiry = 0; + const {v, r, s} = EIP712.sign(Domain(comp), 'Delegation', {delegatee, nonce, expiry}, Types, unlockedAccount(a1).secretKey); + await expect(send(comp, 'delegateBySig', [delegatee, nonce, expiry, v, r, s])).rejects.toRevert("revert Comp::delegateBySig: invalid nonce"); + }); + + it('reverts if the signature has expired', async () => { + const delegatee = root, nonce = 0, expiry = 0; + const {v, r, s} = EIP712.sign(Domain(comp), 'Delegation', {delegatee, nonce, expiry}, Types, unlockedAccount(a1).secretKey); + await expect(send(comp, 'delegateBySig', [delegatee, nonce, expiry, v, r, s])).rejects.toRevert("revert Comp::delegateBySig: signature expired"); + }); + + it('delegates on behalf of the signatory', async () => { + const delegatee = root, nonce = 0, expiry = 10e9; + const {v, r, s} = EIP712.sign(Domain(comp), 'Delegation', {delegatee, nonce, expiry}, Types, unlockedAccount(a1).secretKey); + expect(await call(comp, 'delegates', [a1])).toEqual(address(0)); + const tx = await send(comp, 'delegateBySig', [delegatee, nonce, expiry, v, r, s]); + expect(tx.gasUsed < 80000); + expect(await call(comp, 'delegates', [a1])).toEqual(root); + }); + }); + + describe('getPriorVotes', () => { + it('reverts if block number >= current block', async () => { + await expect(call(comp, 'getPriorVotes', [a1, 5e10])).rejects.toRevert("revert Comp::getPriorVotes: not yet determined"); + }); + + it('returns 0 if there are no checkpoints', async () => { + expect(await call(comp, 'getPriorVotes', [a1, 0])).toEqual('0'); + }); + + it('returns the latest block if >= last checkpoint block', async () => { + const t1 = await send(comp, 'delegate', [a1], { from: root }); + await mineBlock(); + await mineBlock(); + + expect(await call(comp, 'getPriorVotes', [a1, t1.blockNumber])).toEqual('10000000000000000000000000'); + expect(await call(comp, 'getPriorVotes', [a1, t1.blockNumber + 1])).toEqual('10000000000000000000000000'); + }); + + it('returns zero if < first checkpoint block', async () => { + await mineBlock(); + const t1 = await send(comp, 'delegate', [a1], { from: root }); + await mineBlock(); + await mineBlock(); + + expect(await call(comp, 'getPriorVotes', [a1, t1.blockNumber - 1])).toEqual('0'); + expect(await call(comp, 'getPriorVotes', [a1, t1.blockNumber + 1])).toEqual('10000000000000000000000000'); + }); + + it('generally returns the voting balance at the appropriate checkpoint', async () => { + const t1 = await send(comp, 'delegate', [a1], { from: root }); + await mineBlock(); + await mineBlock(); + const t2 = await send(comp, 'transfer', [a2, 10], { from: root }); + await mineBlock(); + await mineBlock(); + const t3 = await send(comp, 'transfer', [a2, 10], { from: root }); + await mineBlock(); + await mineBlock(); + const t4 = await send(comp, 'transfer', [root, 20], { from: a2 }); + await mineBlock(); + await mineBlock(); + + expect(await call(comp, 'getPriorVotes', [a1, t1.blockNumber - 1])).toEqual('0'); + expect(await call(comp, 'getPriorVotes', [a1, t1.blockNumber])).toEqual('10000000000000000000000000'); + expect(await call(comp, 'getPriorVotes', [a1, t1.blockNumber + 1])).toEqual('10000000000000000000000000'); + expect(await call(comp, 'getPriorVotes', [a1, t2.blockNumber])).toEqual('9999999999999999999999990'); + expect(await call(comp, 'getPriorVotes', [a1, t2.blockNumber + 1])).toEqual('9999999999999999999999990'); + expect(await call(comp, 'getPriorVotes', [a1, t3.blockNumber])).toEqual('9999999999999999999999980'); + expect(await call(comp, 'getPriorVotes', [a1, t3.blockNumber + 1])).toEqual('9999999999999999999999980'); + expect(await call(comp, 'getPriorVotes', [a1, t4.blockNumber])).toEqual('10000000000000000000000000'); + expect(await call(comp, 'getPriorVotes', [a1, t4.blockNumber + 1])).toEqual('10000000000000000000000000'); + }); + }); +}); diff --git a/tests/Governance/GovernorAlpha/CastVoteTest.js b/tests/Governance/GovernorAlpha/CastVoteTest.js new file mode 100644 index 000000000..0e854deeb --- /dev/null +++ b/tests/Governance/GovernorAlpha/CastVoteTest.js @@ -0,0 +1,184 @@ +const { + address, + etherMantissa, + encodeParameters, + mineBlock, + unlockedAccount +} = require('../../Utils/Ethereum'); +const EIP712 = require('../../Utils/EIP712'); +const BigNumber = require('bignumber.js'); +const chalk = require('chalk'); + +async function enfranchise(comp, actor, amount) { + await send(comp, 'transfer', [actor, etherMantissa(amount)]); + await send(comp, 'delegate', [actor], { from: actor }); +} + +describe("governorAlpha#castVote/2", () => { + let comp, gov, root, a1, accounts; + let targets, values, signatures, callDatas, proposalId; + + beforeAll(async () => { + [root, a1, ...accounts] = saddle.accounts; + comp = await deploy('Comp', [root]); + gov = await deploy('GovernorAlpha', [address(0), comp._address, root]); + + targets = [a1]; + values = ["0"]; + signatures = ["getBalanceOf(address)"]; + callDatas = [encodeParameters(['address'], [a1])]; + await send(comp, 'delegate', [root]); + await send(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"]); + proposalId = await call(gov, 'latestProposalIds', [root]); + }); + + describe("We must revert if:", () => { + it("There does not exist a proposal with matching proposal id where the current block number is between the proposal's start block (exclusive) and end block (inclusive)", async () => { + await expect( + call(gov, 'castVote', [proposalId, true]) + ).rejects.toRevert("revert GovernorAlpha::castVote: voting is closed"); + }); + + it("Such proposal already has an entry in its voters set matching the sender", async () => { + await mineBlock(); + await mineBlock(); + + await send(gov, 'castVote', [proposalId, true], { from: accounts[4] }); + await expect( + gov.methods['castVote'](proposalId, true).call({ from: accounts[4] }) + ).rejects.toRevert("revert GovernorAlpha::castVote: voter already voted"); + }); + }); + + describe("Otherwise", () => { + it("we add the sender to the proposal's voters set", async () => { + await expect(call(gov, 'getReceipt', [proposalId, accounts[2]])).resolves.toPartEqual({hasVoted: false}); + await send(gov, 'castVote', [proposalId, true], { from: accounts[2] }); + await expect(call(gov, 'getReceipt', [proposalId, accounts[2]])).resolves.toPartEqual({hasVoted: true}); + }); + + describe("and we take the balance returned by GetPriorVotes for the given sender and the proposal's start block, which may be zero,", () => { + let actor; // an account that will propose, receive tokens, delegate to self, and vote on own proposal + + it("and we add that ForVotes", async () => { + actor = accounts[1]; + await enfranchise(comp, actor, 400001); + + await send(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"], { from: actor }); + proposalId = await call(gov, 'latestProposalIds', [actor]); + + let beforeFors = (await call(gov, 'proposals', [proposalId])).forVotes; + await mineBlock(); + await send(gov, 'castVote', [proposalId, true], { from: actor }); + + let afterFors = (await call(gov, 'proposals', [proposalId])).forVotes; + expect(new BigNumber(afterFors)).toEqual(new BigNumber(beforeFors).plus(etherMantissa(400001))); + }) + + it("or AgainstVotes corresponding to the caller's support flag.", async () => { + actor = accounts[3]; + await enfranchise(comp, actor, 400001); + + await send(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"], { from: actor }); + proposalId = await call(gov, 'latestProposalIds', [actor]);; + + let beforeAgainsts = (await call(gov, 'proposals', [proposalId])).againstVotes; + await mineBlock(); + await send(gov, 'castVote', [proposalId, false], { from: actor }); + + let afterAgainsts = (await call(gov, 'proposals', [proposalId])).againstVotes; + expect(new BigNumber(afterAgainsts)).toEqual(new BigNumber(beforeAgainsts).plus(etherMantissa(400001))); + }); + }); + + describe('castVoteBySig', () => { + const Domain = (gov) => ({ + name: 'Compound Governor Alpha', + chainId: 1, // await web3.eth.net.getId(); See: https://github.com/trufflesuite/ganache-core/issues/515 + verifyingContract: gov._address + }); + const Types = { + Ballot: [ + { name: 'proposalId', type: 'uint256' }, + { name: 'support', type: 'bool' } + ] + }; + + it('reverts if the signatory is invalid', async () => { + await expect(send(gov, 'castVoteBySig', [proposalId, false, 0, '0xbad', '0xbad'])).rejects.toRevert("revert GovernorAlpha::castVoteBySig: invalid signature"); + }); + + it('casts vote on behalf of the signatory', async () => { + await enfranchise(comp, a1, 400001); + await send(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"], { from: a1 }); + proposalId = await call(gov, 'latestProposalIds', [a1]);; + + const { v, r, s } = EIP712.sign(Domain(gov), 'Ballot', { proposalId, support: true }, Types, unlockedAccount(a1).secretKey); + + let beforeFors = (await call(gov, 'proposals', [proposalId])).forVotes; + await mineBlock(); + const tx = await send(gov, 'castVoteBySig', [proposalId, true, v, r, s]); + expect(tx.gasUsed < 80000); + + let afterFors = (await call(gov, 'proposals', [proposalId])).forVotes; + expect(new BigNumber(afterFors)).toEqual(new BigNumber(beforeFors).plus(etherMantissa(400001))); + }); + }); + + it("receipt uses one load", async () => { + let actor = accounts[2]; + let actor2 = accounts[3]; + await enfranchise(comp, actor, 400001); + await enfranchise(comp, actor2, 400001); + await send(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"], { from: actor }); + proposalId = await call(gov, 'latestProposalIds', [actor]); + + await mineBlock(); + await mineBlock(); + await send(gov, 'castVote', [proposalId, true], { from: actor }); + await send(gov, 'castVote', [proposalId, false], { from: actor2 }); + + let trxReceipt = await send(gov, 'getReceipt', [proposalId, actor]); + let trxReceipt2 = await send(gov, 'getReceipt', [proposalId, actor2]); + + await saddle.trace(trxReceipt, { + constants: { + "account": actor + }, + preFilter: ({op}) => op === 'SLOAD', + postFilter: ({source}) => !source || source.includes('receipts'), + execLog: (log) => { + let [output] = log.outputs; + let votes = "000000000000000000000000000000000000000054b419003bdf81640000"; + let voted = "01"; + let support = "01"; + + expect(output).toEqual( + `${votes}${support}${voted}` + ); + }, + exec: (logs) => { + expect(logs.length).toEqual(1); // require only one read + } + }); + + await saddle.trace(trxReceipt2, { + constants: { + "account": actor2 + }, + preFilter: ({op}) => op === 'SLOAD', + postFilter: ({source}) => !source || source.includes('receipts'), + execLog: (log) => { + let [output] = log.outputs; + let votes = "0000000000000000000000000000000000000000a968320077bf02c80000"; + let voted = "01"; + let support = "00"; + + expect(output).toEqual( + `${votes}${support}${voted}` + ); + } + }); + }); + }); +}); \ No newline at end of file diff --git a/tests/Governance/GovernorAlpha/ProposeTest.js b/tests/Governance/GovernorAlpha/ProposeTest.js new file mode 100644 index 000000000..b6aaf026e --- /dev/null +++ b/tests/Governance/GovernorAlpha/ProposeTest.js @@ -0,0 +1,143 @@ +const { + address, + etherMantissa, + encodeParameters, + mineBlock +} = require('../../Utils/Ethereum'); + +describe('GovernorAlpha#propose/5', () => { + let gov, root, acct; + + beforeAll(async () => { + [root, acct, ...accounts] = accounts; + comp = await deploy('Comp', [root]); + gov = await deploy('GovernorAlpha', [address(0), comp._address, address(0)]); + }); + + let trivialProposal, targets, values, signatures, callDatas; + let proposalBlock; + beforeAll(async () => { + targets = [root]; + values = ["0"]; + signatures = ["getBalanceOf(address)"] + callDatas = [encodeParameters(['address'], [acct])]; + await send(comp, 'delegate', [root]); + await send(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"]); + proposalBlock = +(await web3.eth.getBlockNumber()) + proposalId = await call(gov, 'latestProposalIds', [root]); + trivialProposal = await call(gov, "proposals", [proposalId]); + }) + + it("Given the sender's GetPriorVotes for the immediately previous block is above the Proposal Threshold (e.g. 2%), the given proposal is added to all proposals, given the following settings", async () => { + test.todo('depends on get prior votes and delegation and voting') + }) + + describe("simple initialization", () => { + it("ID is set to a globally unique identifier", async () => { + expect(trivialProposal.id).toEqual(proposalId) + }) + + it("Proposer is set to the sender", async () => { + expect(trivialProposal.proposer).toEqual(root) + }) + + it("Start block is set to the current block number plus vote delay", async () => { + expect(trivialProposal.startBlock).toEqual(proposalBlock + 1 + "") + }) + + it("End block is set to the current block number plus the sum of vote delay and vote period", async () => { + expect(trivialProposal.endBlock).toEqual(proposalBlock + 1 + 17280 + "") + }) + + it("ForVotes and AgainstVotes are initialized to zero", async () => { + expect(trivialProposal.forVotes).toEqual("0") + expect(trivialProposal.againstVotes).toEqual("0") + }) + + xit("Voters is initialized to the empty set", async () => { + test.todo('mmm probably nothing to prove here unless we add a counter or something') + }) + + it("Executed and Canceled flags are initialized to false", async () => { + expect(trivialProposal.canceled).toEqual(false); + expect(trivialProposal.executed).toEqual(false); + }) + + it("ETA is initialized to zero", async () => { + expect(trivialProposal.eta).toEqual("0") + }) + + it("Targets, Values, Signatures, Calldatas are set according to parameters", async () => { + let dynamicFields = await call(gov, 'getProposalFunctionData', [trivialProposal.id]); + expect(dynamicFields.targets).toEqual(targets) + expect(dynamicFields.values).toEqual(values) + expect(dynamicFields.signatures).toEqual(signatures) + expect(dynamicFields.calldatas).toEqual(callDatas) + }) + + describe("This function must revert if", () => { + it("the length of the values, signatures or calldatas arrays are not the same length,", async () => { + await expect( + call(gov, 'propose', [targets.concat(root), values, signatures, callDatas, "do nothing"]) + ).rejects.toRevert("revert GovernorAlpha::propose: proposal function information arity mismatch"); + + await expect( + call(gov, 'propose', [targets, values.concat(values), signatures, callDatas, "do nothing"]) + ).rejects.toRevert("revert GovernorAlpha::propose: proposal function information arity mismatch"); + + await expect( + call(gov, 'propose', [targets, values, signatures.concat(signatures), callDatas, "do nothing"]) + ).rejects.toRevert("revert GovernorAlpha::propose: proposal function information arity mismatch"); + + await expect( + call(gov, 'propose', [targets, values, signatures, callDatas.concat(callDatas), "do nothing"]) + ).rejects.toRevert("revert GovernorAlpha::propose: proposal function information arity mismatch"); + }) + + it("or if that length is zero or greater than Max Operations.", async () => { + await expect( + call(gov, 'propose', [[], [], [], [], "do nothing"]) + ).rejects.toRevert("revert GovernorAlpha::propose: must provide actions"); + }) + + describe("Additionally, if there exists a pending or active proposal from the same proposer, we must revert.", () => { + it("reverts with pending", async () => { + await expect( + call(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"]) + ).rejects.toRevert("revert GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal"); + }) + + it("reverts with active", async () => { + await mineBlock() + await mineBlock() + + await expect( + call(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"]) + ).rejects.toRevert("revert GovernorAlpha::propose: one live proposal per proposer, found an already active proposal"); + }) + }) + }); + + it("This function returns the id of the newly created proposal. # proposalId(n) = succ(proposalId(n-1))", async () => { + await send(comp, 'transfer', [accounts[2], etherMantissa(400001)]) + await send(comp, 'delegate', [accounts[2]], { from: accounts[2] }); + + await mineBlock() + let nextProposalId = await gov.methods['propose'](targets, values, signatures, callDatas, "yoot").call({ from: accounts[2] }) + // let nextProposalId = await call(gov, 'propose', [targets, values, signatures, callDatas, "second proposal"], { from: accounts[2] }); + + expect(+nextProposalId).toEqual(+trivialProposal.id + 1); + }) + + it("emits log with id and description", async () => { + await send(comp, 'transfer', [accounts[3], etherMantissa(400001)]) + await send(comp, 'delegate', [accounts[3]], { from: accounts[3] }) + await mineBlock() + let nextProposalId = await gov.methods['propose'](targets, values, signatures, callDatas, "yoot").call({ from: accounts[3] }) + + expect( + await send(gov, 'propose', [targets, values, signatures, callDatas, "second proposal"], { from: accounts[3] }) + ).toHaveLog("NewProposal", { id: nextProposalId, description: "second proposal" }); + }); + }) +}); diff --git a/tests/Governance/GovernorAlpha/StateTest.js b/tests/Governance/GovernorAlpha/StateTest.js new file mode 100644 index 000000000..f2b2e2042 --- /dev/null +++ b/tests/Governance/GovernorAlpha/StateTest.js @@ -0,0 +1,157 @@ +const { + advanceBlocks, + bigNumberify, + both, + encodeParameters, + etherMantissa, + mineBlock, + freezeTime +} = require('../../Utils/Ethereum'); + +const path = require('path'); +const solparse = require('solparse'); + +const governorAlphaPath = path.join(__dirname, '../../..', 'contracts', 'Governance/GovernorAlpha.sol'); + +const statesInverted = solparse + .parseFile(governorAlphaPath) + .body + .find(k => k.type === 'ContractStatement') + .body + .find(k => k.name == 'ProposalState') + .members + +const states = Object.entries(statesInverted).reduce((obj, [key, value]) => ({ ...obj, [value]: key }), {}); + +describe('GovernorAlpha#state/1', () => { + let comp, gov, root, acct, delay, timelock; + + beforeAll(async () => { + await freezeTime(100); + [root, acct, ...accounts] = accounts; + comp = await deploy('Comp', [root]); + delay = bigNumberify(2 * 24 * 60 * 60).mul(2) + timelock = await deploy('TimelockHarness', [root, delay]); + gov = await deploy('GovernorAlpha', [timelock._address, comp._address, root]); + await send(timelock, "harnessSetAdmin", [gov._address]) + await send(comp, 'transfer', [acct, etherMantissa(4000000)]); + await send(comp, 'delegate', [acct], { from: acct }); + }); + + let trivialProposal, targets, values, signatures, callDatas; + beforeAll(async () => { + targets = [root]; + values = ["0"]; + signatures = ["getBalanceOf(address)"] + callDatas = [encodeParameters(['address'], [acct])]; + await send(comp, 'delegate', [root]); + await send(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"]); + proposalId = await call(gov, 'latestProposalIds', [root]); + trivialProposal = await call(gov, "proposals", [proposalId]) + }) + + it("Invalid for proposal not found", async () => { + await expect(call(gov, 'state', ["5"])).rejects.toRevert("revert GovernorAlpha::state: invalid proposal id") + }) + + it("Pending", async () => { + expect(await call(gov, 'state', [trivialProposal.id], {})).toEqual(states["Pending"]) + }) + + it("Active", async () => { + await mineBlock() + await mineBlock() + expect(await call(gov, 'state', [trivialProposal.id], {})).toEqual(states["Active"]) + }) + + it("Canceled", async () => { + await send(comp, 'transfer', [accounts[0], etherMantissa(4000000)]); + await send(comp, 'delegate', [accounts[0]], { from: accounts[0] }); + await mineBlock() + await send(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"], { from: accounts[0] }) + let newProposalId = await call(gov, 'proposalCount') + + // send away the delegates + await send(comp, 'delegate', [root], { from: accounts[0] }); + await send(gov, 'cancel', [newProposalId]) + + expect(await call(gov, 'state', [+newProposalId])).toEqual(states["Canceled"]) + }) + + it("Defeated", async () => { + // travel to end block + await advanceBlocks(20000) + + expect(await call(gov, 'state', [trivialProposal.id])).toEqual(states["Defeated"]) + }) + + it("Succeeded", async () => { + await mineBlock() + const { reply: newProposalId } = await both(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"], { from: acct }) + await mineBlock() + await send(gov, 'castVote', [newProposalId, true]) + await advanceBlocks(20000) + + expect(await call(gov, 'state', [newProposalId])).toEqual(states["Succeeded"]) + }) + + it("Queued", async () => { + await mineBlock() + const { reply: newProposalId } = await both(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"], { from: acct }) + await mineBlock() + await send(gov, 'castVote', [newProposalId, true]) + await advanceBlocks(20000) + + await send(gov, 'queue', [newProposalId], { from: acct }) + expect(await call(gov, 'state', [newProposalId])).toEqual(states["Queued"]) + }) + + it("Expired", async () => { + await mineBlock() + const { reply: newProposalId } = await both(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"], { from: acct }) + await mineBlock() + await send(gov, 'castVote', [newProposalId, true]) + await advanceBlocks(20000) + + await send(gov, 'queue', [newProposalId], { from: acct }) + + let gracePeriod = await call(timelock, 'GRACE_PERIOD') + let p = await call(gov, "proposals", [newProposalId]); + let eta = bigNumberify(p.eta) + + await freezeTime(eta.add(gracePeriod).sub(1).toNumber()) + + expect(await call(gov, 'state', [newProposalId])).toEqual(states["Queued"]) + + await freezeTime(eta.add(gracePeriod).toNumber()) + + expect(await call(gov, 'state', [newProposalId])).toEqual(states["Expired"]) + }) + + it("Executed", async () => { + await mineBlock() + const { reply: newProposalId } = await both(gov, 'propose', [targets, values, signatures, callDatas, "do nothing"], { from: acct }) + await mineBlock() + await send(gov, 'castVote', [newProposalId, true]) + await advanceBlocks(20000) + + await send(gov, 'queue', [newProposalId], { from: acct }) + + let gracePeriod = await call(timelock, 'GRACE_PERIOD') + let p = await call(gov, "proposals", [newProposalId]); + let eta = bigNumberify(p.eta) + + await freezeTime(eta.add(gracePeriod).sub(1).toNumber()) + + expect(await call(gov, 'state', [newProposalId])).toEqual(states["Queued"]) + await send(gov, 'execute', [newProposalId], { from: acct }) + + expect(await call(gov, 'state', [newProposalId])).toEqual(states["Executed"]) + + // still executed even though would be expired + await freezeTime(eta.add(gracePeriod).toNumber()) + + expect(await call(gov, 'state', [newProposalId])).toEqual(states["Executed"]) + }) + +}) \ No newline at end of file diff --git a/tests/Matchers.js b/tests/Matchers.js index 6fb970953..53e308f78 100644 --- a/tests/Matchers.js +++ b/tests/Matchers.js @@ -259,7 +259,13 @@ function hasErrorTuple(result, tuple, reporter, cmp=undefined) { function revert(actual, msg) { return { pass: !!actual['message'] && actual.message === `VM Exception while processing transaction: ${msg}`, - message: () => `expected revert, got: ${JSON.stringify(actual)}` + message: () => { + if (actual["message"]) { + return `expected VM Exception while processing transaction: ${msg}, got ${actual["message"]}` + } else { + return `expected revert, but transaction succeeded: ${JSON.stringify(actual)}` + } + } } } @@ -332,6 +338,10 @@ expect.extend({ return match.call(this, actual, expected, etherUnsigned(actual).eq(etherUnsigned(expected)), opts('toEqualNumber')); }, + toPartEqual(actual, expected) { + return match.call(this, actual, expected, objectEqual(actual, expected, true), opts('toPartEqual')); + }, + toSucceed(actual) { return success.call(this, actual, 'success'); }, @@ -348,7 +358,7 @@ expect.extend({ return revert.call(this, trx, `${reason} (${reporter.Error[expectedErrorName].padStart(2, '0')})`); }, - fail(msg) { - return fail.call(this, msg); + fail(received, msg) { + return fail.call(this, msg, received); } }); diff --git a/tests/Models/DAIInterestRateModelTest.js b/tests/Models/DAIInterestRateModelTest.js index f1ae38ebc..2bcda3edf 100644 --- a/tests/Models/DAIInterestRateModelTest.js +++ b/tests/Models/DAIInterestRateModelTest.js @@ -1,7 +1,5 @@ -const Ganache = require('ganache-core'); -const Web3 = require('web3'); -const BigNum = require('bignumber.js') - +const BigNum = require('bignumber.js'); +const {Ganache} = require('eth-saddle/dist/config'); const {etherUnsigned} = require('../Utils/Ethereum'); const { makeInterestRateModel, @@ -57,14 +55,14 @@ function daiSupplyRate(dsr, duty, mkrBase, jump, kink, cash, borrows, reserves, let fork = "https://kovan.infura.io/v3/e1a5d4d2c06a4e81945fca56d0d5d8ea@14764778"; async function getKovanFork() { - const kovan = new Web3( + const kovan = new web3.constructor( Ganache.provider({ - allowUnlimitedContractSize: true, - fork: fork, - gasLimit: 20000000, - gasPrice: '20000', - port: 8546 - })); + allowUnlimitedContractSize: true, + fork: fork, + gasLimit: 20000000, + gasPrice: '20000', + port: 8546 + })); const [root, ...accounts] = await kovan.eth.getAccounts(); return {kovan, root, accounts}; diff --git a/tests/TimelockTest.js b/tests/TimelockTest.js index 62e029dce..602062b12 100644 --- a/tests/TimelockTest.js +++ b/tests/TimelockTest.js @@ -1,7 +1,7 @@ const { encodeParameters, - etherMantissa, bigNumberify, + freezeTime, keccak256 } = require('./Utils/Ethereum'); @@ -27,7 +27,8 @@ describe('Timelock', () => { [root, notAdmin, newAdmin] = accounts; timelock = await deploy('TimelockHarness', [root, delay]); - blockTimestamp = bigNumberify(await call(timelock.methods.blockTimestamp())); + blockTimestamp = bigNumberify(100); + await freezeTime(blockTimestamp.toNumber()) target = timelock.options.address; eta = blockTimestamp.add(delay); @@ -41,26 +42,26 @@ describe('Timelock', () => { describe('constructor', () => { it('sets address of admin', async () => { - let configuredAdmin = await call(timelock.methods.admin()); + let configuredAdmin = await call(timelock, 'admin'); expect(configuredAdmin).toEqual(root); }); it('sets delay', async () => { - let configuredDelay = await call(timelock.methods.delay()); + let configuredDelay = await call(timelock, 'delay'); expect(configuredDelay).toEqual(delay.toString()); }); }); describe('setDelay', () => { it('requires msg.sender to be Timelock', async () => { - await expect(send(timelock.methods.setDelay(delay), { from: root })).rejects.toRevert('revert Timelock::setDelay: Call must come from Timelock.'); + await expect(send(timelock, 'setDelay', [delay], { from: root })).rejects.toRevert('revert Timelock::setDelay: Call must come from Timelock.'); }); }); describe('setPendingAdmin', () => { it('requires msg.sender to be Timelock', async () => { await expect( - send(timelock.methods.setPendingAdmin(newAdmin), { from: root }) + send(timelock, 'setPendingAdmin', [newAdmin], { from: root }) ).rejects.toRevert('revert Timelock::setPendingAdmin: Call must come from Timelock.'); }); }); @@ -72,20 +73,20 @@ describe('Timelock', () => { it('requires msg.sender to be pendingAdmin', async () => { await expect( - send(timelock.methods.acceptAdmin(), { from: notAdmin }) + send(timelock, 'acceptAdmin', { from: notAdmin }) ).rejects.toRevert('revert Timelock::acceptAdmin: Call must come from pendingAdmin.'); }); it('sets pendingAdmin to address 0 and changes admin', async () => { - await send(timelock.methods.harnessSetPendingAdmin(newAdmin), { from: root }); - const pendingAdminBefore = await call(timelock.methods.pendingAdmin()); + await send(timelock, 'harnessSetPendingAdmin', [newAdmin], { from: root }); + const pendingAdminBefore = await call(timelock, 'pendingAdmin'); expect(pendingAdminBefore).toEqual(newAdmin); - const result = await send(timelock.methods.acceptAdmin(), { from: newAdmin }); - const pendingAdminAfter = await call(timelock.methods.pendingAdmin()); + const result = await send(timelock, 'acceptAdmin', { from: newAdmin }); + const pendingAdminAfter = await call(timelock, 'pendingAdmin'); expect(pendingAdminAfter).toEqual('0x0000000000000000000000000000000000000000'); - const timelockAdmin = await call(timelock.methods.admin()); + const timelockAdmin = await call(timelock, 'admin'); expect(timelockAdmin).toEqual(newAdmin); expect(result).toHaveLog('NewAdmin', { @@ -97,7 +98,7 @@ describe('Timelock', () => { describe('queueTransaction', () => { it('requires admin to be msg.sender', async () => { await expect( - send(timelock.methods.queueTransaction(target, value, signature, data, eta), { from: notAdmin }) + send(timelock, 'queueTransaction', [target, value, signature, data, eta], { from: notAdmin }) ).rejects.toRevert('revert Timelock::queueTransaction: Call must come from admin.'); }); @@ -105,24 +106,24 @@ describe('Timelock', () => { const etaLessThanDelay = blockTimestamp.add(delay).sub(1); await expect( - send(timelock.methods.queueTransaction(target, value, signature, data, etaLessThanDelay), { + send(timelock, 'queueTransaction', [target, value, signature, data, etaLessThanDelay], { from: root }) ).rejects.toRevert('revert Timelock::queueTransaction: Estimated execution block must satisfy delay.'); }); it('sets hash as true in queuedTransactions mapping', async () => { - const queueTransactionsHashValueBefore = await call(timelock.methods.queuedTransactions(queuedTxHash)); + const queueTransactionsHashValueBefore = await call(timelock, 'queuedTransactions', [queuedTxHash]); expect(queueTransactionsHashValueBefore).toEqual(false); - await send(timelock.methods.queueTransaction(target, value, signature, data, eta), { from: root }); + await send(timelock, 'queueTransaction', [target, value, signature, data, eta], { from: root }); - const queueTransactionsHashValueAfter = await call(timelock.methods.queuedTransactions(queuedTxHash)); + const queueTransactionsHashValueAfter = await call(timelock, 'queuedTransactions', [queuedTxHash]); expect(queueTransactionsHashValueAfter).toEqual(true); }); it('should emit QueueTransaction event', async () => { - const result = await send(timelock.methods.queueTransaction(target, value, signature, data, eta), { + const result = await send(timelock, 'queueTransaction', [target, value, signature, data, eta], { from: root }); @@ -183,9 +184,9 @@ describe('Timelock', () => { ) ); expect(await call(timelock, 'queuedTransactions', [txHash])).toBeFalsy(); - await send(timelock, 'queueTransaction', [target, value, '', '0x', eta], {from: root}); + await send(timelock, 'queueTransaction', [target, value, '', '0x', eta], { from: root }); expect(await call(timelock, 'queuedTransactions', [txHash])).toBeTruthy(); - await send(timelock, 'cancelTransaction', [target, value, '', '0x', eta], {from: root}); + await send(timelock, 'cancelTransaction', [target, value, '', '0x', eta], { from: root }); expect(await call(timelock, 'queuedTransactions', [txHash])).toBeFalsy(); }); }); @@ -227,8 +228,7 @@ describe('Timelock', () => { }); it('requires timestamp to be less than eta plus gracePeriod', async () => { - const blockFastForward = delay.add(gracePeriod).add(1); - await send(timelock, 'harnessFastForward', [blockFastForward]); + await freezeTime(blockTimestamp.add(delay).add(gracePeriod).add(1).toNumber()); await expect( send(timelock, 'executeTransaction', [target, value, signature, data, eta], { @@ -238,8 +238,7 @@ describe('Timelock', () => { }); it('requires target.call transaction to succeed', async () => { - const newBlockTimestamp = blockTimestamp.add(delay).add(1); - await send(timelock, 'harnessSetBlockTimestamp', [newBlockTimestamp]); + await freezeTime(eta.toNumber()); await expect( send(timelock, 'executeTransaction', [target, value, signature, revertData, eta], { @@ -256,7 +255,7 @@ describe('Timelock', () => { expect(queueTransactionsHashValueBefore).toEqual(true); const newBlockTimestamp = blockTimestamp.add(delay).add(1); - await send(timelock, 'harnessSetBlockTimestamp', [newBlockTimestamp]); + await freezeTime(newBlockTimestamp.toNumber()); const result = await send(timelock, 'executeTransaction', [target, value, signature, data, eta], { from: root @@ -299,7 +298,6 @@ describe('Timelock', () => { ) ); - await send(timelock, 'harnessSetBlockTimestamp', [blockTimestamp]); await send(timelock, 'queueTransaction', [target, value, signature, data, eta], { from: root }); @@ -329,8 +327,7 @@ describe('Timelock', () => { }); it('requires timestamp to be less than eta plus gracePeriod', async () => { - const blockFastForward = delay.add(gracePeriod).add(1); - await send(timelock, 'harnessFastForward', [blockFastForward]); + await freezeTime(blockTimestamp.add(delay).add(gracePeriod).add(1).toNumber()); await expect( send(timelock, 'executeTransaction', [target, value, signature, data, eta], { @@ -347,7 +344,7 @@ describe('Timelock', () => { expect(queueTransactionsHashValueBefore).toEqual(true); const newBlockTimestamp = blockTimestamp.add(delay).add(1); - await send(timelock, 'harnessSetBlockTimestamp', [newBlockTimestamp]); + await freezeTime(newBlockTimestamp.toNumber()) const result = await send(timelock, 'executeTransaction', [target, value, signature, data, eta], { from: root diff --git a/tests/Utils/Compound.js b/tests/Utils/Compound.js index 8b59d4579..6d4046ea7 100644 --- a/tests/Utils/Compound.js +++ b/tests/Utils/Compound.js @@ -27,9 +27,9 @@ async function makeComptroller(opts = {}) { const closeFactor = etherMantissa(dfn(opts.closeFactor, .051)); const maxAssets = etherUnsigned(dfn(opts.maxAssets, 10)); - await send(comptroller.methods._setCloseFactor(closeFactor)); - await send(comptroller.methods._setMaxAssets(maxAssets)); - await send(comptroller.methods._setPriceOracle(priceOracle._address)); + await send(comptroller, '_setCloseFactor', [closeFactor]); + await send(comptroller, '_setMaxAssets', [maxAssets]); + await send(comptroller, '_setPriceOracle', [priceOracle._address]); comptroller.options.address = comptroller._address; @@ -44,13 +44,13 @@ async function makeComptroller(opts = {}) { const maxAssets = etherUnsigned(dfn(opts.maxAssets, 10)); const liquidationIncentive = etherMantissa(1); - await send(unitroller.methods._setPendingImplementation(comptroller._address)); - await send(comptroller.methods._become(unitroller._address)); + await send(unitroller, '_setPendingImplementation', [comptroller._address]); + await send(comptroller, '_become', [unitroller._address]); comptroller.options.address = unitroller._address; - await send(comptroller.methods._setLiquidationIncentive(liquidationIncentive)); - await send(comptroller.methods._setCloseFactor(closeFactor)); - await send(comptroller.methods._setMaxAssets(maxAssets)); - await send(comptroller.methods._setPriceOracle(priceOracle._address)); + await send(comptroller, '_setLiquidationIncentive', [liquidationIncentive]); + await send(comptroller, '_setCloseFactor', [closeFactor]); + await send(comptroller, '_setMaxAssets', [maxAssets]); + await send(comptroller, '_setPriceOracle', [priceOracle._address]); return Object.assign(comptroller, { priceOracle }); } @@ -109,17 +109,17 @@ async function makeCToken(opts = {}) { } if (opts.supportMarket) { - await send(comptroller.methods._supportMarket(cToken._address)); + await send(comptroller, '_supportMarket', [cToken._address]); } if (opts.underlyingPrice) { const price = etherMantissa(opts.underlyingPrice); - await send(comptroller.priceOracle.methods.setUnderlyingPrice(cToken._address, price)); + await send(comptroller.priceOracle, 'setUnderlyingPrice', [cToken._address, price]); } if (opts.collateralFactor) { const factor = etherMantissa(opts.collateralFactor); - await send(comptroller.methods._setCollateralFactor(cToken._address, factor)); + await send(comptroller, '_setCollateralFactor', [cToken._address, factor]); } return Object.assign(cToken, { name, symbol, underlying, comptroller, interestRateModel }); diff --git a/tests/Utils/EIP712.js b/tests/Utils/EIP712.js new file mode 100644 index 000000000..e95687f14 --- /dev/null +++ b/tests/Utils/EIP712.js @@ -0,0 +1,122 @@ +// Based on https://github.com/ethereum/EIPs/blob/master/assets/eip-712/Example.js +const ethUtil = require('ethereumjs-util'); +const abi = require('ethereumjs-abi'); + +// Recursively finds all the dependencies of a type +function dependencies(primaryType, found = [], types = {}) { + if (found.includes(primaryType)) { + return found; + } + if (types[primaryType] === undefined) { + return found; + } + found.push(primaryType); + for (let field of types[primaryType]) { + for (let dep of dependencies(field.type, found)) { + if (!found.includes(dep)) { + found.push(dep); + } + } + } + return found; +} + +function encodeType(primaryType, types = {}) { + // Get dependencies primary first, then alphabetical + let deps = dependencies(primaryType); + deps = deps.filter(t => t != primaryType); + deps = [primaryType].concat(deps.sort()); + + // Format as a string with fields + let result = ''; + for (let type of deps) { + if (!types[type]) + throw new Error(`Type '${type}' not defined in types (${JSON.stringify(types)})`); + result += `${type}(${types[type].map(({ name, type }) => `${type} ${name}`).join(',')})`; + } + return result; +} + +function typeHash(primaryType, types = {}) { + return ethUtil.keccak256(encodeType(primaryType, types)); +} + +function encodeData(primaryType, data, types = {}) { + let encTypes = []; + let encValues = []; + + // Add typehash + encTypes.push('bytes32'); + encValues.push(typeHash(primaryType, types)); + + // Add field contents + for (let field of types[primaryType]) { + let value = data[field.name]; + if (field.type == 'string' || field.type == 'bytes') { + encTypes.push('bytes32'); + value = ethUtil.keccak256(value); + encValues.push(value); + } else if (types[field.type] !== undefined) { + encTypes.push('bytes32'); + value = ethUtil.keccak256(encodeData(field.type, value, types)); + encValues.push(value); + } else if (field.type.lastIndexOf(']') === field.type.length - 1) { + throw 'TODO: Arrays currently unimplemented in encodeData'; + } else { + encTypes.push(field.type); + encValues.push(value); + } + } + + return abi.rawEncode(encTypes, encValues); +} + +function domainSeparator(domain) { + const types = { + EIP712Domain: [ + {name: 'name', type: 'string'}, + {name: 'version', type: 'string'}, + {name: 'chainId', type: 'uint256'}, + {name: 'verifyingContract', type: 'address'}, + {name: 'salt', type: 'bytes32'} + ].filter(a => domain[a.name]) + }; + return ethUtil.keccak256(encodeData('EIP712Domain', domain, types)); +} + +function structHash(primaryType, data, types = {}) { + return ethUtil.keccak256(encodeData(primaryType, data, types)); +} + +function digestToSign(domain, primaryType, message, types = {}) { + return ethUtil.keccak256( + Buffer.concat([ + Buffer.from('1901', 'hex'), + domainSeparator(domain), + structHash(primaryType, message, types), + ]) + ); +} + +function sign(domain, primaryType, message, types = {}, privateKey) { + const digest = digestToSign(domain, primaryType, message, types); + return { + domain, + primaryType, + message, + types, + digest, + ...ethUtil.ecsign(digest, ethUtil.toBuffer(privateKey)) + }; +} + + +module.exports = { + encodeType, + typeHash, + encodeData, + domainSeparator, + structHash, + digestToSign, + sign +}; diff --git a/tests/Utils/Ethereum.js b/tests/Utils/Ethereum.js index ec16a5e5d..c8c725751 100644 --- a/tests/Utils/Ethereum.js +++ b/tests/Utils/Ethereum.js @@ -3,28 +3,6 @@ const BigNum = require('bignumber.js'); const ethers = require('ethers'); -async function asIfTesting(env = global) { - // XXXS This obviously will not work - // Use this from a nodejs-repl, or something, to get a setup like tests have - const Config = require('truffle-config'); - const Resolver = require('truffle-resolver'); - const TestSource = require('truffle-core/lib/testing/testsource'); - const TestResolver = require('truffle-core/lib/testing/testresolver'); - const config = Config.detect(); - config.network = 'development'; - config.resolver = new Resolver(config); - - const test_source = new TestSource(config); - const test_resolver = new TestResolver(config.resolver, test_source, config.contracts_build_directory); - - env.web3 = new (require('web3'))(config.provider); - env.accounts = await env.web3.eth.getAccounts(); - env.artifacts = test_resolver; - env.artifacts.reset = () => Object.keys(env.artifacts.require_cache).map(k => delete env.artifacts.require_cache[k]); - env.config = config; - return env; -} - function address(n) { return `0x${n.toString(16).padStart(40, '0')}`; } @@ -60,38 +38,71 @@ function etherUnsigned(num) { } function getContractDefaults() { - return {gas: 20000000, gasPrice: 20000}; + return { gas: 20000000, gasPrice: 20000 }; } function keccak256(values) { return ethers.utils.keccak256(values); } +function unlockedAccounts() { + let provider = web3.currentProvider; + if (provider._providers) + provider = provider._providers.find(p => p._ganacheProvider)._ganacheProvider; + return provider.manager.state.unlocked_accounts; +} + +function unlockedAccount(a) { + return unlockedAccounts()[a.toLowerCase()]; +} + +async function mineBlock() { + return rpc({ method: 'evm_mine' }); +} + +async function increaseTime(seconds) { + await rpc({ method: 'evm_increaseTime', params: [seconds] }); + return rpc({ method: 'evm_mine' }); +} + +async function setTime(seconds) { + await rpc({ method: 'evm_setTime', params: [new Date(seconds * 1000)] }); +} + +async function freezeTime(seconds) { + await rpc({ method: 'evm_freezeTime', params: [seconds] }); + return rpc({ method: 'evm_mine' }); +} + +async function advanceBlocks(blocks) { + let { result: num } = await rpc({ method: 'eth_blockNumber' }) + await rpc({ method: 'evm_mineBlockNumber', params: [blocks + parseInt(num)] }) +} + async function minerStart() { - return rpc({method: 'miner_start'}); + return rpc({ method: 'miner_start' }); } async function minerStop() { - return rpc({method: 'miner_stop'}); + return rpc({ method: 'miner_stop' }); } async function rpc(request) { - return new Promise((okay, fail) => saddle.web3.currentProvider.send(request, (err, res) => err ? fail(err) : okay(res))); + return new Promise((okay, fail) => web3.currentProvider.send(request, (err, res) => err ? fail(err) : okay(res))); } async function both(contract, method, args = [], opts = {}) { const reply = await call(contract, method, args, opts); const receipt = await send(contract, method, args, opts); - return {reply, receipt}; + return { reply, receipt }; } async function sendFallback(contract, opts = {}) { - const receipt = await web3.eth.sendTransaction({to: contract._address, ...Object.assign(getContractDefaults(), opts)}); - return Object.assign(receipt, {events: receipt.logs}); + const receipt = await web3.eth.sendTransaction({ to: contract._address, ...Object.assign(getContractDefaults(), opts) }); + return Object.assign(receipt, { events: receipt.logs }); } module.exports = { - asIfTesting, address, bigNumberify, encodeParameters, @@ -100,10 +111,17 @@ module.exports = { etherMantissa, etherUnsigned, keccak256, + unlockedAccounts, + unlockedAccount, + advanceBlocks, + freezeTime, + increaseTime, + mineBlock, minerStart, minerStop, rpc, + setTime, both, sendFallback diff --git a/truffle.js b/truffle.js deleted file mode 100644 index 9ad187e5e..000000000 --- a/truffle.js +++ /dev/null @@ -1,108 +0,0 @@ -"use strict"; - -const Web3 = require("web3"); -const fs = require('fs'); -const path = require('path'); - -const networks = { - rinkeby: 4, - kovan: 42, - ropsten: 3, - mainnet: 1, - goerli: 5 -}; - -const infuraNetworks = Object.entries(networks).reduce((networks, [network, networkId]) => { - return { - ...networks, - [network]: { - provider: new Web3.providers.HttpProvider(`https://${network}.infura.io/`), - network_id: networkId - } - } - - if (!networkProviderUrl) { // Not found from env nor from file, default to infura - networkProviderUrl = `https://${network}.infura.io/v3/49d02fbc2d3d444e8f1a4487ed424753`; - } - - if (privateKeyHex) { - const provider = new WalletProvider(privateKeyHex, networkProviderUrl); - const gas = 6600000; - const gasPrice = 15000000000; // 15 gwei - provider.opts = {gas, gasPrice}; - process.env[`${network}_opts`] = JSON.stringify(provider.opts); - - return { - ...networks, - [network]: { - host: "localhost", - port: 8545, - network_id: "*", - gas: gas, - gasPrice: gasPrice, - provider, - } - }; - } else { - return networks; - } -}, {}); - -let mochaOptions = { - reporter: "mocha-multi-reporters", - reporterOptions: { - configFile: "reporterConfig.json" - } -}; - -const development = { - host: "localhost", - port: 8545, - network_id: "*", - gas: 6700000, - gasPrice: 20000, -} - -const coverage = { // See example coverage settings at https://github.com/sc-forks/solidity-coverage - host: "localhost", - network_id: "*", - gas: 0xffffffffff, - gasPrice: 0x01, - port: 8555 -}; - -const test = { - host: "localhost", - port: 8545, - network_id: "*", - gas: 20000000, - gasPrice: 20000 -}; - -// configuration for scenario web3 contract defaults -process.env[`development_opts`] = JSON.stringify(development); -process.env[`coverage_opts`] = JSON.stringify(coverage); -process.env[`test_opts`] = JSON.stringify(test); - -module.exports = { - networks: { - ...infuraNetworks, - development, - coverage, - test - }, - compilers: { - solc: { - version: "0.5.12", - settings: { - optimizer: { - enabled: true - } - } - } - }, - plugins: ["solidity-coverage"], - mocha: mochaOptions, - contracts_build_directory: process.env.CONTRACTS_BUILD_DIRECTORY || undefined, - build_directory: process.env.BUILD_DIRECTORY || undefined -}; diff --git a/yarn.lock b/yarn.lock index 5cc1e8ffc..5c510293d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13,6 +13,17 @@ lodash "^4.17.11" valid-url "^1.0.9" +"@0x/assert@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@0x/assert/-/assert-3.0.3.tgz#18f92aa4e5d87824259b3ddd1cc1882b59f29e8e" + integrity sha512-Yvu701gtykj44ggWe66E2sje4v9odBrO9uAoPwEj3EfN7Kk/AXJEthyWSZVGXQvj7MaFlAElq1Uw8VfzF/gtqA== + dependencies: + "@0x/json-schemas" "^5.0.3" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + lodash "^4.17.11" + valid-url "^1.0.9" + "@0x/dev-utils@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@0x/dev-utils/-/dev-utils-3.0.0.tgz#c14a7ac03c9ca03a3063b700c933df70628a5031" @@ -32,6 +43,25 @@ lodash "^4.17.11" web3-provider-engine "14.0.6" +"@0x/dev-utils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@0x/dev-utils/-/dev-utils-3.1.0.tgz#a343f36aa819b2e748fe9946645fd959ebff843c" + integrity sha512-Xy2ub6gxsIu5MsWdmFpxsMaIg5o33lRwzeZshdfPLqGKx6GVM2Kk4GTWUiBrukpoUA8LvyV5nW8vzOrZm0UJfA== + dependencies: + "@0x/subproviders" "^6.0.3" + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + "@0x/web3-wrapper" "^7.0.3" + "@types/web3-provider-engine" "^14.0.0" + chai "^4.0.1" + chai-as-promised "^7.1.0" + chai-bignumber "^3.0.0" + dirty-chai "^2.0.1" + ethereum-types "^3.0.0" + lodash "^4.17.11" + web3-provider-engine "14.0.6" + "@0x/json-schemas@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-5.0.0.tgz#95c29fb7977adb19b9f0127122ec90efb38651ec" @@ -42,6 +72,16 @@ jsonschema "^1.2.0" lodash.values "^4.3.0" +"@0x/json-schemas@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@0x/json-schemas/-/json-schemas-5.0.3.tgz#8804d20eb13f2551146c399b83cb5e1597205bee" + integrity sha512-B8mAyEb2bPrWHdaIpQjODGRmiH+gCAxadppWibpa36fkHF+4c9FNJCFqRE98Eg5w/IYTOj7JkrsRnkA3Ux1ltQ== + dependencies: + "@0x/typescript-typings" "^5.0.1" + "@types/node" "*" + jsonschema "^1.2.0" + lodash.values "^4.3.0" + "@0x/sol-compiler@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@0x/sol-compiler/-/sol-compiler-4.0.0.tgz#387bd6933c340124d0d2e78d5aa4a134840e3630" @@ -69,6 +109,33 @@ web3-eth-abi "^1.0.0-beta.24" yargs "^10.0.3" +"@0x/sol-compiler@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@0x/sol-compiler/-/sol-compiler-4.0.3.tgz#8e44c352071d2fff5022807cffd011ff274a8857" + integrity sha512-Aj8PQz5yOqo57ciHeL3Da4v4Dkn+JB/t+gBaqIHkrk7IvJ/d/AjPB3LKpGmqRT/AHVljYt3XbWokKxI7gZYafQ== + dependencies: + "@0x/assert" "^3.0.3" + "@0x/json-schemas" "^5.0.3" + "@0x/sol-resolver" "^3.0.2" + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + "@0x/web3-wrapper" "^7.0.3" + "@types/yargs" "^11.0.0" + chalk "^2.3.0" + chokidar "^3.0.2" + ethereum-types "^3.0.0" + ethereumjs-util "^5.1.1" + lodash "^4.17.11" + mkdirp "^0.5.1" + pluralize "^7.0.0" + require-from-string "^2.0.1" + semver "5.5.0" + solc "^0.5.5" + source-map-support "^0.5.0" + web3-eth-abi "^1.0.0-beta.24" + yargs "^10.0.3" + "@0x/sol-resolver@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@0x/sol-resolver/-/sol-resolver-3.0.0.tgz#0b67ce0b39aa571d0ce24f3401f9315005dbe8ee" @@ -78,6 +145,42 @@ "@0x/typescript-typings" "^5.0.0" lodash "^4.17.11" +"@0x/sol-resolver@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@0x/sol-resolver/-/sol-resolver-3.0.2.tgz#2f89df2f049d5ea8501ee1fc2a1d0866a0b3c761" + integrity sha512-+FseY6gmifzrrtnHt70hNezmCDavVd69MqT/r2uyxXtgz2F3oegkPBTBYo4/sxrdiSA+2tYFcqGHNiMDtx6ELA== + dependencies: + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + lodash "^4.17.11" + +"@0x/sol-tracing-utils@^7.0.3": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@0x/sol-tracing-utils/-/sol-tracing-utils-7.0.3.tgz#33de0c07466b1faed2e7b3c9ffdf7fe3fd24315a" + integrity sha512-7LLAb+7EYIuT92xb84Ta560vbSs7EnbomgWztDeKK9HvQ13rRo0XPeu+TlsTsVbgPxVDba1rw30Ax0r9vmLdJw== + dependencies: + "@0x/dev-utils" "^3.1.0" + "@0x/sol-compiler" "^4.0.3" + "@0x/sol-resolver" "^3.0.2" + "@0x/subproviders" "^6.0.3" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + "@0x/web3-wrapper" "^7.0.3" + "@types/solidity-parser-antlr" "^0.2.3" + chalk "^2.3.0" + ethereum-types "^3.0.0" + ethereumjs-util "^5.1.1" + ethers "~4.0.4" + glob "^7.1.2" + istanbul "^0.4.5" + lodash "^4.17.11" + loglevel "^1.6.1" + mkdirp "^0.5.1" + rimraf "^2.6.2" + semaphore-async-await "^1.5.1" + solc "^0.5.5" + solidity-parser-antlr "^0.4.2" + "@0x/subproviders@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-6.0.0.tgz#9d4b32e22c9e71f450b0f6d00978ca6b1129c0b3" @@ -106,6 +209,34 @@ optionalDependencies: "@ledgerhq/hw-transport-node-hid" "^4.3.0" +"@0x/subproviders@^6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@0x/subproviders/-/subproviders-6.0.3.tgz#5d88dc15efab2df6463de5e48706396645c2b5ed" + integrity sha512-sPw9I1rv/JMXxkf6c7xZVbwSMB0RizsuqG45NSHaIwPoWPh3/+IkmIgRv4M9nWignDu/q+F8v0D1ww3aIGMX0Q== + dependencies: + "@0x/assert" "^3.0.3" + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + "@0x/web3-wrapper" "^7.0.3" + "@ledgerhq/hw-app-eth" "^4.3.0" + "@ledgerhq/hw-transport-u2f" "4.24.0" + "@types/hdkey" "^0.7.0" + "@types/web3-provider-engine" "^14.0.0" + bip39 "^2.5.0" + bn.js "^4.11.8" + ethereum-types "^3.0.0" + ethereumjs-tx "^1.3.5" + ethereumjs-util "^5.1.1" + ganache-core "^2.6.0" + hdkey "^0.7.1" + json-rpc-error "2.0.0" + lodash "^4.17.11" + semaphore-async-await "^1.5.1" + web3-provider-engine "14.0.6" + optionalDependencies: + "@ledgerhq/hw-transport-node-hid" "^4.3.0" + "@0x/types@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@0x/types/-/types-3.0.0.tgz#3cc815094fb9b73d3bc6bbe29735af982a0f519c" @@ -115,6 +246,15 @@ bignumber.js "~9.0.0" ethereum-types "^3.0.0" +"@0x/types@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@0x/types/-/types-3.1.1.tgz#b20ca76e9516201b9c27621f941696f41ffc9fac" + integrity sha512-+TQmzH+chWeDWpc+Lce3/q4X2UEHFfAwZcWrV7tEQ5EVAJvph7gpKawRW2XRsmHeQDSHBmiiBdSZ8Rc/OAjvlQ== + dependencies: + "@types/node" "*" + bignumber.js "~9.0.0" + ethereum-types "^3.0.0" + "@0x/typescript-typings@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@0x/typescript-typings/-/typescript-typings-5.0.0.tgz#54bb89fe78216cd9a1a737dead329ad1cb05bd94" @@ -126,6 +266,17 @@ ethereum-types "^3.0.0" popper.js "1.14.3" +"@0x/typescript-typings@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@0x/typescript-typings/-/typescript-typings-5.0.1.tgz#031e291cc506ecd26d3fe10adf618f4f51ff1510" + integrity sha512-zSA39URHkFnL16WD30VMa8wL8va0Khpx9APHffdPWpBOr9SUPdADtae5HO4iNCYvSgo3mrtPlKID2nIqREIHOQ== + dependencies: + "@types/bn.js" "^4.11.0" + "@types/react" "*" + bignumber.js "~9.0.0" + ethereum-types "^3.0.0" + popper.js "1.14.3" + "@0x/utils@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-5.0.0.tgz#4b0acff872c9b158c9293849f8bd2bb62f17b8c5" @@ -145,6 +296,25 @@ js-sha3 "^0.7.0" lodash "^4.17.11" +"@0x/utils@^5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@0x/utils/-/utils-5.1.2.tgz#defc545a42343729c9bf7252f0b7413d7ba47694" + integrity sha512-p5BZxs3krXwkjBY8hrmGLkLp4BziVQ6z4tRFIcWSR8C4ptAlZ4QfFL1zqK6O6/rbOsGj+JSIpqRRrxJr2Is6LQ== + dependencies: + "@0x/types" "^3.1.1" + "@0x/typescript-typings" "^5.0.1" + "@types/node" "*" + abortcontroller-polyfill "^1.1.9" + bignumber.js "~9.0.0" + chalk "^2.3.0" + detect-node "2.0.3" + ethereum-types "^3.0.0" + ethereumjs-util "^5.1.1" + ethers "~4.0.4" + isomorphic-fetch "2.2.1" + js-sha3 "^0.7.0" + lodash "^4.17.11" + "@0x/web3-wrapper@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.0.0.tgz#323e7931f067f7f9ed88cca30bd1ed1f7505fc48" @@ -159,6 +329,20 @@ ethers "~4.0.4" lodash "^4.17.11" +"@0x/web3-wrapper@^7.0.3": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@0x/web3-wrapper/-/web3-wrapper-7.0.3.tgz#b6015a820909b36e00115047ca1c0c693d56fff8" + integrity sha512-ocUhIz04KORg1Hu3j+w/pKgJ3VF6WiFhwN0VbZkMBggK2eIAYsb3VncLY5hl9g63bTxSk0l3GI5WFgGuxMMn6Q== + dependencies: + "@0x/assert" "^3.0.3" + "@0x/json-schemas" "^5.0.3" + "@0x/typescript-typings" "^5.0.1" + "@0x/utils" "^5.1.2" + ethereum-types "^3.0.0" + ethereumjs-util "^5.1.1" + ethers "~4.0.4" + lodash "^4.17.11" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" @@ -166,15 +350,15 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@^7.1.0", "@babel/core@^7.1.6": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.5.tgz#ae1323cd035b5160293307f50647e83f8ba62f7e" - integrity sha512-M42+ScN4+1S9iB6f+TL7QBpoQETxbclx+KNoKJABghnKYE+fMzSGqst0BZJc8CpI625bwPwYgUyRvxZ+0mZzpw== +"@babel/core@^7.1.0": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" + integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" + "@babel/generator" "^7.7.7" "@babel/helpers" "^7.7.4" - "@babel/parser" "^7.7.5" + "@babel/parser" "^7.7.7" "@babel/template" "^7.7.4" "@babel/traverse" "^7.7.4" "@babel/types" "^7.7.4" @@ -186,77 +370,16 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.4.0", "@babel/generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.4.tgz#db651e2840ca9aa66f327dcec1dc5f5fa9611369" - integrity sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg== +"@babel/generator@^7.4.0", "@babel/generator@^7.7.4", "@babel/generator@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.7.tgz#859ac733c44c74148e1a72980a64ec84b85f4f45" + integrity sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ== dependencies: "@babel/types" "^7.7.4" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-annotate-as-pure@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz#bb3faf1e74b74bd547e867e48f551fa6b098b6ce" - integrity sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og== - dependencies: - "@babel/types" "^7.7.4" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz#5f73f2b28580e224b5b9bd03146a4015d6217f5f" - integrity sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helper-call-delegate@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz#621b83e596722b50c0066f9dc37d3232e461b801" - integrity sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA== - dependencies: - "@babel/helper-hoist-variables" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helper-create-class-features-plugin@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.4.tgz#fce60939fd50618610942320a8d951b3b639da2d" - integrity sha512-l+OnKACG4uiDHQ/aJT8dwpR+LhCJALxL0mJ6nzjB25e5IPwqV1VOsY7ah6UB1DG+VOXAIMtuC54rFJGiHkxjgA== - dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-member-expression-to-functions" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - -"@babel/helper-create-regexp-features-plugin@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz#6d5762359fd34f4da1500e4cff9955b5299aaf59" - integrity sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A== - dependencies: - "@babel/helper-regex" "^7.4.4" - regexpu-core "^4.6.0" - -"@babel/helper-define-map@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz#2841bf92eb8bd9c906851546fe6b9d45e162f176" - integrity sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg== - dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/types" "^7.7.4" - lodash "^4.17.13" - -"@babel/helper-explode-assignable-expression@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz#fa700878e008d85dc51ba43e9fb835cddfe05c84" - integrity sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg== - dependencies: - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - "@babel/helper-function-name@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" @@ -273,20 +396,6 @@ dependencies: "@babel/types" "^7.7.4" -"@babel/helper-hoist-variables@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz#612384e3d823fdfaaf9fce31550fe5d4db0f3d12" - integrity sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ== - dependencies: - "@babel/types" "^7.7.4" - -"@babel/helper-member-expression-to-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz#356438e2569df7321a8326644d4b790d2122cb74" - integrity sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw== - dependencies: - "@babel/types" "^7.7.4" - "@babel/helper-module-imports@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz#e5a92529f8888bf319a6376abfbd1cebc491ad91" @@ -294,66 +403,11 @@ dependencies: "@babel/types" "^7.7.4" -"@babel/helper-module-transforms@^7.7.4", "@babel/helper-module-transforms@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz#d044da7ffd91ec967db25cd6748f704b6b244835" - integrity sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw== - dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-simple-access" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz#034af31370d2995242aa4df402c3b7794b2dcdf2" - integrity sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg== - dependencies: - "@babel/types" "^7.7.4" - "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== -"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" - integrity sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz#c68c2407350d9af0e061ed6726afb4fff16d0234" - integrity sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-wrap-function" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helper-replace-supers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz#3c881a6a6a7571275a72d82e6107126ec9e2cdd2" - integrity sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/helper-simple-access@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz#a169a0adb1b5f418cfc19f22586b2ebf58a9a294" - integrity sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A== - dependencies: - "@babel/template" "^7.7.4" - "@babel/types" "^7.7.4" - "@babel/helper-split-export-declaration@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" @@ -361,16 +415,6 @@ dependencies: "@babel/types" "^7.7.4" -"@babel/helper-wrap-function@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz#37ab7fed5150e22d9d7266e830072c0cdd8baace" - integrity sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg== - dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - "@babel/helpers@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" @@ -389,331 +433,18 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4", "@babel/parser@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.5.tgz#cbf45321619ac12d83363fcf9c94bb67fa646d71" - integrity sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig== +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4", "@babel/parser@^7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.7.tgz#1b886595419cf92d811316d5b715a53ff38b4937" + integrity sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw== -"@babel/plugin-proposal-async-generator-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz#0351c5ac0a9e927845fffd5b82af476947b7ce6d" - integrity sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.7.4" - "@babel/plugin-syntax-async-generators" "^7.7.4" - -"@babel/plugin-proposal-class-properties@^7.1.0": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.4.tgz#2f964f0cb18b948450362742e33e15211e77c2ba" - integrity sha512-EcuXeV4Hv1X3+Q1TsuOmyyxeTRiSqurGJ26+I/FW1WbymmRRapVORm6x1Zl3iDIHyRxEs+VXWp6qnlcfcJSbbw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-proposal-dynamic-import@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz#dde64a7f127691758cbfed6cf70de0fa5879d52d" - integrity sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-dynamic-import" "^7.7.4" - -"@babel/plugin-proposal-json-strings@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz#7700a6bfda771d8dc81973249eac416c6b4c697d" - integrity sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-json-strings" "^7.7.4" - -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.4.tgz#cc57849894a5c774214178c8ab64f6334ec8af71" - integrity sha512-rnpnZR3/iWKmiQyJ3LKJpSwLDcX/nSXhdLk4Aq/tXOApIvyu7qoabrige0ylsAJffaUC51WiBu209Q0U+86OWQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" - -"@babel/plugin-proposal-optional-catch-binding@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz#ec21e8aeb09ec6711bc0a39ca49520abee1de379" - integrity sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" - -"@babel/plugin-proposal-unicode-property-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.4.tgz#7c239ccaf09470dbe1d453d50057460e84517ebb" - integrity sha512-cHgqHgYvffluZk85dJ02vloErm3Y6xtH+2noOBOJ2kXOJH3aVCDnj5eR/lVNlTnYu4hndAPJD3rTFjW3qee0PA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-async-generators@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz#331aaf310a10c80c44a66b238b6e49132bd3c889" - integrity sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-dynamic-import@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz#29ca3b4415abfe4a5ec381e903862ad1a54c3aec" - integrity sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-flow@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.4.tgz#6d91b59e1a0e4c17f36af2e10dd64ef220919d7b" - integrity sha512-2AMAWl5PsmM5KPkB22cvOkUyWk6MjUaqhHNU5nSPUl/ns3j5qLfw2SuYP5RbVZ0tfLvePr4zUScbICtDP2CUNw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-json-strings@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz#86e63f7d2e22f9e27129ac4e83ea989a382e86cc" - integrity sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.7.4": +"@babel/plugin-syntax-object-rest-spread@^7.0.0": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-optional-catch-binding@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz#a3e38f59f4b6233867b4a92dcb0ee05b2c334aa6" - integrity sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-top-level-await@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz#bd7d8fa7b9fee793a36e4027fd6dd1aa32f946da" - integrity sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-typescript@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.7.4.tgz#5d037ffa10f3b25a16f32570ebbe7a8c2efa304b" - integrity sha512-77blgY18Hud4NM1ggTA8xVT/dBENQf17OpiToSa2jSmEY3fWXD2jwrdVlO4kq5yzUTeF15WSQ6b4fByNvJcjpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-arrow-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz#76309bd578addd8aee3b379d809c802305a98a12" - integrity sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-async-to-generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz#694cbeae6d613a34ef0292713fa42fb45c4470ba" - integrity sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg== - dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-remap-async-to-generator" "^7.7.4" - -"@babel/plugin-transform-block-scoped-functions@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz#d0d9d5c269c78eaea76227ace214b8d01e4d837b" - integrity sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-block-scoping@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz#200aad0dcd6bb80372f94d9e628ea062c58bf224" - integrity sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - lodash "^4.17.13" - -"@babel/plugin-transform-classes@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz#c92c14be0a1399e15df72667067a8f510c9400ec" - integrity sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-define-map" "^7.7.4" - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-optimise-call-expression" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" - "@babel/helper-split-export-declaration" "^7.7.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz#e856c1628d3238ffe12d668eb42559f79a81910d" - integrity sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-destructuring@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz#2b713729e5054a1135097b6a67da1b6fe8789267" - integrity sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-dotall-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.4.tgz#f7ccda61118c5b7a2599a72d5e3210884a021e96" - integrity sha512-mk0cH1zyMa/XHeb6LOTXTbG7uIJ8Rrjlzu91pUx/KS3JpcgaTDwMS8kM+ar8SLOvlL2Lofi4CGBAjCo3a2x+lw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-duplicate-keys@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz#3d21731a42e3f598a73835299dd0169c3b90ac91" - integrity sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-exponentiation-operator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz#dd30c0191e3a1ba19bcc7e389bdfddc0729d5db9" - integrity sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-flow-strip-types@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.7.4.tgz#cc73f85944782df1d77d80977bc097920a8bf31a" - integrity sha512-w9dRNlHY5ElNimyMYy0oQowvQpwt/PRHI0QS98ZJCTZU2bvSnKXo5zEiD5u76FBPigTm8TkqzmnUTg16T7qbkA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.7.4" - -"@babel/plugin-transform-for-of@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz#248800e3a5e507b1f103d8b4ca998e77c63932bc" - integrity sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-function-name@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz#75a6d3303d50db638ff8b5385d12451c865025b1" - integrity sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g== - dependencies: - "@babel/helper-function-name" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz#27fe87d2b5017a2a5a34d1c41a6b9f6a6262643e" - integrity sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-member-expression-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz#aee127f2f3339fc34ce5e3055d7ffbf7aa26f19a" - integrity sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-modules-amd@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz#39e0fb717224b59475b306402bb8eedab01e729c" - integrity sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ== - dependencies: - "@babel/helper-module-transforms" "^7.7.5" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-commonjs@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz#1d27f5eb0bcf7543e774950e5b2fa782e637b345" - integrity sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q== - dependencies: - "@babel/helper-module-transforms" "^7.7.5" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.7.4" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-systemjs@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz#cd98152339d3e763dfe838b7d4273edaf520bb30" - integrity sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw== - dependencies: - "@babel/helper-hoist-variables" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-umd@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz#1027c355a118de0aae9fee00ad7813c584d9061f" - integrity sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw== - dependencies: - "@babel/helper-module-transforms" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz#fb3bcc4ee4198e7385805007373d6b6f42c98220" - integrity sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - -"@babel/plugin-transform-new-target@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz#4a0753d2d60639437be07b592a9e58ee00720167" - integrity sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-object-super@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz#48488937a2d586c0148451bf51af9d7dda567262" - integrity sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-replace-supers" "^7.7.4" - -"@babel/plugin-transform-parameters@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.4.tgz#da4555c97f39b51ac089d31c7380f03bca4075ce" - integrity sha512-VJwhVePWPa0DqE9vcfptaJSzNDKrWU/4FbYCjZERtmqEs05g3UMXnYMZoXja7JAJ7Y7sPZipwm/pGApZt7wHlw== - dependencies: - "@babel/helper-call-delegate" "^7.7.4" - "@babel/helper-get-function-arity" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-property-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz#2388d6505ef89b266103f450f9167e6bd73f98c2" - integrity sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-regenerator@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz#3a8757ee1a2780f390e89f246065ecf59c26fce9" - integrity sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw== - dependencies: - regenerator-transform "^0.14.0" - -"@babel/plugin-transform-reserved-words@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz#6a7cf123ad175bb5c69aec8f6f0770387ed3f1eb" - integrity sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-runtime@^7.5.5": version "7.7.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz#4f2b548c88922fb98ec1c242afd4733ee3e12f61" @@ -724,143 +455,12 @@ resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz#74a0a9b2f6d67a684c6fbfd5f0458eb7ba99891e" - integrity sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q== +"@babel/runtime@^7.3.1": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.3.tgz#0811944f73a6c926bb2ad35e918dcc1bfab279f1" + integrity sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-spread@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz#aa673b356fe6b7e70d69b6e33a17fef641008578" - integrity sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-sticky-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz#ffb68c05090c30732076b1285dc1401b404a123c" - integrity sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-regex" "^7.0.0" - -"@babel/plugin-transform-template-literals@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz#1eb6411736dd3fe87dbd20cc6668e5121c17d604" - integrity sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typeof-symbol@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz#3174626214f2d6de322882e498a38e8371b2140e" - integrity sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-transform-typescript@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.4.tgz#2974fd05f4e85c695acaf497f432342de9fc0636" - integrity sha512-X8e3tcPEKnwwPVG+vP/vSqEShkwODOEeyQGod82qrIuidwIrfnsGn11qPM1jBLF4MqguTXXYzm58d0dY+/wdpg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-typescript" "^7.7.4" - -"@babel/plugin-transform-unicode-regex@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz#a3c0f65b117c4c81c5b6484f2a5e7b95346b83ae" - integrity sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/preset-env@^7.1.6": - version "7.7.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.6.tgz#39ac600427bbb94eec6b27953f1dfa1d64d457b2" - integrity sha512-k5hO17iF/Q7tR9Jv8PdNBZWYW6RofxhnxKjBMc0nG4JTaWvOTiPoO/RLFwAKcA4FpmuBFm6jkoqaRJLGi0zdaQ== - dependencies: - "@babel/helper-module-imports" "^7.7.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.7.4" - "@babel/plugin-proposal-dynamic-import" "^7.7.4" - "@babel/plugin-proposal-json-strings" "^7.7.4" - "@babel/plugin-proposal-object-rest-spread" "^7.7.4" - "@babel/plugin-proposal-optional-catch-binding" "^7.7.4" - "@babel/plugin-proposal-unicode-property-regex" "^7.7.4" - "@babel/plugin-syntax-async-generators" "^7.7.4" - "@babel/plugin-syntax-dynamic-import" "^7.7.4" - "@babel/plugin-syntax-json-strings" "^7.7.4" - "@babel/plugin-syntax-object-rest-spread" "^7.7.4" - "@babel/plugin-syntax-optional-catch-binding" "^7.7.4" - "@babel/plugin-syntax-top-level-await" "^7.7.4" - "@babel/plugin-transform-arrow-functions" "^7.7.4" - "@babel/plugin-transform-async-to-generator" "^7.7.4" - "@babel/plugin-transform-block-scoped-functions" "^7.7.4" - "@babel/plugin-transform-block-scoping" "^7.7.4" - "@babel/plugin-transform-classes" "^7.7.4" - "@babel/plugin-transform-computed-properties" "^7.7.4" - "@babel/plugin-transform-destructuring" "^7.7.4" - "@babel/plugin-transform-dotall-regex" "^7.7.4" - "@babel/plugin-transform-duplicate-keys" "^7.7.4" - "@babel/plugin-transform-exponentiation-operator" "^7.7.4" - "@babel/plugin-transform-for-of" "^7.7.4" - "@babel/plugin-transform-function-name" "^7.7.4" - "@babel/plugin-transform-literals" "^7.7.4" - "@babel/plugin-transform-member-expression-literals" "^7.7.4" - "@babel/plugin-transform-modules-amd" "^7.7.5" - "@babel/plugin-transform-modules-commonjs" "^7.7.5" - "@babel/plugin-transform-modules-systemjs" "^7.7.4" - "@babel/plugin-transform-modules-umd" "^7.7.4" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.4" - "@babel/plugin-transform-new-target" "^7.7.4" - "@babel/plugin-transform-object-super" "^7.7.4" - "@babel/plugin-transform-parameters" "^7.7.4" - "@babel/plugin-transform-property-literals" "^7.7.4" - "@babel/plugin-transform-regenerator" "^7.7.5" - "@babel/plugin-transform-reserved-words" "^7.7.4" - "@babel/plugin-transform-shorthand-properties" "^7.7.4" - "@babel/plugin-transform-spread" "^7.7.4" - "@babel/plugin-transform-sticky-regex" "^7.7.4" - "@babel/plugin-transform-template-literals" "^7.7.4" - "@babel/plugin-transform-typeof-symbol" "^7.7.4" - "@babel/plugin-transform-unicode-regex" "^7.7.4" - "@babel/types" "^7.7.4" - browserslist "^4.6.0" - core-js-compat "^3.4.7" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.5.0" - -"@babel/preset-flow@^7.0.0": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.7.4.tgz#99c1349b6fd7132783196de181e6b32d0949427e" - integrity sha512-6LbUqcHD8BcRtXMOp5bc5nJeU8RlKh6q5U8TgZeCrf9ebBdW8Wyy5ujAUnbJfmzQ56Kkq5XtwErC/5+5RHyFYA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.7.4" - -"@babel/preset-typescript@^7.1.0": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.7.4.tgz#780059a78e6fa7f7a4c87f027292a86b31ce080a" - integrity sha512-rqrjxfdiHPsnuPur0jKrIIGQCIgoTWMTjlbWE69G4QJ6TIOVnnRnIJhUxNTL/VwDmEAVX08Tq3B1nirer5341w== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.7.4" - -"@babel/register@^7.0.0": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.7.4.tgz#45a4956471a9df3b012b747f5781cc084ee8f128" - integrity sha512-/fmONZqL6ZMl9KJUYajetCrID6m0xmL4odX7v+Xvoxcv0DdbP/oO0TWIeLUCHqczQ6L6njDMqmqHFy2cp3FFsA== - dependencies: - find-cache-dir "^2.0.0" - lodash "^4.17.13" - make-dir "^2.1.0" - pirates "^4.0.0" - source-map-support "^0.5.16" + regenerator-runtime "^0.13.2" "@babel/runtime@^7.5.5": version "7.7.6" @@ -1161,33 +761,12 @@ dependencies: "@ledgerhq/devices" "^4.78.0" "@ledgerhq/errors" "^4.78.0" - events "^3.0.0" - -"@ledgerhq/logs@^4.72.0": - version "4.72.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-4.72.0.tgz#43df23af013ad1135407e5cf33ca6e4c4c7708d5" - integrity sha512-o+TYF8vBcyySRsb2kqBDv/KMeme8a2nwWoG+lAWzbDmWfb2/MrVWYCVYDYvjXdSoI/Cujqy1i0gIDrkdxa9chA== - -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== - dependencies: - "@nodelib/fs.stat" "2.0.3" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + events "^3.0.0" -"@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== - dependencies: - "@nodelib/fs.scandir" "2.1.3" - fastq "^1.6.0" +"@ledgerhq/logs@^4.72.0": + version "4.72.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-4.72.0.tgz#43df23af013ad1135407e5cf33ca6e4c4c7708d5" + integrity sha512-o+TYF8vBcyySRsb2kqBDv/KMeme8a2nwWoG+lAWzbDmWfb2/MrVWYCVYDYvjXdSoI/Cujqy1i0gIDrkdxa9chA== "@sindresorhus/is@^0.14.0": version "0.14.0" @@ -1213,9 +792,9 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.0.tgz#f1ec1c104d1bb463556ecb724018ab788d0c172a" - integrity sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw== + version "7.6.1" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" + integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== dependencies: "@babel/types" "^7.0.0" @@ -1248,11 +827,6 @@ dependencies: "@types/node" "*" -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - "@types/ethereum-protocol@*": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/ethereum-protocol/-/ethereum-protocol-1.0.0.tgz#416e3827d5fdfa4658b0045b35a008747871b271" @@ -1260,20 +834,6 @@ dependencies: bignumber.js "7.2.1" -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - "@types/hdkey@^0.7.0": version "0.7.1" resolved "https://registry.yarnpkg.com/@types/hdkey/-/hdkey-0.7.1.tgz#9bc63ebbe96b107b277b65ea7a95442a677d0d61" @@ -1301,7 +861,14 @@ "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/minimatch@*", "@types/minimatch@^3.0.3": +"@types/jest@^24.0.15": + version "24.0.25" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.25.tgz#2aba377824ce040114aa906ad2cac2c85351360f" + integrity sha512-hnP1WpjN4KbGEK4dLayul6lgtys6FPz0UfxMeMQCv0M+sTnzN3ConfiO72jHgLxl119guHgI8gLqDOrRLsyp2g== + dependencies: + jest-diff "^24.3.0" + +"@types/minimatch@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== @@ -1496,39 +1063,11 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== - dependencies: - string-width "^3.0.0" - -ansi-colors@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" - integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== - dependencies: - ansi-wrap "^0.1.0" - ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" - integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== - dependencies: - type-fest "^0.8.1" - -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= - dependencies: - ansi-wrap "0.1.0" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -1544,11 +1083,6 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1561,20 +1095,7 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.0.tgz#5681f0dcf7ae5880a7841d8831c4724ed9cc0172" - integrity sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -ansi-wrap@0.1.0, ansi-wrap@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= - -any-promise@1.3.0, any-promise@^1.3.0: +any-promise@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= @@ -1603,23 +1124,11 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -append-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" - integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= - dependencies: - buffer-equal "^1.0.0" - aproba@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -1647,101 +1156,26 @@ arr-diff@^4.0.0: resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-filter@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" - integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= - dependencies: - make-iterator "^1.0.0" - arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== -arr-map@^2.0.0, arr-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" - integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= - dependencies: - make-iterator "^1.0.0" - arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= - -array-each@^1.0.0, array-each@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" - integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= - array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -array-initial@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" - integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= - dependencies: - array-slice "^1.0.0" - is-number "^4.0.0" - -array-last@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" - integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== - dependencies: - is-number "^4.0.0" - -array-slice@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" - integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== - -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - dependencies: - default-compare "^1.0.0" - get-value "^2.0.6" - kind-of "^5.0.2" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" @@ -1752,11 +1186,6 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -arrify@^1.0.0, arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -1788,27 +1217,12 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= -ast-types@0.11.7: - version "0.11.7" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.7.tgz#f318bf44e339db6a320be0009ded64ec1471f46c" - integrity sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw== - astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-done@^1.2.0, async-done@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" - integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.2" - process-nextick-args "^2.0.0" - stream-exhaust "^1.0.1" - -async-each@^1.0.0, async-each@^1.0.1: +async-each@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== @@ -1825,13 +1239,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async-settle@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" - integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= - dependencies: - async-done "^1.2.2" - async@1.x, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1910,11 +1317,6 @@ babel-core@^6.0.14, babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.7" -babel-core@^7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== - babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" @@ -2069,13 +1471,6 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== - dependencies: - object.assign "^4.1.0" - babel-plugin-istanbul@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" @@ -2445,21 +1840,6 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -bach@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" - integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= - dependencies: - arr-filter "^1.1.1" - arr-flatten "^1.0.1" - arr-map "^2.0.0" - array-each "^1.0.0" - array-initial "^1.0.0" - array-last "^1.1.1" - async-done "^1.2.2" - async-settle "^1.0.0" - now-and-later "^2.0.0" - backoff@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" @@ -2529,7 +1909,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== -bindings@^1.2.1, bindings@^1.3.1, bindings@^1.4.0, bindings@^1.5.0: +bindings@^1.2.1, bindings@^1.4.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -2611,20 +1991,6 @@ body-parser@1.19.0, body-parser@^1.16.0: raw-body "2.4.0" type-is "~1.6.17" -boxen@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-3.2.0.tgz#fbdff0de93636ab4450886b6ff45b92d098f45eb" - integrity sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^2.4.2" - cli-boxes "^2.2.0" - string-width "^3.0.0" - term-size "^1.2.0" - type-fest "^0.3.0" - widest-line "^2.0.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2642,7 +2008,7 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^2.3.1, braces@^2.3.2: +braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -2658,7 +2024,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -2755,14 +2121,12 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.6.0, browserslist@^4.8.0: - version "4.8.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.2.tgz#b45720ad5fbc8713b7253c20766f701c9a694289" - integrity sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA== +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: - caniuse-lite "^1.0.30001015" - electron-to-chromium "^1.3.322" - node-releases "^1.1.42" + fast-json-stable-stringify "2.x" bs58@^2.0.1: version "2.0.1" @@ -2815,17 +2179,12 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= -buffer-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= - buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -2909,20 +2268,6 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -2933,7 +2278,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001015: +caniuse-lite@^1.0.30000844: version "1.0.30001015" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001015.tgz#15a7ddf66aba786a71d99626bc8f2b91c6f0f5f0" integrity sha512-/xL2AbW/XWHNu1gnIrO8UitBGoFthcsDgU9VLK1/dpsoxbaD5LscHozKze05R6WLsBvLhqv78dAPozMFQBYLbQ== @@ -2994,19 +2339,6 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" @@ -3035,25 +2367,6 @@ chokidar@^1.6.0: optionalDependencies: fsevents "^1.0.0" -chokidar@^2.0.0: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - chokidar@^3.0.2: version "3.3.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" @@ -3097,32 +2410,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -cli-boxes@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" - integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -3141,11 +2428,6 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" @@ -3153,25 +2435,11 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - clone@2.1.2, clone@^2.0.0, clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3190,15 +2458,6 @@ coinstring@^2.0.0: bs58 "^2.0.1" create-hash "^1.1.1" -collection-map@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" - integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= - dependencies: - arr-map "^2.0.2" - for-own "^1.0.0" - make-iterator "^1.0.0" - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -3214,28 +2473,11 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - colors@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" @@ -3275,11 +2517,6 @@ commander@~2.8.1: dependencies: graceful-readlink ">= 1.0.0" -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -3290,7 +2527,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.5.1, concat-stream@^1.6.0: +concat-stream@^1.5.1: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -3300,18 +2537,6 @@ concat-stream@^1.5.1, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -configstore@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7" - integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ== - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" - console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -3329,7 +2554,7 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -3356,21 +2581,10 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-props@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" - integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== - dependencies: - each-props "^1.3.0" - is-plain-object "^2.0.1" - -core-js-compat@^3.4.7: - version "3.4.7" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.4.7.tgz#39f8080b1d92a524d6d90505c42b9c5c1eb90611" - integrity sha512-57+mgz/P/xsGdjwQYkwtBZR3LuISaxD1dEwVDtbk8xJMqAmwqaxLOvnNT7kdJ7jYE/NjNptyzXi+IQFMi/2fCw== - dependencies: - browserslist "^4.8.0" - semver "^6.3.0" +core-js-pure@^3.0.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.2.tgz#81f08059134d1c7318838024e1b8e866bcb1ddb3" + integrity sha512-PRasaCPjjCB65au2dMBPtxuIR6LM8MVNdbIbN57KxcDV1FAYQWlF0pqje/HC2sM6nm/s9KqSTkMTU75pozaghA== core-js@^2.4.0, core-js@^2.5.0: version "2.6.10" @@ -3429,14 +2643,6 @@ cross-fetch@^2.1.0, cross-fetch@^2.1.1: node-fetch "2.1.2" whatwg-fetch "2.0.4" -cross-spawn-async@^2.1.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" - integrity sha1-hF/wwINKPe2dFg2sptOQkGuyiMw= - dependencies: - lru-cache "^4.0.0" - which "^1.2.8" - cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -3457,15 +2663,6 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - crypto-browserify@3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -3483,11 +2680,6 @@ crypto-browserify@3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" @@ -3505,13 +2697,6 @@ csstype@^2.2.0: resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5" integrity sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ== -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -3564,15 +2749,7 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -decamelize-keys@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -3671,18 +2848,6 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -default-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" - integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== - dependencies: - kind-of "^5.0.2" - -default-resolution@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" - integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= - defer-to-connect@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.1.tgz#88ae694b93f67b81815a2c8c769aef6574ac8f2f" @@ -3765,11 +2930,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -3816,13 +2976,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - dirty-chai@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/dirty-chai/-/dirty-chai-2.0.1.tgz#6b2162ef17f7943589da840abc96e75bda01aff3" @@ -3840,13 +2993,6 @@ domexception@^1.0.1: dependencies: webidl-conversions "^4.0.2" -dot-prop@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== - dependencies: - is-obj "^1.0.0" - drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -3861,24 +3007,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -each-props@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" - integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== - dependencies: - is-plain-object "^2.0.1" - object.defaults "^1.1.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -3892,7 +3020,7 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.322, electron-to-chromium@^1.3.47: +electron-to-chromium@^1.3.47: version "1.3.322" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== @@ -3925,11 +3053,6 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -3972,7 +3095,7 @@ errno@~0.1.1: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -3980,21 +3103,21 @@ error-ex@^1.2.0, error-ex@^1.3.1: is-arrayish "^0.2.1" es-abstract@^1.17.0-next.1: - version "1.17.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0-next.1.tgz#94acc93e20b05a6e96dacb5ab2f1cb3a81fc2172" - integrity sha512-7MmGr03N7Rnuid6+wyhD9sHNE2n4tFSwExnU2lQl3lIo2ShXWGePY80zYaoMOmILWv57H0amMjZGHNzzGG70Rw== + version "1.17.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" + integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== dependencies: es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.1.4" - is-regex "^1.0.4" + is-callable "^1.1.5" + is-regex "^1.0.5" object-inspect "^1.7.0" object-keys "^1.1.1" object.assign "^4.1.0" - string.prototype.trimleft "^2.1.0" - string.prototype.trimright "^2.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" es-abstract@^1.5.0: version "1.16.3" @@ -4021,7 +3144,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: +es5-ext@^0.10.35, es5-ext@^0.10.50: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== @@ -4030,7 +3153,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: es6-symbol "~3.1.3" next-tick "~1.0.0" -es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: +es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -4047,16 +3170,6 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -es6-weak-map@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4080,9 +3193,9 @@ escodegen@1.8.x: source-map "~0.2.0" escodegen@^1.9.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" - integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== + version "1.12.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76" + integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -4101,7 +3214,7 @@ esprima@^3.1.3: resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= -esprima@^4.0.0, esprima@~4.0.0: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -4253,6 +3366,15 @@ eth-lib@0.2.7: elliptic "^6.4.0" xhr-request-promise "^0.1.2" +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + eth-lib@^0.1.26: version "0.1.29" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" @@ -4273,16 +3395,26 @@ 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.0.30: - version "0.0.30" - resolved "https://registry.yarnpkg.com/eth-saddle/-/eth-saddle-0.0.30.tgz#9be303d4155e6482c098664fef43f812034a23dc" - integrity sha512-0KR/yurqQX3ZgD7QJwHyAK51lPLIaPfMUvkeUUos08btz0UlblnR+p2IJ2hR3Nkemu8rnBiKH3y39o/rGkEJ6w== +eth-saddle@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/eth-saddle/-/eth-saddle-0.1.3.tgz#4a2f9f5cff05e23acc96a8f10d0aaab6f6c0faa2" + integrity sha512-EgxPDA7vCMvPjUAH+ZFp+ycbybO1e/wE2j0GxOeZvj/guGj2vIKAhc8Jl7qiTJvZ6aJVOuzPgipGeUHQtITpcg== dependencies: + "@0x/sol-tracing-utils" "^7.0.3" "@0x/subproviders" "^6.0.0" "@compound-finance/sol-coverage" "^4.0.0-r1" - truffle-hdwallet-provider "^1.0.10" + "@types/jest" "^24.0.15" + ethereumjs-tx "2.1.2" + ethereumjs-util "5.2.0" + ganache-core "^2.9.1" + jest "^24.9.0" + jest-cli "^24.9.0" + jest-junit "^6.4.0" + ts-jest "^24.0.2" + typescript "^3.5.1" web3 "^1.2.4" web3-provider-engine "^15.0.4" + web3-providers "^1.0.0-beta.55" yargs "^13.2.4" eth-sig-util@2.3.0: @@ -4379,7 +3511,7 @@ ethereumjs-abi@0.6.7: bn.js "^4.11.8" ethereumjs-util "^6.0.0" -ethereumjs-account@3.0.0: +ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== @@ -4397,14 +3529,14 @@ ethereumjs-account@^2.0.3: rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-block@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.0.tgz#8c6c3ab4a5eff0a16d9785fbeedbe643f4dbcbef" - integrity sha512-Ye+uG/L2wrp364Zihdlr/GfC3ft+zG8PdHcRtsBFNNH1CkOhxOwdB8friBU85n89uRZ9eIMAywCq0F4CwT1wAw== +ethereumjs-block@2.2.1, ethereumjs-block@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.1.tgz#5fba423305b40ab6486a6b81922e5312b2667c8d" + integrity sha512-ze8I1844m5oKZL7hiHuezRcPzqdi4Iv0ssqQyuRaJ9Je0/YCYfXobJHvNLnex2ETgs5JypicdtLYrCNWdgcLvg== dependencies: async "^2.0.1" ethereumjs-common "^1.1.0" - ethereumjs-tx "^1.2.2" + ethereumjs-tx "^2.1.1" ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" @@ -4419,39 +3551,60 @@ ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" -ethereumjs-block@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.1.tgz#5fba423305b40ab6486a6b81922e5312b2667c8d" - integrity sha512-ze8I1844m5oKZL7hiHuezRcPzqdi4Iv0ssqQyuRaJ9Je0/YCYfXobJHvNLnex2ETgs5JypicdtLYrCNWdgcLvg== +ethereumjs-block@^2.2.1, ethereumjs-block@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" + integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== dependencies: async "^2.0.1" - ethereumjs-common "^1.1.0" + ethereumjs-common "^1.5.0" ethereumjs-tx "^2.1.1" ethereumjs-util "^5.0.0" merkle-patricia-tree "^2.1.2" -ethereumjs-blockchain@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-3.4.0.tgz#92240da6ecd86b3d8d324df69510b381f26c966b" - integrity sha512-wxPSmt6EQjhbywkFbftKcb0qRFIZWocHMuDa8/AB4eWL/UPYalNcDyLaxYbrDytmhHid3Uu8G/tA3C/TxZBuOQ== +ethereumjs-blockchain@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.3.tgz#e013034633a30ad2006728e8e2b21956b267b773" + integrity sha512-0nJWbyA+Gu0ZKZr/cywMtB/77aS/4lOVsIKbgUN2sFQYscXO5rPbUfrEe7G2Zhjp86/a0VqLllemDSTHvx3vZA== dependencies: async "^2.6.1" ethashjs "~0.0.7" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "~6.0.0" + ethereumjs-block "~2.2.2" + ethereumjs-common "^1.5.0" + ethereumjs-util "~6.1.0" flow-stoplight "^1.0.0" level-mem "^3.0.1" lru-cache "^5.1.1" - safe-buffer "^5.1.2" + rlp "^2.2.2" semaphore "^1.1.0" -ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.1, ethereumjs-common@^1.3.2: +ethereumjs-common@1.4.0, ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.4.0.tgz#a940685f88f3c2587e4061630fe720b089c965b8" integrity sha512-ser2SAplX/YI5W2AnzU8wmSjKRy4KQd4uxInJ36BzjS3m18E/B9QedPUIresZN1CSEQb/RgNQ2gN7C/XbpTafA== -ethereumjs-tx@1.3.7, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.5, ethereumjs-tx@^1.3.7: +ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" + integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== + +ethereumjs-tx@2.1.1, ethereumjs-tx@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.1.tgz#7d204e2b319156c9bc6cec67e9529424a26e8ccc" + integrity sha512-QtVriNqowCFA19X9BCRPMgdVNJ0/gMBS91TQb1DfrhsbR748g4STwxZptFAwfqehMyrF8rDwB23w87PQwru0wA== + dependencies: + ethereumjs-common "^1.3.1" + ethereumjs-util "^6.0.0" + +ethereumjs-tx@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.5, ethereumjs-tx@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== @@ -4459,15 +3612,20 @@ ethereumjs-tx@1.3.7, ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^ ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" -ethereumjs-tx@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.1.tgz#7d204e2b319156c9bc6cec67e9529424a26e8ccc" - integrity sha512-QtVriNqowCFA19X9BCRPMgdVNJ0/gMBS91TQb1DfrhsbR748g4STwxZptFAwfqehMyrF8rDwB23w87PQwru0wA== +ethereumjs-util@5.2.0, ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" + integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== dependencies: - ethereumjs-common "^1.3.1" - ethereumjs-util "^6.0.0" + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.3" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" -ethereumjs-util@6.1.0: +ethereumjs-util@6.1.0, ethereumjs-util@~6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" integrity sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q== @@ -4491,19 +3649,6 @@ ethereumjs-util@^4.0.1, ethereumjs-util@^4.3.0: rlp "^2.0.0" secp256k1 "^3.0.1" -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" - integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "^0.1.3" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - ethereumjs-util@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" @@ -4517,36 +3662,26 @@ ethereumjs-util@^6.0.0: rlp "^2.2.3" secp256k1 "^3.0.1" -ethereumjs-util@~6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.0.0.tgz#f14841c182b918615afefd744207c7932c8536c0" - integrity sha512-E3yKUyl0Fs95nvTFQZe/ZSNcofhDzUsDlA5y2uoRmf1+Ec7gpGhNCsgKkZBRh7Br5op8mJcYF/jFbmjj909+nQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "^0.1.6" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - -ethereumjs-vm@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-3.0.0.tgz#70fea2964a6797724b0d93fe080f9984ad18fcdd" - integrity sha512-lNu+G/RWPRCrQM5s24MqgU75PEGiAhL4Ombw0ew6m08d+amsxf/vGAb98yDNdQqqHKV6JbwO/tCGfdqXGI6Cug== +ethereumjs-vm@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.1.1.tgz#ba6f565fd7788a0e7db494fa2096d45f9ea0802b" + integrity sha512-Bh2avDY9Hyon9TvJ/fmkdyd5JDnmTudLJ5oKhmTfXn0Jjq7UzP4YRNp7e5PWoWXSmdXAGXU9W0DXK5TV9Qy/NQ== dependencies: async "^2.1.2" async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-blockchain "^3.4.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" + core-js-pure "^3.0.1" + ethereumjs-account "^3.0.0" + ethereumjs-block "^2.2.1" + ethereumjs-blockchain "^4.0.2" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + ethereumjs-util "~6.1.0" fake-merkle-patricia-tree "^1.0.1" functional-red-black-tree "^1.0.1" merkle-patricia-tree "^2.3.2" rustbn.js "~0.2.0" safe-buffer "^5.1.1" + util.promisify "^1.0.0" ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: version "2.6.0" @@ -4611,7 +3746,7 @@ ethers@~4.0.4: uuid "2.0.1" xmlhttprequest "1.8.0" -ethjs-unit@0.1.6: +ethjs-unit@0.1.6, ethjs-unit@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= @@ -4619,7 +3754,7 @@ ethjs-unit@0.1.6: bn.js "4.11.6" number-to-bn "1.7.0" -ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: +ethjs-util@0.1.6, ethjs-util@^0.1.3: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== @@ -4627,7 +3762,12 @@ ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -eventemitter3@3.1.2: +eventemitter3@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" + integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + +eventemitter3@3.1.2, eventemitter3@^3.1.0: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== @@ -4650,18 +3790,6 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== -execa@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3" - integrity sha1-TrZGejaglfq7KXD/nV4/t7zm68M= - dependencies: - cross-spawn-async "^2.1.1" - is-stream "^1.1.0" - npm-run-path "^1.0.0" - object-assign "^4.0.1" - path-key "^1.0.0" - strip-eof "^1.0.0" - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -4688,21 +3816,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-2.1.0.tgz#e5d3ecd837d2a60ec50f3da78fd39767747bbe99" - integrity sha512-Y/URAVapfbYy2Xp/gb6A0E7iR8xeqOCXsuuaoMn7A5PzrXUK84E1gyiEfq0wQd/GHA6GsoHWwhNq8anb0mleIw== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^3.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -4740,13 +3853,6 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - expect@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" @@ -4817,20 +3923,11 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.2: +extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -4869,16 +3966,6 @@ fake-merkle-patricia-tree@^1.0.1: dependencies: checkpoint-store "^1.1.0" -fancy-log@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" - integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - parse-node-version "^1.0.0" - time-stamp "^1.0.0" - fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" @@ -4889,16 +3976,10 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= -fast-glob@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" - integrity sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" +fast-json-stable-stringify@2.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-json-stable-stringify@^2.0.0: version "2.0.0" @@ -4915,13 +3996,6 @@ fast-safe-stringify@^2.0.6: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== -fastq@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" - integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA== - dependencies: - reusify "^1.0.0" - fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -4943,13 +4017,6 @@ fetch-ponyfill@^4.0.0: dependencies: node-fetch "~1.7.1" -figures@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" - integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== - dependencies: - escape-string-regexp "^1.0.5" - file-type@^3.8.0: version "3.9.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" @@ -5016,24 +4083,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -5047,60 +4097,11 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -fined@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" - integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== - dependencies: - expand-tilde "^2.0.2" - is-plain-object "^2.0.3" - object.defaults "^1.1.0" - object.pick "^1.2.0" - parse-filepath "^1.0.1" - -flagged-respawn@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== - -flow-parser@0.*: - version "0.113.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.113.0.tgz#5b5913c54833918d0c3136ba69f6cf0cdd85fc20" - integrity sha512-+hRyEB1sVLNMTMniDdM1JIS8BJ3HUL7IFIJaxX+t/JUy0GNYdI0Tg1QLx8DJmOF8HeoCrUDcREpnDAc/pPta3w== - flow-stoplight@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= -flush-write-stream@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -5120,13 +4121,6 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -5190,20 +4184,12 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" -fs-mkdirp-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" - integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= - dependencies: - graceful-fs "^4.1.11" - through2 "^2.0.3" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0, fsevents@^1.2.7: +fsevents@^1.0.0: version "1.2.9" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== @@ -5211,6 +4197,14 @@ fsevents@^1.0.0, fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" +fsevents@^1.2.7: + version "1.2.11" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" + integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + fsevents@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" @@ -5226,19 +4220,9 @@ functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -ganache-cli@^6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.7.0.tgz#b59845578221bdf686cf124d007c5ee62e85a62f" - integrity sha512-9CZsClo9hl5MxGL7hkk14mie89Q94P0idh92jcV7LmppTYTCG7SHatuwcfqN7emFHArMt3fneN4QbH2do2N6Ow== - dependencies: - ethereumjs-util "6.1.0" - source-map-support "0.5.12" - yargs "13.2.4" - -ganache-core@^2.6.0, ganache-core@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.8.0.tgz#eeadc7f7fc3a0c20d99f8f62021fb80b5a05490c" - integrity sha512-hfXqZGJx700jJqwDHNXrU2BnPYuETn1ekm36oRHuXY3oOuJLFs5C+cFdUFaBlgUxcau1dOgZUUwKqTAy0gTA9Q== +ganache-core@^2.6.0, ganache-core@^2.9.1, "ganache-core@https://github.com/compound-finance/ganache-core.git#compound": + version "2.9.1" + resolved "https://github.com/compound-finance/ganache-core.git#1d1610a2a0b921e2120fade845658c6238100e21" dependencies: abstract-leveldown "3.0.0" async "2.6.2" @@ -5250,10 +4234,11 @@ ganache-core@^2.6.0, ganache-core@^2.8.0: eth-sig-util "2.3.0" ethereumjs-abi "0.6.7" ethereumjs-account "3.0.0" - ethereumjs-block "2.2.0" - ethereumjs-tx "1.3.7" + ethereumjs-block "2.2.1" + ethereumjs-common "1.4.0" + ethereumjs-tx "2.1.1" ethereumjs-util "6.1.0" - ethereumjs-vm "3.0.0" + ethereumjs-vm "4.1.1" heap "0.2.6" level-sublevel "6.6.4" levelup "3.1.1" @@ -5266,7 +4251,7 @@ ganache-core@^2.6.0, ganache-core@^2.8.0: websocket "1.0.29" optionalDependencies: ethereumjs-wallet "0.6.3" - web3 "1.2.1" + web3 "1.2.4" gauge@~2.7.3: version "2.7.4" @@ -5317,7 +4302,7 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0, get-stream@^5.1.0: +get-stream@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== @@ -5356,49 +4341,13 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.0, glob-parent@~5.1.0: +glob-parent@~5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: is-glob "^4.0.1" -glob-stream@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" - integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= - dependencies: - extend "^3.0.0" - glob "^7.1.1" - glob-parent "^3.1.0" - is-negated-glob "^1.0.0" - ordered-read-streams "^1.0.0" - pumpify "^1.3.5" - readable-stream "^2.1.5" - remove-trailing-separator "^1.0.1" - to-absolute-glob "^2.0.0" - unique-stream "^2.0.2" - -glob-watcher@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.3.tgz#88a8abf1c4d131eb93928994bc4a593c2e5dd626" - integrity sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg== - dependencies: - anymatch "^2.0.0" - async-done "^1.2.0" - chokidar "^2.0.0" - is-negated-glob "^1.0.0" - just-debounce "^1.0.0" - object.defaults "^1.1.0" - glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -5434,33 +4383,6 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= - dependencies: - ini "^1.3.4" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - global@~4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" @@ -5479,28 +4401,7 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -globby@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" - integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - -glogg@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" - integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== - dependencies: - sparkles "^1.0.0" - -got@9.6.0, got@^9.6.0: +got@9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== @@ -5537,7 +4438,7 @@ got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -5557,47 +4458,6 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -gulp-cli@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.2.0.tgz#5533126eeb7fe415a7e3e84a297d334d5cf70ebc" - integrity sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA== - dependencies: - ansi-colors "^1.0.1" - archy "^1.0.0" - array-sort "^1.0.0" - color-support "^1.1.3" - concat-stream "^1.6.0" - copy-props "^2.0.1" - fancy-log "^1.3.2" - gulplog "^1.0.0" - interpret "^1.1.0" - isobject "^3.0.1" - liftoff "^3.1.0" - matchdep "^2.0.0" - mute-stdout "^1.0.0" - pretty-hrtime "^1.0.0" - replace-homedir "^1.0.0" - semver-greatest-satisfied-range "^1.1.0" - v8flags "^3.0.1" - yargs "^7.1.0" - -gulp@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" - integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== - dependencies: - glob-watcher "^5.0.3" - gulp-cli "^2.2.0" - undertaker "^1.2.1" - vinyl-fs "^3.0.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= - dependencies: - glogg "^1.0.0" - handlebars@^4.0.1, handlebars@^4.1.2: version "4.5.3" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" @@ -5644,11 +4504,6 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" @@ -5702,11 +4557,6 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - has@^1.0.1, has@^1.0.3, has@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -5782,13 +4632,6 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4: version "2.8.5" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" @@ -5842,7 +4685,7 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5868,26 +4711,11 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^5.1.1: - version "5.1.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" - integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== - immediate@^3.2.3, immediate@~3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= -immutable@^4.0.0-rc.12: - version "4.0.0-rc.12" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" - integrity sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A== - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -5901,11 +4729,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5924,35 +4747,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@~1.3.0: +ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a" - integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^2.4.2" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^4.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -interpret@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -5965,24 +4764,11 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - ipaddr.js@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -6026,6 +4812,11 @@ is-callable@^1.1.3, is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -6099,7 +4890,7 @@ is-extglob@^1.0.0: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -6128,11 +4919,6 @@ is-fullwidth-code-point@^2.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - is-function@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" @@ -6143,15 +4929,6 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-git-clean@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-git-clean/-/is-git-clean-1.1.0.tgz#13abd6dda711bb08aafd42604da487845ddcf88d" - integrity sha1-E6vW3acRuwiq/UJgTaSHhF3c+I0= - dependencies: - execa "^0.4.0" - is-obj "^1.0.1" - multimatch "^2.1.0" - is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -6159,14 +4936,7 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -6178,29 +4948,11 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= -is-installed-globally@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= - dependencies: - global-dirs "^0.1.0" - is-path-inside "^1.0.0" - is-natural-number@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= - -is-npm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-3.0.0.tgz#ec9147bfb629c43f494cf67936a961edec7e8053" - integrity sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA== - is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -6225,29 +4977,17 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-obj@^1.0.0, is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - is-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= -is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= - dependencies: - path-is-inside "^1.0.1" - is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -6264,11 +5004,6 @@ is-primitive@^2.0.0: resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -6276,12 +5011,12 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: - is-unc-path "^1.0.0" + has "^1.0.3" is-retry-allowed@^1.0.0: version "1.2.0" @@ -6293,11 +5028,6 @@ is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -6310,24 +5040,7 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-utf8@^0.2.0, is-utf8@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-valid-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= - -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -6337,11 +5050,6 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -6483,20 +5191,6 @@ jest-cli@^24.9.0: realpath-native "^1.1.0" yargs "^13.3.0" -jest-codemods@^0.22.0: - version "0.22.1" - resolved "https://registry.yarnpkg.com/jest-codemods/-/jest-codemods-0.22.1.tgz#f3654f4fec6ed70391f9482e62b8d5fe2e719cec" - integrity sha512-sJNAsFCwc/Cl+I5dGBLyNhvLMgm7ZO/ld6Yi29kWXU6jCED1i7Ar9eB9OV1i83gy1Toj+oShibSXArTGNw8+Tg== - dependencies: - chalk "^3.0.0" - execa "^2.1.0" - globby "^10.0.1" - inquirer "^7.0.0" - is-git-clean "^1.1.0" - jscodeshift "^0.6.4" - meow "^5.0.0" - update-notifier "^3.0.1" - jest-config@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" @@ -6520,7 +5214,7 @@ jest-config@^24.9.0: pretty-format "^24.9.0" realpath-native "^1.1.0" -jest-diff@^24.9.0: +jest-diff@^24.3.0, jest-diff@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== @@ -6617,15 +5311,14 @@ jest-jasmine2@^24.9.0: pretty-format "^24.9.0" throat "^4.0.0" -jest-junit@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-9.0.0.tgz#9eb247dda7a8d2e1647a92f58a03a1490c74aea5" - integrity sha512-jnABGjL5pd2lhE1w3RIslZSufFbWQZGx8O3eluDES7qKxQuonXMtsPIi+4AKl4rtjb4DvMAjwLi4eHukc2FP/Q== +jest-junit@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-6.4.0.tgz#23e15c979fa6338afde46f2d2ac2a6b7e8cf0d9e" + integrity sha512-GXEZA5WBeUich94BARoEUccJumhCgCerg7mXDFLxWwI2P7wL3Z7sGWk+53x343YdBLjiMR9aD/gYMVKO+0pE4Q== dependencies: - jest-validate "^24.9.0" + jest-validate "^24.0.0" mkdirp "^0.5.1" - strip-ansi "^5.2.0" - uuid "^3.3.3" + strip-ansi "^4.0.0" xml "^1.0.1" jest-leak-detector@^24.9.0: @@ -6793,7 +5486,7 @@ jest-util@^24.9.0: slash "^2.0.0" source-map "^0.6.0" -jest-validate@^24.9.0: +jest-validate@^24.0.0, jest-validate@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== @@ -6834,11 +5527,6 @@ jest@^24.9.0: import-local "^2.0.0" jest-cli "^24.9.0" -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - js-sha3@0.5.7, js-sha3@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" @@ -6887,30 +5575,6 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jscodeshift@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.6.4.tgz#e19ab86214edac86a75c4557fc88b3937d558a8e" - integrity sha512-+NF/tlNbc2WEhXUuc4WEJLsJumF84tnaMUZW2hyJw3jThKKRvsPX4sPJVgO1lPE28z0gNL+gwniLG9d8mYvQCQ== - dependencies: - "@babel/core" "^7.1.6" - "@babel/parser" "^7.1.6" - "@babel/plugin-proposal-class-properties" "^7.1.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/preset-env" "^7.1.6" - "@babel/preset-flow" "^7.0.0" - "@babel/preset-typescript" "^7.1.0" - "@babel/register" "^7.0.0" - babel-core "^7.0.0-bridge.0" - colors "^1.1.2" - flow-parser "0.*" - graceful-fs "^4.1.11" - micromatch "^3.1.10" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.16.1" - temp "^0.8.1" - write-file-atomic "^2.3.0" - jsdom@^11.5.1: version "11.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" @@ -7017,11 +5681,6 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" @@ -7034,18 +5693,18 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^2.1.0: +json5@2.x, json5@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== dependencies: minimist "^1.2.0" +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -7080,11 +5739,6 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -just-debounce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" - integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= - keccak@^1.0.2: version "1.4.0" resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" @@ -7134,7 +5788,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0, kind-of@^5.0.2: +kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -7156,48 +5810,12 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -last-run@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" - integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= - dependencies: - default-resolution "^2.0.0" - es6-weak-map "^2.0.1" - -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= dependencies: - invert-kv "^1.0.0" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -lead@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" - integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= - dependencies: - flush-write-stream "^1.0.2" + invert-kv "^1.0.0" left-pad@^1.3.0: version "1.3.0" @@ -7346,31 +5964,6 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -liftoff@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" - integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== - dependencies: - extend "^3.0.0" - findup-sync "^3.0.0" - fined "^1.0.1" - flagged-respawn "^1.0.0" - is-plain-object "^2.0.4" - object.map "^1.0.0" - rechoir "^0.6.2" - resolve "^1.1.7" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -7402,6 +5995,11 @@ lodash.flatmap@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -7444,14 +6042,6 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -7469,7 +6059,7 @@ lru-cache@^3.2.0: dependencies: pseudomap "^1.0.1" -lru-cache@^4.0.0, lru-cache@^4.0.1: +lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -7501,7 +6091,7 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-dir@^2.0.0, make-dir@^2.1.0: +make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== @@ -7509,12 +6099,10 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-iterator@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" - integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== - dependencies: - kind-of "^6.0.2" +make-error@1.x: + version "1.3.5" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== makeerror@1.0.x: version "1.0.11" @@ -7523,28 +6111,11 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.0, map-cache@^0.2.2: +map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -7552,16 +6123,6 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -matchdep@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" - integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= - dependencies: - findup-sync "^2.0.0" - micromatch "^3.0.4" - resolve "^1.4.0" - stack-trace "0.0.10" - math-random@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" @@ -7588,15 +6149,6 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - memdown@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" @@ -7626,21 +6178,6 @@ memorystream@^0.3.1: resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7651,11 +6188,6 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.3, merge2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== - merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" @@ -7694,7 +6226,7 @@ micromatch@^2.1.5: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -7713,14 +6245,6 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -7751,11 +6275,6 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0, mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -7783,21 +6302,13 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -7843,7 +6354,7 @@ mkdirp-promise@^5.0.1: dependencies: mkdirp "*" -mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -7886,32 +6397,12 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -multimatch@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - integrity sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis= - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - -mute-stdout@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" - integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - nan@2.13.2: version "2.13.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== -nan@^2.11.0, nan@^2.12.1, nan@^2.13.2, nan@^2.14.0, nan@^2.2.1: +nan@^2.12.1, nan@^2.13.2, nan@^2.14.0, nan@^2.2.1: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== @@ -7962,7 +6453,7 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.0: +neo-async@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== @@ -7984,13 +6475,6 @@ node-abi@^2.7.0: dependencies: semver "^5.4.1" -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= - dependencies: - minimatch "^3.0.2" - node-fetch@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" @@ -8050,13 +6534,6 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.42: - version "1.1.42" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.42.tgz#a999f6a62f8746981f6da90627a8d2fc090bbad7" - integrity sha512-OQ/ESmUqGawI2PRX+XIRao44qWYBBfN54ImQYdWVTQqUckuejOg76ysSqDBK8NG3zwySRVnX36JwDQ6x+9GxzA== - dependencies: - semver "^6.3.0" - noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" @@ -8077,7 +6554,7 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -8104,13 +6581,6 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== -now-and-later@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" - integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== - dependencies: - once "^1.3.2" - npm-bundled@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.0.tgz#2e8fdb7e69eff2df963937b696243316537c284b" @@ -8124,13 +6594,6 @@ npm-packlist@^1.1.6: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-run-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f" - integrity sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8= - dependencies: - path-key "^1.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -8138,13 +6601,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" - integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== - dependencies: - path-key "^3.0.0" - npmlog@^4.0.1, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -8219,7 +6675,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0: +object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -8229,16 +6685,6 @@ object.assign@^4.0.4, object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.defaults@^1.0.0, object.defaults@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" - integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= - dependencies: - array-each "^1.0.1" - array-slice "^1.0.0" - for-own "^1.0.0" - isobject "^3.0.0" - object.getownpropertydescriptors@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -8247,14 +6693,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -object.map@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" - integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -8263,21 +6701,13 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -object.pick@^1.2.0, object.pick@^1.3.0: +object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" -object.reduce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" - integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - oboe@2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" @@ -8292,20 +6722,13 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -8326,25 +6749,11 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" -ordered-read-streams@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" - integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= - dependencies: - readable-stream "^2.0.1" - os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -8354,15 +6763,6 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -8386,11 +6786,6 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" @@ -8403,16 +6798,6 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -8463,16 +6848,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - parse-asn1@^5.0.0: version "5.1.5" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" @@ -8485,15 +6860,6 @@ parse-asn1@^5.0.0: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" -parse-filepath@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -8509,13 +6875,6 @@ parse-headers@^2.0.0: resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -8524,16 +6883,6 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-node-version@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" @@ -8549,18 +6898,6 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -8571,57 +6908,21 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af" - integrity sha1-XVPVeAGWRsDWiADbThRua9wqx68= - path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -8629,11 +6930,6 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - pathval@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" @@ -8665,12 +6961,12 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.5: +picomatch@^2.0.4: version "2.1.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== -pify@^2.0.0, pify@^2.3.0: +pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -8697,7 +6993,7 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.0, pirates@^4.0.1: +pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== @@ -8787,17 +7083,12 @@ pretty-format@^24.9.0: ansi-styles "^3.2.0" react-is "^16.8.4" -pretty-hrtime@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - -private@^0.1.6, private@^0.1.8, private@~0.1.5: +private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: +process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== @@ -8841,11 +7132,16 @@ pseudomap@^1.0.1, pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24, psl@^1.1.28: +psl@^1.1.24: version "1.6.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.6.0.tgz#60557582ee23b6c43719d9890fb4170ecd91e110" integrity sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA== +psl@^1.1.28: + version "1.7.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" + integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -8906,14 +7202,6 @@ pull-window@^2.1.4: dependencies: looper "^2.0.0" -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -8922,15 +7210,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.5: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" @@ -8965,10 +7244,10 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= +querystringify@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== randomatic@^3.0.0: version "3.1.1" @@ -8994,11 +7273,6 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -randomhex@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" - integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -9014,7 +7288,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7, rc@^1.2.8: +rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -9029,22 +7303,6 @@ react-is@^16.8.4: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" @@ -9053,15 +7311,6 @@ read-pkg-up@^4.0.0: find-up "^3.0.0" read-pkg "^3.0.0" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -9081,7 +7330,7 @@ readable-stream@^1.0.33: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -9113,7 +7362,7 @@ readable-stream@~1.0.15: isarray "0.0.1" string_decoder "~0.10.x" -readdirp@^2.0.0, readdirp@^2.2.1: +readdirp@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== @@ -9136,39 +7385,7 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" -recast@^0.16.1: - version "0.16.2" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.16.2.tgz#3796ebad5fe49ed85473b479cd6df554ad725dc2" - integrity sha512-O/7qXi51DPjRVdbrpNzoBQH5dnAPQNbfoOFyRiUwreTMJfIHYOEBzwuH+c0+/BTSJ3CQyKs6ILSWXhESH6Op3A== - dependencies: - ast-types "0.11.7" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - -regenerate-unicode-properties@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" - integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.2.1, regenerate@^1.4.0: +regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== @@ -9192,13 +7409,6 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -regenerator-transform@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" - integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== - dependencies: - private "^0.1.6" - regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -9223,43 +7433,11 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" - integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.1.0" - regjsgen "^0.5.0" - regjsparser "^0.6.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" - -registry-auth-token@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be" - integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw== - dependencies: - rc "^1.2.8" - safe-buffer "^5.0.1" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= -regjsgen@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== - regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" @@ -9267,31 +7445,7 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== - dependencies: - jsesc "~0.5.0" - -remove-bom-buffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" - integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== - dependencies: - is-buffer "^1.1.5" - is-utf8 "^0.2.1" - -remove-bom-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" - integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= - dependencies: - remove-bom-buffer "^3.0.0" - safe-buffer "^5.1.0" - through2 "^2.0.3" - -remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: +remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= @@ -9313,20 +7467,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -replace-ext@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" - integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= - -replace-homedir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" - integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= - dependencies: - homedir-polyfill "^1.0.1" - is-absolute "^1.0.0" - remove-trailing-separator "^1.1.0" - request-promise-core@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" @@ -9389,6 +7529,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -9396,26 +7541,11 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" integrity sha1-six699nWiBvItuZTM17rywoYh0g= -resolve-options@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" - integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= - dependencies: - value-or-function "^3.0.0" - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -9426,7 +7556,14 @@ resolve@1.1.7, resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1: +resolve@1.x, resolve@^1.10.0, resolve@^1.3.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2" + integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ== + dependencies: + path-parse "^1.0.6" + +resolve@^1.8.1: version "1.13.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== @@ -9447,14 +7584,6 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - resumer@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" @@ -9467,11 +7596,6 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -reusify@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -9479,13 +7603,6 @@ rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -9501,7 +7618,7 @@ rlp@^2.0.0: dependencies: safe-buffer "^5.1.1" -rlp@^2.2.1, rlp@^2.2.3: +rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3: version "2.2.4" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.4.tgz#d6b0e1659e9285fc509a5d169a9bd06f704951c1" integrity sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw== @@ -9513,24 +7630,19 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= - dependencies: - is-promise "^2.1.0" - -run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== - rustbn.js@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rxjs@^6.4.0, rxjs@^6.5.3: +rxjs@^6.4.0: + version "6.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== + dependencies: + tslib "^1.9.0" + +rxjs@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== @@ -9609,7 +7721,7 @@ scrypt.js@^0.3.0, "scrypt.js@https://registry.npmjs.org/@compound-finance/ethere utf8 "^3.0.0" uuid "^3.3.2" -scryptsy@2.1.0, scryptsy@^2.1.0: +scryptsy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== @@ -9650,21 +7762,7 @@ semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== -semver-diff@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= - dependencies: - semver "^5.0.3" - -semver-greatest-satisfied-range@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" - integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= - dependencies: - sver-compat "^1.5.0" - -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9674,11 +7772,6 @@ semver@5.5.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" - integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== - semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -9786,23 +7879,11 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -9851,11 +7932,6 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -9974,7 +8050,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.0, source-map-support@^0.5.16, source-map-support@^0.5.6: +source-map-support@^0.5.0, source-map-support@^0.5.6: version "0.5.16" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== @@ -10004,11 +8080,6 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -sparkles@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" - integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== - spdx-correct@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" @@ -10060,12 +8131,7 @@ sshpk@^1.7.0: getpass "^0.1.1" jsbn "~0.1.0" safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-trace@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + tweetnacl "~0.14.0" stack-utils@^1.0.1: version "1.0.2" @@ -10090,16 +8156,6 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-exhaust@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" - integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== - -stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= - stream-to-pull-stream@^1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" @@ -10121,7 +8177,7 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -10147,15 +8203,6 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - string.prototype.trim@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" @@ -10173,6 +8220,14 @@ string.prototype.trimleft@^2.1.0: define-properties "^1.1.3" function-bind "^1.1.1" +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + string.prototype.trimright@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" @@ -10181,6 +8236,14 @@ string.prototype.trimright@^2.1.0: define-properties "^1.1.3" function-bind "^1.1.1" +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -10221,20 +8284,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -10252,11 +8301,6 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" @@ -10264,11 +8308,6 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -10307,21 +8346,6 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -sver-compat@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" - integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= - dependencies: - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - swarm-js@0.1.39: version "0.1.39" resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" @@ -10411,20 +8435,6 @@ tar@^4, tar@^4.0.2: safe-buffer "^5.1.2" yallist "^3.0.3" -temp@^0.8.1: - version "0.8.4" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - integrity sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg== - dependencies: - rimraf "~2.6.2" - -term-size@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= - dependencies: - execa "^0.7.0" - test-exclude@^5.2.3: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -10445,15 +8455,7 @@ throat@^4.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= -through2-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" - integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: +through2@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -10461,22 +8463,17 @@ through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: +through@^2.3.8, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= -tmp@0.0.33, tmp@^0.0.33: +tmp@0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== @@ -10495,14 +8492,6 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= -to-absolute-glob@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - to-buffer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" @@ -10555,13 +8544,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -to-through@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" - integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= - dependencies: - through2 "^2.0.3" - toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -10590,25 +8572,26 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= - trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -truffle-hdwallet-provider@^1.0.10, truffle-hdwallet-provider@^1.0.17: - version "1.0.17" - resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.17.tgz#fe8edd0d6974eeb31af9959e41525fb19abd74ca" - integrity sha512-s6DvSP83jiIAc6TUcpr7Uqnja1+sLGJ8og3X7n41vfyC4OCaKmBtXL5HOHf+SsU3iblOvnbFDgmN6Y1VBL/fsg== - dependencies: - any-promise "^1.3.0" - bindings "^1.3.1" - web3 "1.2.1" - websocket "^1.0.28" +ts-jest@^24.0.2: + version "24.3.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.3.0.tgz#b97814e3eab359ea840a1ac112deae68aa440869" + integrity sha512-Hb94C/+QRIgjVZlJyiWwouYUF+siNJHJHknyspaOcZ+OQAIdFG/UrdQVXw/0B8Z3No34xkUXZJpOTy9alOWdVQ== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" tslib@^1.9.0: version "1.10.0" @@ -10649,16 +8632,6 @@ type-detect@^4.0.0, type-detect@^4.0.5: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10689,6 +8662,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typescript@^3.5.1: + version "3.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.4.tgz#1743a5ec5fef6a1fa9f3e4708e33c81c73876c19" + integrity sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw== + typewise-core@^1.2, typewise-core@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" @@ -10732,59 +8710,11 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - underscore@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -undertaker-registry@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" - integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= - -undertaker@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.2.1.tgz#701662ff8ce358715324dfd492a4f036055dfe4b" - integrity sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA== - dependencies: - arr-flatten "^1.0.1" - arr-map "^2.0.0" - bach "^1.0.0" - collection-map "^1.0.0" - es6-weak-map "^2.0.1" - last-run "^1.1.0" - object.defaults "^1.0.0" - object.reduce "^1.0.0" - undertaker-registry "^1.0.0" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" - integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -10795,21 +8725,6 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -unique-stream@^2.0.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" - integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== - dependencies: - json-stable-stringify-without-jsonify "^1.0.1" - through2-filter "^3.0.0" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -10833,29 +8748,6 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -update-notifier@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-3.0.1.tgz#78ecb68b915e2fd1be9f767f6e298ce87b736250" - integrity sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ== - dependencies: - boxen "^3.0.0" - chalk "^2.0.1" - configstore "^4.0.0" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.1.0" - is-npm "^3.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - semver-diff "^2.0.0" - xdg-basedir "^3.0.0" - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -10882,6 +8774,14 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" +url-parse@1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" + integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== + dependencies: + querystringify "^2.0.0" + requires-port "^1.0.0" + url-set-query@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" @@ -10906,6 +8806,11 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +utf8@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" + integrity sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g= + utf8@3.0.0, utf8@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" @@ -10939,18 +8844,11 @@ uuid@3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -uuid@^3.3.2, uuid@^3.3.3: +uuid@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== -v8flags@^3.0.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" - integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== - dependencies: - homedir-polyfill "^1.0.1" - valid-url@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" @@ -10964,11 +8862,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -value-or-function@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" - integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= - vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -10983,54 +8876,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl-fs@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" - integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== - dependencies: - fs-mkdirp-stream "^1.0.0" - glob-stream "^6.1.0" - graceful-fs "^4.0.0" - is-valid-glob "^1.0.0" - lazystream "^1.0.0" - lead "^1.0.0" - object.assign "^4.0.4" - pumpify "^1.3.5" - readable-stream "^2.3.3" - remove-bom-buffer "^3.0.0" - remove-bom-stream "^1.2.0" - resolve-options "^1.1.0" - through2 "^2.0.0" - to-through "^2.0.0" - value-or-function "^3.0.0" - vinyl "^2.0.0" - vinyl-sourcemap "^1.1.0" - -vinyl-sourcemap@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" - integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= - dependencies: - append-buffer "^1.0.2" - convert-source-map "^1.5.0" - graceful-fs "^4.1.6" - normalize-path "^2.1.1" - now-and-later "^2.0.0" - remove-bom-buffer "^3.0.0" - vinyl "^2.0.0" - -vinyl@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - w3c-hr-time@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" @@ -11045,15 +8890,6 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -web3-bzz@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" - integrity sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw== - dependencies: - got "9.6.0" - swarm-js "0.1.39" - underscore "1.9.1" - web3-bzz@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.4.tgz#a4adb7a8cba3d260de649bdb1f14ed359bfb3821" @@ -11064,14 +8900,16 @@ web3-bzz@1.2.4: swarm-js "0.1.39" underscore "1.9.1" -web3-core-helpers@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" - integrity sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw== +web3-core-helpers@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.55.tgz#832b8499889f9f514b1d174f00172fd3683d63de" + integrity sha512-suj9Xy/lIqajaYLJTEjr2rlFgu6hGYwChHmf8+qNrC2luZA6kirTamtB9VThWMxbywx7p0bqQFjW6zXogAgWhg== dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.1" - web3-utils "1.2.1" + "@babel/runtime" "^7.3.1" + lodash "^4.17.11" + web3-core "1.0.0-beta.55" + web3-eth-iban "1.0.0-beta.55" + web3-utils "1.0.0-beta.55" web3-core-helpers@1.2.4: version "1.2.4" @@ -11082,16 +8920,19 @@ web3-core-helpers@1.2.4: web3-eth-iban "1.2.4" web3-utils "1.2.4" -web3-core-method@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" - integrity sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ== +web3-core-method@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.55.tgz#0af994295ac2dd64ccd53305b7df8da76e11da49" + integrity sha512-w1cW/s2ji9qGELHk2uMJCn1ooay0JJLVoPD1nvmsW6OTRWcVjxa62nJrFQhe6P5lEb83Xk9oHgmCxZoVUHibOw== dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-core-promievent "1.2.1" - web3-core-subscriptions "1.2.1" - web3-utils "1.2.1" + "@babel/runtime" "^7.3.1" + eventemitter3 "3.1.0" + lodash "^4.17.11" + rxjs "^6.4.0" + web3-core "1.0.0-beta.55" + web3-core-helpers "1.0.0-beta.55" + web3-core-subscriptions "1.0.0-beta.55" + web3-utils "1.0.0-beta.55" web3-core-method@1.2.4: version "1.2.4" @@ -11104,14 +8945,6 @@ web3-core-method@1.2.4: web3-core-subscriptions "1.2.4" web3-utils "1.2.4" -web3-core-promievent@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" - integrity sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw== - dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" - web3-core-promievent@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.4.tgz#75e5c0f2940028722cdd21ba503ebd65272df6cb" @@ -11120,17 +8953,6 @@ web3-core-promievent@1.2.4: any-promise "1.3.0" eventemitter3 "3.1.2" -web3-core-requestmanager@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" - integrity sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-providers-http "1.2.1" - web3-providers-ipc "1.2.1" - web3-providers-ws "1.2.1" - web3-core-requestmanager@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.4.tgz#0a7020a23fb91c6913c611dfd3d8c398d1e4b4a8" @@ -11142,14 +8964,14 @@ web3-core-requestmanager@1.2.4: web3-providers-ipc "1.2.4" web3-providers-ws "1.2.4" -web3-core-subscriptions@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" - integrity sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g== +web3-core-subscriptions@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.55.tgz#105902c13db53466fc17d07a981ad3d41c700f76" + integrity sha512-pb3oQbUzK7IoyXwag8TYInQddg0rr7BHxKc+Pbs/92hVNQ5ps4iGMVJKezdrjlQ1IJEEUiDIglXl4LZ1hIuMkw== dependencies: - eventemitter3 "3.1.2" - underscore "1.9.1" - web3-core-helpers "1.2.1" + "@babel/runtime" "^7.3.1" + eventemitter3 "^3.1.0" + lodash "^4.17.11" web3-core-subscriptions@1.2.4: version "1.2.4" @@ -11160,15 +8982,18 @@ web3-core-subscriptions@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" -web3-core@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" - integrity sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg== +web3-core@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.55.tgz#26b9abbf1bc1837c9cc90f06ecbc4ed714f89b53" + integrity sha512-AMMp7TLEtE7u8IJAu/THrRhBTZyZzeo7Y6GiWYNwb5+KStC9hIGLr9cI1KX9R6ZioTOLRHrqT7awDhnJ1ku2mg== dependencies: - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-requestmanager "1.2.1" - web3-utils "1.2.1" + "@babel/runtime" "^7.3.1" + "@types/bn.js" "^4.11.4" + "@types/node" "^10.12.18" + lodash "^4.17.11" + web3-core-method "1.0.0-beta.55" + web3-providers "1.0.0-beta.55" + web3-utils "1.0.0-beta.55" web3-core@1.2.4: version "1.2.4" @@ -11183,15 +9008,6 @@ web3-core@1.2.4: web3-core-requestmanager "1.2.4" web3-utils "1.2.4" -web3-eth-abi@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" - integrity sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g== - dependencies: - ethers "4.0.0-beta.3" - underscore "1.9.1" - web3-utils "1.2.1" - web3-eth-abi@1.2.4, web3-eth-abi@^1.0.0-beta.24: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.4.tgz#5b73e5ef70b03999227066d5d1310b168845e2b8" @@ -11201,23 +9017,6 @@ web3-eth-abi@1.2.4, web3-eth-abi@^1.0.0-beta.24: underscore "1.9.1" web3-utils "1.2.4" -web3-eth-accounts@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" - integrity sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ== - dependencies: - any-promise "1.3.0" - crypto-browserify "3.12.0" - eth-lib "0.2.7" - scryptsy "2.1.0" - semver "6.2.0" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-utils "1.2.1" - web3-eth-accounts@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.4.tgz#ada6edc49542354328a85cafab067acd7f88c288" @@ -11236,20 +9035,6 @@ web3-eth-accounts@1.2.4: web3-core-method "1.2.4" web3-utils "1.2.4" -web3-eth-contract@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" - integrity sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g== - dependencies: - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-promievent "1.2.1" - web3-core-subscriptions "1.2.1" - web3-eth-abi "1.2.1" - web3-utils "1.2.1" - web3-eth-contract@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.4.tgz#68ef7cc633232779b0a2c506a810fbe903575886" @@ -11265,20 +9050,6 @@ web3-eth-contract@1.2.4: web3-eth-abi "1.2.4" web3-utils "1.2.4" -web3-eth-ens@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" - integrity sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q== - dependencies: - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-promievent "1.2.1" - web3-eth-abi "1.2.1" - web3-eth-contract "1.2.1" - web3-utils "1.2.1" - web3-eth-ens@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.4.tgz#b95b3aa99fb1e35c802b9e02a44c3046a3fa065e" @@ -11293,13 +9064,14 @@ web3-eth-ens@1.2.4: web3-eth-contract "1.2.4" web3-utils "1.2.4" -web3-eth-iban@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" - integrity sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ== +web3-eth-iban@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.55.tgz#15146a69de21addc99e7dbfb2920555b1e729637" + integrity sha512-a2Fxsb5Mssa+jiXgjUdIzJipE0175IcQXJbZLpKft2+zeSJWNTbaa3PQD2vPPpIM4W789q06N+f9Zc0Fyls+1g== dependencies: + "@babel/runtime" "^7.3.1" bn.js "4.11.8" - web3-utils "1.2.1" + web3-utils "1.0.0-beta.55" web3-eth-iban@1.2.4: version "1.2.4" @@ -11309,17 +9081,6 @@ web3-eth-iban@1.2.4: bn.js "4.11.8" web3-utils "1.2.4" -web3-eth-personal@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" - integrity sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg== - dependencies: - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-net "1.2.1" - web3-utils "1.2.1" - web3-eth-personal@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.4.tgz#3224cca6851c96347d9799b12c1b67b2a6eb232b" @@ -11332,25 +9093,6 @@ web3-eth-personal@1.2.4: web3-net "1.2.4" web3-utils "1.2.4" -web3-eth@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" - integrity sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA== - dependencies: - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-subscriptions "1.2.1" - web3-eth-abi "1.2.1" - web3-eth-accounts "1.2.1" - web3-eth-contract "1.2.1" - web3-eth-ens "1.2.1" - web3-eth-iban "1.2.1" - web3-eth-personal "1.2.1" - web3-net "1.2.1" - web3-utils "1.2.1" - web3-eth@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.4.tgz#24c3b1f1ac79351bbfb808b2ab5c585fa57cdd00" @@ -11370,15 +9112,6 @@ web3-eth@1.2.4: web3-net "1.2.4" web3-utils "1.2.4" -web3-net@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" - integrity sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw== - dependencies: - web3-core "1.2.1" - web3-core-method "1.2.1" - web3-utils "1.2.1" - web3-net@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.4.tgz#1d246406d3aaffbf39c030e4e98bce0ca5f25458" @@ -11469,14 +9202,6 @@ web3-provider-engine@^15.0.4: xhr "^2.2.0" xtend "^4.0.1" -web3-providers-http@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" - integrity sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ== - dependencies: - web3-core-helpers "1.2.1" - xhr2-cookies "1.1.0" - web3-providers-http@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.4.tgz#514fcad71ae77832c2c15574296282fbbc5f4a67" @@ -11485,15 +9210,6 @@ web3-providers-http@1.2.4: web3-core-helpers "1.2.4" xhr2-cookies "1.1.0" -web3-providers-ipc@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" - integrity sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-providers-ipc@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.4.tgz#9d6659f8d44943fb369b739f48df09092be459bd" @@ -11503,15 +9219,6 @@ web3-providers-ipc@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" -web3-providers-ws@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" - integrity sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" - web3-providers-ws@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.4.tgz#099ee271ee03f6ea4f5df9cfe969e83f4ce0e36f" @@ -11521,15 +9228,22 @@ web3-providers-ws@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" -web3-shh@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" - integrity sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA== +web3-providers@1.0.0-beta.55, web3-providers@^1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-providers/-/web3-providers-1.0.0-beta.55.tgz#639503517741b69baaa82f1f940630df6a25992b" + integrity sha512-MNifc7W+iF6rykpbDR1MuX152jshWdZXHAU9Dk0Ja2/23elhIs4nCWs7wOX9FHrKgdrQbscPoq0uy+0aGzyWVQ== dependencies: - web3-core "1.2.1" - web3-core-method "1.2.1" - web3-core-subscriptions "1.2.1" - web3-net "1.2.1" + "@babel/runtime" "^7.3.1" + "@types/node" "^10.12.18" + eventemitter3 "3.1.0" + lodash "^4.17.11" + url-parse "1.4.4" + web3-core "1.0.0-beta.55" + web3-core-helpers "1.0.0-beta.55" + web3-core-method "1.0.0-beta.55" + web3-utils "1.0.0-beta.55" + websocket "^1.0.28" + xhr2-cookies "1.1.0" web3-shh@1.2.4: version "1.2.4" @@ -11541,18 +9255,21 @@ web3-shh@1.2.4: web3-core-subscriptions "1.2.4" web3-net "1.2.4" -web3-utils@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" - integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== +web3-utils@1.0.0-beta.55: + version "1.0.0-beta.55" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.55.tgz#beb40926b7c04208b752d36a9bc959d27a04b308" + integrity sha512-ASWqUi8gtWK02Tp8ZtcoAbHenMpQXNvHrakgzvqTNNZn26wgpv+Q4mdPi0KOR6ZgHFL8R/9b5BBoUTglS1WPpg== dependencies: + "@babel/runtime" "^7.3.1" + "@types/bn.js" "^4.11.4" + "@types/node" "^10.12.18" bn.js "4.11.8" - eth-lib "0.2.7" - ethjs-unit "0.1.6" + eth-lib "0.2.8" + ethjs-unit "^0.1.6" + lodash "^4.17.11" number-to-bn "1.7.0" - randomhex "0.1.5" - underscore "1.9.1" - utf8 "3.0.0" + randombytes "^2.1.0" + utf8 "2.1.1" web3-utils@1.2.4: version "1.2.4" @@ -11568,20 +9285,7 @@ web3-utils@1.2.4: underscore "1.9.1" utf8 "3.0.0" -web3@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" - integrity sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw== - dependencies: - web3-bzz "1.2.1" - web3-core "1.2.1" - web3-eth "1.2.1" - web3-eth-personal "1.2.1" - web3-net "1.2.1" - web3-shh "1.2.1" - web3-utils "1.2.1" - -web3@^1.2.4: +web3@1.2.4, web3@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.4.tgz#6e7ab799eefc9b4648c2dab63003f704a1d5e7d9" integrity sha512-xPXGe+w0x0t88Wj+s/dmAdASr3O9wmA9mpZRtixGZxmBexAF0MjfqYM+MS4tVl5s11hMTN3AZb8cDD4VLfC57A== @@ -11602,12 +9306,11 @@ webidl-conversions@^4.0.2: websocket@1.0.29: version "1.0.29" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.29.tgz#3f83e49d3279657c58b02a22d90749c806101b98" - integrity sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g== + resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/905deb4812572b344f5801f8c9ce8bb02799d82e" dependencies: debug "^2.2.0" - gulp "^4.0.2" - nan "^2.11.0" + es5-ext "^0.10.50" + nan "^2.14.0" typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" @@ -11622,16 +9325,6 @@ websocket@^1.0.28: typedarray-to-buffer "^3.1.5" yaeti "^0.0.6" -"websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": - version "1.0.29" - resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/905deb4812572b344f5801f8c9ce8bb02799d82e" - dependencies: - debug "^2.2.0" - es5-ext "^0.10.50" - nan "^2.14.0" - typedarray-to-buffer "^3.1.5" - yaeti "^0.0.6" - whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -11672,11 +9365,6 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -11687,20 +9375,13 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.1.1, which@^1.2.14, which@^1.2.8, which@^1.2.9, which@^1.3.0: +which@^1.1.1, which@^1.2.9, which@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -11708,13 +9389,6 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" -widest-line@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" - integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== - dependencies: - string-width "^2.1.1" - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -11761,15 +9435,6 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -11786,11 +9451,6 @@ ws@^5.1.1, ws@^5.2.0: dependencies: async-limiter "~1.0.0" -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= - xhr-request-promise@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.2.tgz#343c44d1ee7726b8648069682d0f840c83b4261d" @@ -11880,14 +9540,14 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@^10.0.0: +yargs-parser@10.x: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: camelcase "^4.1.0" -yargs-parser@^13.1.0, yargs-parser@^13.1.1: +yargs-parser@^13.1.1: version "13.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== @@ -11895,13 +9555,6 @@ yargs-parser@^13.1.0, yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - yargs-parser@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" @@ -11909,23 +9562,6 @@ yargs-parser@^8.1.0: dependencies: camelcase "^4.1.0" -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" - yargs@^10.0.3: version "10.1.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" @@ -11960,25 +9596,6 @@ yargs@^13.2.4, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" -yargs@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"