From 5516b27d7a067fda2244f91a2a129219d7322cd7 Mon Sep 17 00:00:00 2001 From: Chinmay Chougaonkar Date: Sun, 27 Feb 2022 09:32:51 +0530 Subject: [PATCH] add logic for compound import except flashloan related functions --- .../connectors/compound-import/events.sol | 5 + .../connectors/compound-import/helpers.sol | 41 ++ .../connectors/compound-import/interface.sol | 46 ++ .../connectors/compound-import/main.sol | 250 +++++++ yarn.lock | 685 +++++++++++++++--- 5 files changed, 941 insertions(+), 86 deletions(-) create mode 100644 contracts/mainnet/connectors/compound-import/events.sol create mode 100644 contracts/mainnet/connectors/compound-import/helpers.sol create mode 100644 contracts/mainnet/connectors/compound-import/interface.sol create mode 100644 contracts/mainnet/connectors/compound-import/main.sol diff --git a/contracts/mainnet/connectors/compound-import/events.sol b/contracts/mainnet/connectors/compound-import/events.sol new file mode 100644 index 00000000..cf2c0a6e --- /dev/null +++ b/contracts/mainnet/connectors/compound-import/events.sol @@ -0,0 +1,5 @@ +pragma solidity ^0.7.6; + +contract Events { + +} \ No newline at end of file diff --git a/contracts/mainnet/connectors/compound-import/helpers.sol b/contracts/mainnet/connectors/compound-import/helpers.sol new file mode 100644 index 00000000..c6042b9c --- /dev/null +++ b/contracts/mainnet/connectors/compound-import/helpers.sol @@ -0,0 +1,41 @@ +pragma solidity ^0.7.6; + +import { DSMath } from "../../common/math.sol"; +import { Basic } from "../../common/basic.sol"; +import { ComptrollerInterface, CompoundMappingInterface, CETHInterface } from "./interface.sol"; + +abstract contract Helpers is DSMath, Basic { + + /** + * @dev Compound CEth + */ + CETHInterface internal constant cEth = CETHInterface(0x4Ddc2D193948926D02f9B1fE9e1daa0718270ED5); + + /** + * @dev Compound Comptroller + */ + ComptrollerInterface internal constant troller = ComptrollerInterface(0x3d9819210A31b4961b30EF54bE2aeD79B9c9Cd3B); + + /** + * @dev Compound Mapping + */ + CompoundMappingInterface internal constant compMapping = CompoundMappingInterface(0xe7a85d0adDB972A4f0A4e57B698B37f171519e88); + + /** + * @dev enter compound market + */ + function enterMarket(address cToken) internal { + address[] memory markets = troller.getAssetsIn(address(this)); + bool isEntered = false; + for (uint i = 0; i < markets.length; i++) { + if (markets[i] == cToken) { + isEntered = true; + } + } + if (!isEntered) { + address[] memory toEnter = new address[](1); + toEnter[0] = cToken; + troller.enterMarkets(toEnter); + } + } +} \ No newline at end of file diff --git a/contracts/mainnet/connectors/compound-import/interface.sol b/contracts/mainnet/connectors/compound-import/interface.sol new file mode 100644 index 00000000..7a08c094 --- /dev/null +++ b/contracts/mainnet/connectors/compound-import/interface.sol @@ -0,0 +1,46 @@ +pragma solidity ^0.7.6; + +interface TokenInterface { + function balanceOf(address) external view returns (uint); + function allowance(address, address) external view returns (uint); + function approve(address, uint) external; + function transfer(address, uint) external returns (bool); + function transferFrom(address, address, uint) external returns (bool); +} + +interface CTokenInterface { + function mint(uint mintAmount) external returns (uint); + function redeem(uint redeemTokens) external returns (uint); + function borrow(uint borrowAmount) external returns (uint); + function repayBorrow(uint repayAmount) external returns (uint); + function repayBorrowBehalf(address borrower, uint repayAmount) external returns (uint); // For ERC20 + function liquidateBorrow(address borrower, uint repayAmount, address cTokenCollateral) external returns (uint); + + function borrowBalanceCurrent(address account) external returns (uint); + function redeemUnderlying(uint redeemAmount) external returns (uint); + function exchangeRateCurrent() external returns (uint); + + function balanceOf(address owner) external view returns (uint256 balance); + function transferFrom(address, address, uint) external returns (bool); + function allowance(address, address) external view returns (uint); + +} + +interface CETHInterface { + function mint() external payable; + function repayBorrow() external payable; + function repayBorrowBehalf(address borrower) external payable; + function liquidateBorrow(address borrower, address cTokenCollateral) external payable; +} + +interface ComptrollerInterface { + function enterMarkets(address[] calldata cTokens) external returns (uint[] memory); + function exitMarket(address cTokenAddress) external returns (uint); + function getAssetsIn(address account) external view returns (address[] memory); + function getAccountLiquidity(address account) external view returns (uint, uint, uint); +} + +interface CompoundMappingInterface { + function cTokenMapping(string calldata tokenId) external view returns (address); + function getMapping(string calldata tokenId) external view returns (address, address); +} diff --git a/contracts/mainnet/connectors/compound-import/main.sol b/contracts/mainnet/connectors/compound-import/main.sol new file mode 100644 index 00000000..456ed1f5 --- /dev/null +++ b/contracts/mainnet/connectors/compound-import/main.sol @@ -0,0 +1,250 @@ +pragma solidity ^0.7.6; +pragma experimental ABIEncoderV2; + +import { TokenInterface, AccountInterface } from "../../common/interfaces.sol"; +import { CTokenInterface } from "./interface.sol"; +import { Helpers } from "./helpers.sol"; +import { Events } from "./events.sol"; + +// 1. Get info for all the assets the user has supplied as collateral and the assets he borrowed. +// 2. Take the flash loan for all the borrowed assets. +// 3. Using this flash loan, pay back the user's debt in the EOA account. +// 4. After paying the debt, transfer the user's tokens from EOA to DSA. +// 5. Then borrow debt of same tokens but include flash loan fee in it. +// 6. Payback the flash loan for all the tokens. + +// fill logics in contract functions +contract FlashLoanHelper is Helpers, Events { + function _flashLoan( + address[] memory _tokens, + uint256[] memory _amts + ) internal { + // fill in logic for flash loans + } + + function _repayFlashLoan( + address[] memory _tokens, + uint256[] memory _amts + ) internal { + // fill in logic for flash loan repayment + } +} + +contract CompoundResolver is Helpers, Events { + function _repayUserDebt( + address _userAccount, + CTokenInterface[] memory _cTokenContracts, + uint[] memory _borrowAmts + ) internal { + for(uint i = 0; i < _cTokenContracts.length; i++){ + if(_borrowAmts[i] > 0){ + if(address(_cTokenContracts[i]) == address(cEth)){ + cEth.repayBorrowBehalf{value: _borrowAmts[i]}(_userAccount); + } + else{ + require(_cTokenContracts[i].repayBorrowBehalf(_userAccount, _borrowAmts[i]) == 0, "repayOnBehalf-failed"); + } + } + } + } + + function _transferTokensToDsa( + address _userAccount, + CTokenInterface[] memory _cTokenContracts, + uint[] memory _amts + ) internal { + for(uint i = 0; i < _cTokenContracts.length; i++) { + if(_amts[i] > 0) { + require(_cTokenContracts[i].transferFrom(_userAccount, address(this), _amts[i]), "ctoken-transfer-failed-allowance?"); + } + } + } + + function _borrowDebtPosition( + CTokenInterface[] memory _ctokenContracts, + uint[] memory _amts + ) internal { + for (uint i = 0; i < _ctokenContracts.length; i++) { + if (_amts[i] > 0) { + // add _amts flash loan fees to _amts[i] + require(_ctokenContracts[i].borrow(_amts[i]) == 0, "borrow-failed-collateral?"); + } + } + } +} + +contract CompoundHelpers is CompoundResolver { + struct ImportData { + address[] cTokens; // is the list of all tokens the user has interacted with (supply/borrow) -> used to enter markets + uint[] borrowAmts; + uint[] supplyAmts; + address[] borrowTokens; + address[] supplyTokens; + CTokenInterface[] borrowCtokens; + CTokenInterface[] supplyCtokens; + address[] supplyCtokensAddr; + address[] borrowCtokensAddr; + } + + struct ImportInputData { + address userAccount; + string[] supplyIds; + string[] borrowIds; + } + + function getBorrowAmounts ( + ImportInputData memory _importInputData, + ImportData memory data + ) internal returns(ImportData memory) { + if (_importInputData.borrowIds.length > 0) { + // initialize arrays for borrow data + data.borrowTokens = new address[](_importInputData.borrowIds.length); + data.borrowCtokens = new CTokenInterface[](_importInputData.borrowIds.length); + data.borrowCtokensAddr = new address[](_importInputData.borrowIds.length); + data.borrowAmts = new uint[](_importInputData.borrowIds.length); + + // check for repeated tokens + for (uint i = 0; i < _importInputData.borrowIds.length; i++) { + bytes32 i_hash = keccak256(abi.encode(_importInputData.borrowIds[i])); + for (uint j = i + 1; j < _importInputData.borrowIds.length; j++) { + bytes32 j_hash = keccak256(abi.encode(_importInputData.borrowIds[j])); + require(i_hash != j_hash, "token-repeated"); + } + } + + // populate the arrays with borrow tokens, cToken addresses and instances, and borrow amounts + for (uint i = 0; i < _importInputData.borrowIds.length; i++) { + (address _token, address _cToken) = compMapping.getMapping(_importInputData.borrowIds[i]); + + require(_token != address(0) && _cToken != address(0), "ctoken mapping not found"); + + data.cTokens[i] = _cToken; + + data.borrowTokens[i] = _token; + data.borrowCtokens[i] = CTokenInterface(_cToken); + data.borrowCtokensAddr[i] = _cToken; + data.borrowAmts[i] = data.borrowCtokens[i].borrowBalanceCurrent(_importInputData.userAccount); + + // give the resp. cToken address approval to spend tokens + if (_token != ethAddr && data.borrowAmts[i] > 0) { + // will be required when repaying the borrow amount on behalf of the user + TokenInterface(_token).approve(_cToken, data.borrowAmts[i]); + } + } + } + return data; + } + + function getSupplyAmounts ( + ImportInputData memory _importInputData, + ImportData memory data + ) internal view returns(ImportData memory) { + // initialize arrays for supply data + data.supplyTokens = new address[](_importInputData.supplyIds.length); + data.supplyCtokens = new CTokenInterface[](_importInputData.supplyIds.length); + data.supplyCtokensAddr = new address[](_importInputData.supplyIds.length); + data.supplyAmts = new uint[](_importInputData.supplyIds.length); + + // check for repeated tokens + for (uint i = 0; i < _importInputData.supplyIds.length; i++) { + bytes32 i_hash = keccak256(abi.encode(_importInputData.supplyIds[i])); + for (uint j = i + 1; j < _importInputData.supplyIds.length; j++) { + bytes32 j_hash = keccak256(abi.encode(_importInputData.supplyIds[j])); + require(i_hash != j_hash, "token-repeated"); + } + } + + // populate arrays with supply data (supply tokens address, cToken addresses, cToken instances and supply amounts) + for (uint i = 0; i < _importInputData.supplyIds.length; i++) { + (address _token, address _cToken) = compMapping.getMapping(_importInputData.supplyIds[i]); + + require(_token != address(0) && _cToken != address(0), "ctoken mapping not found"); + + uint _supplyIndex = add(i, _importInputData.borrowIds.length); + data.cTokens[_supplyIndex] = _cToken; + + data.supplyTokens[i] = _token; + data.supplyCtokens[i] = CTokenInterface(_cToken); + data.supplyCtokensAddr[i] = (_cToken); + data.supplyAmts[i] = data.supplyCtokens[i].balanceOf(_importInputData.userAccount); + } + return data; + } +} + +contract CompoundImportResolver is CompoundHelpers, FlashLoanHelper { + + // get info for all the assets the user has supplied as collateral and the assets borrowed + function _importCompound( + ImportInputData memory importInputData + ) internal returns (string memory _eventName, bytes memory _eventParam) { + require(AccountInterface(address(this)).isAuth(importInputData.userAccount), "user-account-not-auth"); + + require(importInputData.supplyIds.length > 0, "0-length-not-allowed"); + + ImportData memory data; + + uint _length = add(importInputData.supplyIds.length, importInputData.borrowIds.length); + data.cTokens = new address[](_length); + + data = getBorrowAmounts(importInputData, data); + data = getSupplyAmounts(importInputData, data); + + for(uint i = 0; i < data.cTokens.length; i++){ + enterMarket(data.cTokens[i]); + } + + // take flash loan for all the borrowed assets + // use the addresses of the borrowed tokens and their amounts to get the same flash loans + _flashLoan(data.borrowTokens, data.borrowAmts); + + // pay back user's debt using flash loan funds + _repayUserDebt(importInputData.userAccount, data.borrowCtokens, data.borrowAmts); + + // transfer user's tokens to DSA + _transferTokensToDsa(importInputData.userAccount, data.supplyCtokens, data.supplyAmts); + + // borrow the earlier position from Compound with flash loan fee added + _borrowDebtPosition(data.borrowCtokens, data.borrowAmts); + + // payback flash loan + _repayFlashLoan(data.borrowTokens, data.borrowAmts); // update borrowAmounts with flash loan fee + + _eventName = "LogCompoundImport(address,address[],string[],string[],uint256[],uint256[])"; + _eventParam = abi.encode( + importInputData.userAccount, + data.cTokens, + importInputData.supplyIds, + importInputData.borrowIds, + data.supplyAmts, + data.borrowAmts + ); + } + + function importCompound( + address userAccount, + string[] memory supplyIds, + string[] memory borrowIds + ) external payable returns (string memory _eventName, bytes memory _eventParam) { + ImportInputData memory inputData = ImportInputData({ + userAccount: userAccount, + supplyIds: supplyIds, + borrowIds: borrowIds + }); + + (_eventName, _eventParam) = _importCompound(inputData); + } + + function migrateCompound( + string[] memory supplyIds, + string[] memory borrowIds + ) external payable returns (string memory _eventName, bytes memory _eventParam) { + ImportInputData memory inputData = ImportInputData({ + userAccount: msg.sender, + supplyIds: supplyIds, + borrowIds: borrowIds + }); + + (_eventName, _eventParam) = _importCompound(inputData); + } +} diff --git a/yarn.lock b/yarn.lock index ecf0f61b..c636f51d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,6 +30,11 @@ dependencies: "regenerator-runtime" "^0.13.4" +"@bitauth/libauth@^1.17.1": + "integrity" "sha512-UtfCijrCcPCQdstlxiv29hBNuYs/1hqeDMgS6CPjxps7r7/y/0p9TRGDx65fczlO12Pa5rQdWO/GzwsXo03uIg==" + "resolved" "https://registry.npmjs.org/@bitauth/libauth/-/libauth-1.19.0.tgz" + "version" "1.19.0" + "@cspotcode/source-map-consumer@0.8.0": "integrity" "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" "resolved" "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" @@ -221,22 +226,7 @@ "rustbn.js" "~0.2.0" "util.promisify" "^1.0.1" -"@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0": - "integrity" "sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw==" - "resolved" "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.0.tgz" - "version" "5.4.0" - dependencies: - "@ethersproject/address" "^5.4.0" - "@ethersproject/bignumber" "^5.4.0" - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/constants" "^5.4.0" - "@ethersproject/hash" "^5.4.0" - "@ethersproject/keccak256" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - "@ethersproject/properties" "^5.4.0" - "@ethersproject/strings" "^5.4.0" - -"@ethersproject/abi@^5.5.0": +"@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.0.12", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@5.5.0": "integrity" "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==" "resolved" "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz" "version" "5.5.0" @@ -279,21 +269,6 @@ "@ethersproject/properties" "^5.0.3" "@ethersproject/strings" "^5.0.4" -"@ethersproject/abi@5.5.0": - "integrity" "sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w==" - "resolved" "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/abstract-provider@^5.0.8": "version" "5.0.8" dependencies: @@ -338,7 +313,7 @@ "@ethersproject/logger" "^5.5.0" "@ethersproject/properties" "^5.5.0" -"@ethersproject/address@^5.0.2", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.5.0", "@ethersproject/address@5.5.0": +"@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.5.0", "@ethersproject/address@5.5.0": "integrity" "sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw==" "resolved" "https://registry.npmjs.org/@ethersproject/address/-/address-5.5.0.tgz" "version" "5.5.0" @@ -385,7 +360,7 @@ "@ethersproject/logger" "^5.0.8" "bn.js" "^4.4.0" -"@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.4.0", "@ethersproject/bignumber@^5.4.1", "@ethersproject/bignumber@^5.5.0", "@ethersproject/bignumber@5.5.0": +"@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.1.1", "@ethersproject/bignumber@^5.4.1", "@ethersproject/bignumber@^5.5.0", "@ethersproject/bignumber@5.5.0": "integrity" "sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg==" "resolved" "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.5.0.tgz" "version" "5.5.0" @@ -446,7 +421,7 @@ optionalDependencies: "@ledgerhq/hw-transport-node-hid" "5.26.0" -"@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.4.0", "@ethersproject/hash@^5.5.0", "@ethersproject/hash@5.5.0": +"@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.5.0", "@ethersproject/hash@5.5.0": "integrity" "sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg==" "resolved" "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.5.0.tgz" "version" "5.5.0" @@ -509,7 +484,7 @@ "aes-js" "3.0.0" "scrypt-js" "3.0.1" -"@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.4.0", "@ethersproject/keccak256@^5.5.0", "@ethersproject/keccak256@5.5.0": +"@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.5.0", "@ethersproject/keccak256@5.5.0": "integrity" "sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg==" "resolved" "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.5.0.tgz" "version" "5.5.0" @@ -523,7 +498,7 @@ "@ethersproject/bytes" "^5.0.9" "js-sha3" "0.5.7" -"@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.4.0", "@ethersproject/logger@^5.5.0", "@ethersproject/logger@5.5.0": +"@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.5.0", "@ethersproject/logger@5.5.0": "integrity" "sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg==" "resolved" "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.5.0.tgz" "version" "5.5.0" @@ -551,7 +526,7 @@ "@ethersproject/bytes" "^5.5.0" "@ethersproject/sha2" "^5.5.0" -"@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.4.0", "@ethersproject/properties@^5.5.0", "@ethersproject/properties@5.5.0": +"@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.5.0", "@ethersproject/properties@5.5.0": "integrity" "sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA==" "resolved" "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.5.0.tgz" "version" "5.5.0" @@ -639,7 +614,7 @@ "elliptic" "6.5.4" "hash.js" "1.1.7" -"@ethersproject/solidity@^5.4.0", "@ethersproject/solidity@5.5.0": +"@ethersproject/solidity@^5.0.0", "@ethersproject/solidity@^5.0.9", "@ethersproject/solidity@^5.4.0", "@ethersproject/solidity@5.5.0": "integrity" "sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw==" "resolved" "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.5.0.tgz" "version" "5.5.0" @@ -651,7 +626,7 @@ "@ethersproject/sha2" "^5.5.0" "@ethersproject/strings" "^5.5.0" -"@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.4.0", "@ethersproject/strings@^5.5.0", "@ethersproject/strings@5.5.0": +"@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.5.0", "@ethersproject/strings@5.5.0": "integrity" "sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ==" "resolved" "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.5.0.tgz" "version" "5.5.0" @@ -901,6 +876,71 @@ dependencies: "@types/bignumber.js" "^5.0.0" +"@oclif/command@^1.8.0": + "integrity" "sha512-rmVKYEsKzurfRU0xJz+iHelbi1LGlihIWZ7Qvmb/CBz1EkhL7nOkW4SVXmG2dA5Ce0si2gr88i6q4eBOMRNJ1w==" + "resolved" "https://registry.npmjs.org/@oclif/command/-/command-1.8.16.tgz" + "version" "1.8.16" + dependencies: + "@oclif/config" "^1.18.2" + "@oclif/errors" "^1.3.5" + "@oclif/help" "^1.0.1" + "@oclif/parser" "^3.8.6" + "debug" "^4.1.1" + "semver" "^7.3.2" + +"@oclif/config@^1.18.2", "@oclif/config@1.18.2": + "integrity" "sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA==" + "resolved" "https://registry.npmjs.org/@oclif/config/-/config-1.18.2.tgz" + "version" "1.18.2" + dependencies: + "@oclif/errors" "^1.3.3" + "@oclif/parser" "^3.8.0" + "debug" "^4.1.1" + "globby" "^11.0.1" + "is-wsl" "^2.1.1" + "tslib" "^2.0.0" + +"@oclif/errors@^1.2.2", "@oclif/errors@^1.3.3", "@oclif/errors@^1.3.5", "@oclif/errors@1.3.5": + "integrity" "sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ==" + "resolved" "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.5.tgz" + "version" "1.3.5" + dependencies: + "clean-stack" "^3.0.0" + "fs-extra" "^8.1" + "indent-string" "^4.0.0" + "strip-ansi" "^6.0.0" + "wrap-ansi" "^7.0.0" + +"@oclif/help@^1.0.1": + "integrity" "sha512-8rsl4RHL5+vBUAKBL6PFI3mj58hjPCp2VYyXD4TAa7IMStikFfOH2gtWmqLzIlxAED2EpD0dfYwo9JJxYsH7Aw==" + "resolved" "https://registry.npmjs.org/@oclif/help/-/help-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "@oclif/config" "1.18.2" + "@oclif/errors" "1.3.5" + "chalk" "^4.1.2" + "indent-string" "^4.0.0" + "lodash" "^4.17.21" + "string-width" "^4.2.0" + "strip-ansi" "^6.0.0" + "widest-line" "^3.1.0" + "wrap-ansi" "^6.2.0" + +"@oclif/linewrap@^1.0.0": + "integrity" "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==" + "resolved" "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz" + "version" "1.0.0" + +"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.6": + "integrity" "sha512-tXb0NKgSgNxmf6baN6naK+CCwOueaFk93FG9u202U7mTBHUKsioOUlw1SG/iPi9aJM3WE4pHLXmty59pci0OEw==" + "resolved" "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.6.tgz" + "version" "3.8.6" + dependencies: + "@oclif/errors" "^1.2.2" + "@oclif/linewrap" "^1.0.0" + "chalk" "^4.1.0" + "tslib" "^2.0.0" + "@openzeppelin/contract-loader@^0.6.2": "integrity" "sha512-/P8v8ZFVwK+Z7rHQH2N3hqzEmTzLFjhMtvNK4FeIak6DEeONZ92vdFaFb10CCCQtp390Rp/Y57Rtfrm50bUdMQ==" "resolved" "https://registry.npmjs.org/@openzeppelin/contract-loader/-/contract-loader-0.6.2.tgz" @@ -1057,10 +1097,10 @@ dependencies: "type-detect" "4.0.8" -"@sinonjs/fake-timers@^7.0.4": - "integrity" "sha512-fUt6b15bjV/VW93UP5opNXJxdwZSbK1EdiwnhN7XrQrcpaOhMJpZ/CjwFpM3THpxwA+YviBUJKSuEqKlCK5alw==" - "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.0.5.tgz" - "version" "7.0.5" +"@sinonjs/fake-timers@^7.1.0": + "integrity" "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==" + "resolved" "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz" + "version" "7.1.2" dependencies: "@sinonjs/commons" "^1.7.0" @@ -1271,6 +1311,18 @@ "resolved" "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-5.0.2.tgz" "version" "5.0.2" +"@types/async-retry@^1.4.2": + "integrity" "sha512-B3C9QmmNULVPL2uSJQ088eGWTNPIeUk35hca6CV8rRDJ8GXuQJP5CCVWA1ZUCrb9xYP7Js/RkLqnNNwKhe+Zsw==" + "resolved" "https://registry.npmjs.org/@types/async-retry/-/async-retry-1.4.3.tgz" + "version" "1.4.3" + dependencies: + "@types/retry" "*" + +"@types/await-timeout@^0.3.1": + "integrity" "sha512-H5PzROT4KuP7XQDua13Iw8did//OCKAZ/3TL15DjvMzDonrk4HvhH1+tLko96f2guU6XaD3AoqRa49ZOwbwNig==" + "resolved" "https://registry.npmjs.org/@types/await-timeout/-/await-timeout-0.3.1.tgz" + "version" "0.3.1" + "@types/bignumber.js@^5.0.0": "integrity" "sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA==" "resolved" "https://registry.npmjs.org/@types/bignumber.js/-/bignumber.js-5.0.0.tgz" @@ -1292,6 +1344,20 @@ dependencies: "@types/node" "*" +"@types/bunyan-blackhole@^0.2.2": + "integrity" "sha512-nbuxFn2FVw1AAT1h6shgluwz1cgpLKaMBYbEZcMU69Jb1UvSsXcwRiIg+FP4+/JjEUp/uPYLC+twWpfCAaVN1g==" + "resolved" "https://registry.npmjs.org/@types/bunyan-blackhole/-/bunyan-blackhole-0.2.2.tgz" + "version" "0.2.2" + dependencies: + "@types/bunyan" "*" + +"@types/bunyan@*", "@types/bunyan@^1.8.6": + "integrity" "sha512-Cblq+Yydg3u+sGiz2mjHjC5MPmdjY+No4qvHrF+BUhblsmSfMvsHLbOG62tPbonsqBj6sbWv1LHcsoe5Jw+/Ow==" + "resolved" "https://registry.npmjs.org/@types/bunyan/-/bunyan-1.8.8.tgz" + "version" "1.8.8" + dependencies: + "@types/node" "*" + "@types/chai-as-promised@^7.1.4": "integrity" "sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA==" "resolved" "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.4.tgz" @@ -1334,6 +1400,11 @@ "@types/level-errors" "*" "@types/node" "*" +"@types/lodash@^4.14.168": + "integrity" "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" + "resolved" "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz" + "version" "4.14.178" + "@types/lru-cache@^5.1.0": "integrity" "sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==" "resolved" "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz" @@ -1374,6 +1445,11 @@ "resolved" "https://registry.npmjs.org/@types/node/-/node-12.20.36.tgz" "version" "12.20.36" +"@types/node@12.12.54": + "integrity" "sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-12.12.54.tgz" + "version" "12.12.54" + "@types/pbkdf2@^3.0.0": "integrity" "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==" "resolved" "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" @@ -1398,6 +1474,11 @@ dependencies: "@types/node" "*" +"@types/retry@*": + "integrity" "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + "resolved" "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz" + "version" "0.12.1" + "@types/secp256k1@^4.0.1": "integrity" "sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog==" "resolved" "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.1.tgz" @@ -1413,12 +1494,17 @@ "@types/chai" "*" "@types/sinon" "*" -"@types/sinon@*": - "integrity" "sha512-jDZ55oCKxqlDmoTBBbBBEx+N8ZraUVhggMZ9T5t+6/Dh8/4NiOjSUfpLrPiEwxQDlAe3wpAkoXhWvE6LibtsMQ==" - "resolved" "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.0.tgz" - "version" "10.0.0" +"@types/sinon@*", "@types/sinon@^10.0.2": + "integrity" "sha512-6EF+wzMWvBNeGrfP3Nx60hhx+FfwSg1JJBLAAP/IdIUq0EYkqCYf70VT3PhuhPX9eLD+Dp+lNdpb/ZeHG8Yezg==" + "resolved" "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.6.tgz" + "version" "10.0.6" dependencies: - "@sinonjs/fake-timers" "^7.0.4" + "@sinonjs/fake-timers" "^7.1.0" + +"@types/stats-lite@^2.2.0": + "integrity" "sha512-YV6SS4QC+pbzqjMIV8qVSTDOOazgKBLTVaN+7PfuxELjz/eyzc20KwDVGPrbHt2OcYMA7K2ezLB45Cp6DpNOSQ==" + "resolved" "https://registry.npmjs.org/@types/stats-lite/-/stats-lite-2.2.0.tgz" + "version" "2.2.0" "@types/through@*": "integrity" "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==" @@ -1440,22 +1526,138 @@ "@types/bn.js" "*" "@types/underscore" "*" +"@uniswap/default-token-list@^2.0.0": + "integrity" "sha512-yfd4snv9K20tEbNwy9Vjym41RU3Yb2lN0seKxsgkr+m3f6oub2lWyXfTiNwgGFbOQPDvX4dxjMhA+M+S7mxqKg==" + "resolved" "https://registry.npmjs.org/@uniswap/default-token-list/-/default-token-list-2.3.0.tgz" + "version" "2.3.0" + "@uniswap/lib@^4.0.1-alpha": "integrity" "sha512-f6UIliwBbRsgVLxIaBANF6w09tYqc6Y/qXdsrbEmXHyFA7ILiKrIwRFXe1yOg8M3cksgVsO9N7yuL2DdCGQKBA==" "resolved" "https://registry.npmjs.org/@uniswap/lib/-/lib-4.0.1-alpha.tgz" "version" "4.0.1-alpha" -"@uniswap/v2-core@1.0.1": +"@uniswap/lib@1.1.1": + "integrity" "sha512-2yK7sLpKIT91TiS5sewHtOa7YuM8IuBXVl4GZv2jZFys4D2sY7K5vZh6MqD25TPA95Od+0YzCVq6cTF2IKrOmg==" + "resolved" "https://registry.npmjs.org/@uniswap/lib/-/lib-1.1.1.tgz" + "version" "1.1.1" + +"@uniswap/router-sdk@^1.0.5": + "integrity" "sha512-PA/0Ye9u3U5cm/LHrJuOgVSff6W4oFY3h+MUEzdp80SYIQdZZJ+BV06RL0h5KOSH+tuIX72n/qNusuRcf2Tc8Q==" + "resolved" "https://registry.npmjs.org/@uniswap/router-sdk/-/router-sdk-1.0.5.tgz" + "version" "1.0.5" + dependencies: + "@ethersproject/abi" "^5.5.0" + "@uniswap/sdk-core" "^3.0.1" + "@uniswap/swap-router-contracts" "1.1.0" + "@uniswap/v2-sdk" "^3.0.1" + "@uniswap/v3-sdk" "^3.7.1" + +"@uniswap/sdk-core@^3.0.0-alpha.3", "@uniswap/sdk-core@^3.0.1": + "integrity" "sha512-WbeDkhZ9myVR0VnHOdTrb8nHKKkqTFa5uE9RvUbG3eyDt2NWWDwhhqGHwAWJEHG405l30Fa1u3PogHDFsIOQlA==" + "resolved" "https://registry.npmjs.org/@uniswap/sdk-core/-/sdk-core-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "@ethersproject/address" "^5.0.2" + "big.js" "^5.2.2" + "decimal.js-light" "^2.5.0" + "jsbi" "^3.1.4" + "tiny-invariant" "^1.1.0" + "toformat" "^2.0.0" + +"@uniswap/smart-order-router@^2.5.12": + "integrity" "sha512-4F0HzyT436XVxOyndBqZu9IK15+gCCg+rH5X80+XW/bdHrJrKN1WfN44NlnjPCee2fKjEiU2AAhEMqVdD2I2gw==" + "resolved" "https://registry.npmjs.org/@uniswap/smart-order-router/-/smart-order-router-2.5.12.tgz" + "version" "2.5.12" + dependencies: + "@bitauth/libauth" "^1.17.1" + "@ethersproject/bignumber" "^5.1.1" + "@oclif/command" "^1.8.0" + "@oclif/errors" "^1.3.5" + "@types/async-retry" "^1.4.2" + "@types/await-timeout" "^0.3.1" + "@types/bunyan" "^1.8.6" + "@types/bunyan-blackhole" "^0.2.2" + "@types/lodash" "^4.14.168" + "@types/sinon" "^10.0.2" + "@types/stats-lite" "^2.2.0" + "@uniswap/default-token-list" "^2.0.0" + "@uniswap/router-sdk" "^1.0.5" + "@uniswap/swap-router-contracts" "1.1.0" + "@uniswap/token-lists" "^1.0.0-beta.25" + "@uniswap/v2-core" "^1.0.1" + "@uniswap/v2-periphery" "^1.1.0-beta.0" + "@uniswap/v2-sdk" "^3.0.1" + "@uniswap/v3-periphery" "^1.1.1" + "@uniswap/v3-sdk" "^3.7.0" + "async-retry" "^1.3.1" + "await-timeout" "^1.1.1" + "axios" "^0.21.1" + "bunyan" "^1.8.15" + "bunyan-blackhole" "^1.1.1" + "bunyan-debug-stream" "^2.0.0" + "cli-logger" "^0.5.40" + "dotenv" "^10.0.0" + "ethereum-types" "^3.5.0" + "ethers" "^5.1.4" + "graphql" "^15.5.0" + "graphql-request" "^3.4.0" + "lodash" "^4.17.21" + "mnemonist" "^0.38.3" + "node-cache" "^5.1.2" + "stats-lite" "^2.2.0" + "tslib" "^1.14.1" + +"@uniswap/swap-router-contracts@1.1.0": + "integrity" "sha512-GPmpx1lvjXWloB95+YUabr3UHJYr3scnSS8EzaNXnNrIz9nYZ+XQcMaJxOKe85Yi7IfcUQpj0HzD2TW99dtolA==" + "resolved" "https://registry.npmjs.org/@uniswap/swap-router-contracts/-/swap-router-contracts-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "@openzeppelin/contracts" "3.4.1-solc-0.7-2" + "@uniswap/v2-core" "1.0.1" + "@uniswap/v3-core" "1.0.0" + "@uniswap/v3-periphery" "1.3.0" + "hardhat-watcher" "^2.1.1" + +"@uniswap/token-lists@^1.0.0-beta.25": + "integrity" "sha512-x5hmIniQ9TGqOBCRqfWcmZi/U5kB0qrHMDQ9igs3nMbK0wwmYLraL4owbIwXFGR/co6/lJYJC4K/Gjn4wZY5mQ==" + "resolved" "https://registry.npmjs.org/@uniswap/token-lists/-/token-lists-1.0.0-beta.27.tgz" + "version" "1.0.0-beta.27" + +"@uniswap/v2-core@^1.0.1", "@uniswap/v2-core@1.0.1": "integrity" "sha512-MtybtkUPSyysqLY2U210NBDeCHX+ltHt3oADGdjqoThZaFRDKwM6k1Nb3F0A3hk5hwuQvytFWhrWHOEq6nVJ8Q==" "resolved" "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.1.tgz" "version" "1.0.1" +"@uniswap/v2-core@1.0.0": + "integrity" "sha512-BJiXrBGnN8mti7saW49MXwxDBRFiWemGetE58q8zgfnPPzQKq55ADltEILqOt6VFZ22kVeVKbF8gVd8aY3l7pA==" + "resolved" "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.0.tgz" + "version" "1.0.0" + +"@uniswap/v2-periphery@^1.1.0-beta.0": + "integrity" "sha512-6dkwAMKza8nzqYiXEr2D86dgW3TTavUvCR0w2Tu33bAbM8Ah43LKAzH7oKKPRT5VJQaMi1jtkGs1E8JPor1n5g==" + "resolved" "https://registry.npmjs.org/@uniswap/v2-periphery/-/v2-periphery-1.1.0-beta.0.tgz" + "version" "1.1.0-beta.0" + dependencies: + "@uniswap/lib" "1.1.1" + "@uniswap/v2-core" "1.0.0" + +"@uniswap/v2-sdk@^3.0.1": + "integrity" "sha512-eSpm2gjo2CZh9FACH5fq42str/oSNyWcDxB27o5k44bEew4sxb+pld4gGIf/byJndLBvArR9PtH8c0n/goNOTw==" + "resolved" "https://registry.npmjs.org/@uniswap/v2-sdk/-/v2-sdk-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "@ethersproject/address" "^5.0.0" + "@ethersproject/solidity" "^5.0.0" + "@uniswap/sdk-core" "^3.0.0-alpha.3" + "tiny-invariant" "^1.1.0" + "tiny-warning" "^1.0.3" + "@uniswap/v3-core@^1.0.0", "@uniswap/v3-core@1.0.0": "integrity" "sha512-kSC4djMGKMHj7sLMYVnn61k9nu+lHjMIxgg9CDQT+s2QYLoA56GbSK9Oxr+qJXzzygbkrmuY6cwgP6cW2JXPFA==" "resolved" "https://registry.npmjs.org/@uniswap/v3-core/-/v3-core-1.0.0.tgz" "version" "1.0.0" -"@uniswap/v3-periphery@^1.3.0": +"@uniswap/v3-periphery@^1.0.1", "@uniswap/v3-periphery@^1.1.1", "@uniswap/v3-periphery@^1.3.0", "@uniswap/v3-periphery@1.3.0": "integrity" "sha512-HjHdI5RkjBl8zz3bqHShrbULFoZSrjbbrRHoO2vbzn+WRzTa6xY4PWphZv2Tlcb38YEKfKHp6NPl5hVedac8uw==" "resolved" "https://registry.npmjs.org/@uniswap/v3-periphery/-/v3-periphery-1.3.0.tgz" "version" "1.3.0" @@ -1467,6 +1669,28 @@ "base64-sol" "1.0.1" "hardhat-watcher" "^2.1.1" +"@uniswap/v3-sdk@^3.7.0", "@uniswap/v3-sdk@^3.7.1": + "integrity" "sha512-Fn+h9zNVzgX8DE0hTWqMyXNF1AhT1ovmzE2dpSsTZmJkxVbc70+DzENeuknTfA+nmemtB915mq4vHrJL3lZGjA==" + "resolved" "https://registry.npmjs.org/@uniswap/v3-sdk/-/v3-sdk-3.8.1.tgz" + "version" "3.8.1" + dependencies: + "@ethersproject/abi" "^5.0.12" + "@ethersproject/solidity" "^5.0.9" + "@uniswap/sdk-core" "^3.0.1" + "@uniswap/v3-periphery" "^1.1.1" + "@uniswap/v3-staker" "1.0.0" + "tiny-invariant" "^1.1.0" + "tiny-warning" "^1.0.3" + +"@uniswap/v3-staker@1.0.0": + "integrity" "sha512-JV0Qc46Px5alvg6YWd+UIaGH9lDuYG/Js7ngxPit1SPaIP30AlVer1UYB7BRYeUVVxE+byUyIeN5jeQ7LLDjIw==" + "resolved" "https://registry.npmjs.org/@uniswap/v3-staker/-/v3-staker-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "@openzeppelin/contracts" "3.4.1-solc-0.7-2" + "@uniswap/v3-core" "1.0.0" + "@uniswap/v3-periphery" "^1.0.1" + "@vue/component-compiler-utils@^3.1.0": "integrity" "sha512-Mci9WJYLRjyJEBkGHMPxZ1ihJ9l6gOy2Gr6hpYZUNpQoe5+nbpeb3w00aP+PSHJygCF+fxJsqp7Af1zGDITzuw==" "resolved" "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.1.tgz" @@ -1878,6 +2102,13 @@ dependencies: "color-convert" "^1.9.0" +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + "ansi-styles@^4.1.0": "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" @@ -2064,6 +2295,13 @@ "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" "version" "1.0.1" +"async-retry@^1.3.1": + "integrity" "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==" + "resolved" "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz" + "version" "1.3.3" + dependencies: + "retry" "0.13.1" + "async@^1.4.2": "version" "1.5.2" @@ -2104,6 +2342,11 @@ "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" "version" "1.0.5" +"await-timeout@^1.1.1": + "integrity" "sha512-gsDXAS6XVc4Jt+7S92MPX6Noq69bdeXUPEaXd8dk3+yVr629LTDLxNt4j1ycBbrU+AStK2PhKIyNIM+xzWMVOQ==" + "resolved" "https://registry.npmjs.org/await-timeout/-/await-timeout-1.1.1.tgz" + "version" "1.1.1" + "aws-sign2@~0.7.0": "integrity" "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" @@ -2614,6 +2857,11 @@ "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz" "version" "9.0.1" +"bignumber.js@~9.0.0": + "integrity" "sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw==" + "resolved" "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.2.tgz" + "version" "9.0.2" + "binary-extensions@^1.0.0": "integrity" "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" @@ -2907,6 +3155,31 @@ "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" "version" "3.0.0" +"bunyan-blackhole@^1.1.1": + "integrity" "sha1-uSCFhtwLTkf09xMhWxvd1l5PYlc=" + "resolved" "https://registry.npmjs.org/bunyan-blackhole/-/bunyan-blackhole-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "stream-blackhole" "^1.0.3" + +"bunyan-debug-stream@^2.0.0": + "integrity" "sha512-MCEoqggU7NMt7f2O+PU8VkqfSkoQoa4lmN/OWhaRfqFRBF1Se2TOXQyLF6NxC+EtfrdthnquQe8jOe83fpEoGA==" + "resolved" "https://registry.npmjs.org/bunyan-debug-stream/-/bunyan-debug-stream-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "colors" "1.4.0" + "exception-formatter" "^1.0.4" + +"bunyan@*", "bunyan@^1.8.15", "bunyan@~1.x.x": + "integrity" "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==" + "resolved" "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz" + "version" "1.8.15" + optionalDependencies: + "dtrace-provider" "~0.8" + "moment" "^2.19.3" + "mv" "~2" + "safe-json-stringify" "~1" + "bytes@3.1.0": "integrity" "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" @@ -3311,6 +3584,11 @@ "inherits" "^2.0.1" "safe-buffer" "^5.0.1" +"circular@^1.0.5": + "integrity" "sha1-fad6+Yu96c5LWzWM1Va13e0tMUk=" + "resolved" "https://registry.npmjs.org/circular/-/circular-1.0.5.tgz" + "version" "1.0.5" + "class-is@^1.1.0": "integrity" "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" "resolved" "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz" @@ -3333,6 +3611,13 @@ dependencies: "source-map" "~0.6.0" +"clean-stack@^3.0.0": + "integrity" "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==" + "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "escape-string-regexp" "4.0.0" + "cli-cursor@^2.1.0": "integrity" "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=" "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz" @@ -3347,11 +3632,31 @@ dependencies: "restore-cursor" "^3.1.0" +"cli-logger@^0.5.40": + "integrity" "sha1-CX8OEbByx8aYomxH9YiinCC0iws=" + "resolved" "https://registry.npmjs.org/cli-logger/-/cli-logger-0.5.40.tgz" + "version" "0.5.40" + dependencies: + "circular" "^1.0.5" + "cli-util" "~1.1.27" + +"cli-regexp@~0.1.0": + "integrity" "sha1-a82TsJ+y7RAl0woRVdWZeVSlNRI=" + "resolved" "https://registry.npmjs.org/cli-regexp/-/cli-regexp-0.1.2.tgz" + "version" "0.1.2" + "cli-spinners@^2.5.0": "integrity" "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" "version" "2.6.1" +"cli-util@~1.1.27": + "integrity" "sha1-QtaeNqBAoyH8nPhRwVE8rcUJMFQ=" + "resolved" "https://registry.npmjs.org/cli-util/-/cli-util-1.1.27.tgz" + "version" "1.1.27" + dependencies: + "cli-regexp" "~0.1.0" + "cli-width@^2.0.0": "integrity" "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" @@ -3404,6 +3709,11 @@ "clone@^2.0.0", "clone@2.1.2": "version" "2.1.2" +"clone@2.x": + "integrity" "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + "resolved" "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz" + "version" "2.1.2" + "code-point-at@^1.0.0": "integrity" "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" @@ -3441,7 +3751,7 @@ "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" "version" "1.1.3" -"colors@^1.4.0": +"colors@^1.0.3", "colors@^1.4.0", "colors@1.4.0": "integrity" "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" "resolved" "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" "version" "1.4.0" @@ -3704,6 +4014,13 @@ "node-fetch" "2.1.2" "whatwg-fetch" "2.0.4" +"cross-fetch@^3.0.6": + "integrity" "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==" + "resolved" "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz" + "version" "3.1.4" + dependencies: + "node-fetch" "2.6.1" + "cross-spawn@^5.0.1": "integrity" "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=" "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" @@ -3904,6 +4221,11 @@ "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" "version" "1.2.0" +"decimal.js-light@^2.5.0": + "integrity" "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + "resolved" "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz" + "version" "2.5.1" + "decode-uri-component@^0.2.0": "integrity" "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" @@ -4161,6 +4483,13 @@ dependencies: "minimatch" "^3.0.4" +"dtrace-provider@~0.8": + "integrity" "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==" + "resolved" "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz" + "version" "0.8.8" + dependencies: + "nan" "^2.14.0" + "duplexer3@^0.1.4": "integrity" "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" @@ -4480,6 +4809,11 @@ "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" "version" "4.0.0" +"escape-string-regexp@4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + "escodegen@1.8.x": "integrity" "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=" "resolved" "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz" @@ -4779,6 +5113,14 @@ "secp256k1" "^4.0.1" "setimmediate" "^1.0.5" +"ethereum-types@^3.5.0": + "integrity" "sha512-iJX96C9W1elWhCZKUiSQfWn9fC+EO+xU2TvAE/p7QhMwcGibihKsxcG27B/4WZAudd8jNoeIhY4PH2qQPLuUfw==" + "resolved" "https://registry.npmjs.org/ethereum-types/-/ethereum-types-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "@types/node" "12.12.54" + "bignumber.js" "~9.0.0" + "ethereum-waffle@^3.2.0", "ethereum-waffle@^3.4.0": "integrity" "sha512-ADBqZCkoSA5Isk486ntKJVjFEawIiC+3HxNqpJqONvh3YXBTNiRfXvJtGuAFLXPG91QaqkGqILEHANAo7j/olQ==" "resolved" "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz" @@ -5095,7 +5437,7 @@ "uuid" "2.0.1" "xmlhttprequest" "1.8.0" -"ethers@^5.0.0", "ethers@^5.0.1", "ethers@^5.0.13", "ethers@^5.0.2", "ethers@^5.1.0", "ethers@^5.1.3", "ethers@^5.4.7", "ethers@^5.5.2": +"ethers@^5.0.0", "ethers@^5.0.1", "ethers@^5.0.13", "ethers@^5.0.2", "ethers@^5.1.0", "ethers@^5.1.3", "ethers@^5.1.4", "ethers@^5.4.7", "ethers@^5.5.2": "integrity" "sha512-EF5W+6Wwcu6BqVwpgmyR5U2+L4c1FQzlM/02dkZOugN3KF0cG9bzHZP+TDJglmPm2/IzCEJDT7KBxzayk7SAHw==" "resolved" "https://registry.npmjs.org/ethers/-/ethers-5.5.2.tgz" "version" "5.5.2" @@ -5187,6 +5529,13 @@ "md5.js" "^1.3.4" "safe-buffer" "^5.1.1" +"exception-formatter@^1.0.4": + "integrity" "sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw==" + "resolved" "https://registry.npmjs.org/exception-formatter/-/exception-formatter-1.0.7.tgz" + "version" "1.0.7" + dependencies: + "colors" "^1.0.3" + "execa@^0.7.0": "integrity" "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=" "resolved" "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz" @@ -5322,6 +5671,11 @@ "snapdragon" "^0.8.1" "to-regex" "^3.0.1" +"extract-files@^9.0.0": + "integrity" "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==" + "resolved" "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz" + "version" "9.0.0" + "extsprintf@^1.2.0", "extsprintf@1.3.0": "integrity" "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" @@ -5354,10 +5708,10 @@ "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" "version" "1.2.0" -"fast-glob@^3.0.3": - "integrity" "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" - "version" "3.2.7" +"fast-glob@^3.0.3", "fast-glob@^3.2.9": + "integrity" "sha512-s9nFhFnvR63wls6/kM88kQqDhMu0AfdjqouE2l5GVQPbqLgyFjjU5ry/r2yKsJxpb9Py1EYNqieFrmMaX4v++A==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.10.tgz" + "version" "3.2.10" dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -5700,6 +6054,15 @@ "jsonfile" "^4.0.0" "universalify" "^0.1.0" +"fs-extra@^8.1": + "integrity" "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==" + "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + "version" "8.1.0" + dependencies: + "graceful-fs" "^4.2.0" + "jsonfile" "^4.0.0" + "universalify" "^0.1.0" + "fs-extra@^9.0.1": "integrity" "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==" "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" @@ -5747,19 +6110,6 @@ "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" "version" "1.0.0" -"fsevents@^1.2.7", "fsevents@~2.1.1": - "integrity" "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" - "version" "1.2.13" - dependencies: - "bindings" "^1.5.0" - "nan" "^2.12.1" - -"fsevents@~2.3.2": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - "function-bind@^1.1.1", "function-bind@~1.1.1": "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" @@ -5939,6 +6289,17 @@ "once" "^1.3.0" "path-is-absolute" "^1.0.0" +"glob@^6.0.1": + "integrity" "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=" + "resolved" "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz" + "version" "6.0.4" + dependencies: + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "2 || 3" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + "glob@^7.0.0", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6": "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" @@ -6019,6 +6380,18 @@ "merge2" "^1.2.3" "slash" "^3.0.0" +"globby@^11.0.1": + "integrity" "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + "version" "11.1.0" + dependencies: + "array-union" "^2.1.0" + "dir-glob" "^3.0.1" + "fast-glob" "^3.2.9" + "ignore" "^5.2.0" + "merge2" "^1.4.1" + "slash" "^3.0.0" + "got@^7.1.0": "integrity" "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==" "resolved" "https://registry.npmjs.org/got/-/got-7.1.0.tgz" @@ -6061,6 +6434,20 @@ "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz" "version" "4.2.6" +"graphql-request@^3.4.0": + "integrity" "sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ==" + "resolved" "https://registry.npmjs.org/graphql-request/-/graphql-request-3.7.0.tgz" + "version" "3.7.0" + dependencies: + "cross-fetch" "^3.0.6" + "extract-files" "^9.0.0" + "form-data" "^3.0.0" + +"graphql@^15.5.0", "graphql@14 - 16": + "integrity" "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" + "resolved" "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz" + "version" "15.8.0" + "growl@1.10.5": "integrity" "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" "resolved" "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" @@ -6520,10 +6907,10 @@ "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" "version" "4.0.6" -"ignore@^5.1.1": - "integrity" "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz" - "version" "5.1.9" +"ignore@^5.1.1", "ignore@^5.2.0": + "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + "version" "5.2.0" "immediate@^3.2.3": "integrity" "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" @@ -6566,6 +6953,11 @@ "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" "version" "0.1.4" +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" + "infer-owner@^1.0.3": "integrity" "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" "resolved" "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" @@ -7061,6 +7453,11 @@ "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" "version" "2.0.0" +"isnumber@~1.0.0": + "integrity" "sha1-Dj+XWbWB2Z3YUIbw7Cp0kJz63QE=" + "resolved" "https://registry.npmjs.org/isnumber/-/isnumber-1.0.0.tgz" + "version" "1.0.0" + "isobject@^2.0.0": "integrity" "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=" "resolved" "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" @@ -7130,6 +7527,11 @@ "argparse" "^1.0.7" "esprima" "^4.0.0" +"jsbi@^3.1.4": + "integrity" "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==" + "resolved" "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz" + "version" "3.2.5" + "jsbn@~0.1.0": "integrity" "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" @@ -7861,7 +8263,7 @@ dependencies: "source-map" "^0.6.1" -"merge2@^1.2.3", "merge2@^1.3.0": +"merge2@^1.2.3", "merge2@^1.3.0", "merge2@^1.4.1": "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" "version" "1.4.1" @@ -8085,7 +8487,7 @@ dependencies: "mkdirp" "*" -"mkdirp@*", "mkdirp@^0.5.0", "mkdirp@^0.5.1", "mkdirp@^0.5.3", "mkdirp@^0.5.5", "mkdirp@~0.5.0", "mkdirp@0.5.5", "mkdirp@0.5.x": +"mkdirp@*", "mkdirp@^0.5.0", "mkdirp@^0.5.1", "mkdirp@^0.5.3", "mkdirp@^0.5.5", "mkdirp@~0.5.0", "mkdirp@~0.5.1", "mkdirp@0.5.5", "mkdirp@0.5.x": "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" "version" "0.5.5" @@ -8097,7 +8499,7 @@ "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" "version" "1.0.4" -"mnemonist@^0.38.0": +"mnemonist@^0.38.0", "mnemonist@^0.38.3": "integrity" "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==" "resolved" "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz" "version" "0.38.3" @@ -8139,6 +8541,11 @@ "resolved" "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz" "version" "4.14.0" +"moment@^2.19.3": + "integrity" "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz" + "version" "2.29.1" + "move-concurrently@^1.0.1": "integrity" "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=" "resolved" "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" @@ -8225,15 +8632,19 @@ "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" "version" "0.0.8" -"nan@^2.12.1": - "integrity" "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" - "resolved" "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz" - "version" "2.13.2" +"mv@~2": + "integrity" "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=" + "resolved" "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "mkdirp" "~0.5.1" + "ncp" "~2.0.0" + "rimraf" "~2.4.0" "nan@^2.14.0": - "integrity" "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==" - "resolved" "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz" - "version" "2.14.2" + "integrity" "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" + "resolved" "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz" + "version" "2.15.0" "nano-base32@^1.0.1": "integrity" "sha1-ulSMh578+5DaHE2eCX20pGySVe8=" @@ -8272,6 +8683,11 @@ "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" "version" "1.4.0" +"ncp@~2.0.0": + "integrity" "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" + "resolved" "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + "version" "2.0.0" + "negotiator@0.6.2": "integrity" "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" @@ -8321,6 +8737,13 @@ "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.2.tgz" "version" "3.0.2" +"node-cache@^5.1.2": + "integrity" "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==" + "resolved" "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "clone" "2.x" + "node-emoji@^1.10.0": "integrity" "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==" "resolved" "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" @@ -8336,7 +8759,7 @@ "object.getownpropertydescriptors" "^2.0.3" "semver" "^5.7.0" -"node-fetch@^2.6.0", "node-fetch@^2.6.1": +"node-fetch@^2.6.0", "node-fetch@^2.6.1", "node-fetch@2.6.1": "integrity" "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" "version" "2.6.1" @@ -9800,6 +10223,11 @@ "resolved" "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" "version" "0.1.15" +"retry@0.13.1": + "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + "version" "0.13.1" + "reusify@^1.0.4": "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" @@ -9819,6 +10247,13 @@ dependencies: "glob" "^7.1.3" +"rimraf@~2.4.0": + "integrity" "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz" + "version" "2.4.5" + dependencies: + "glob" "^6.0.1" + "rimraf@2.6.3": "integrity" "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==" "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz" @@ -9909,6 +10344,11 @@ dependencies: "events" "^3.0.0" +"safe-json-stringify@~1": + "integrity" "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==" + "resolved" "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz" + "version" "1.2.0" + "safe-regex@^1.1.0": "integrity" "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=" "resolved" "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" @@ -10015,6 +10455,13 @@ "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" "version" "6.3.0" +"semver@^7.3.2": + "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" + "version" "7.3.5" + dependencies: + "lru-cache" "^6.0.0" + "semver@^7.3.4": "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==" "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" @@ -10496,11 +10943,23 @@ "define-property" "^0.2.5" "object-copy" "^0.1.0" +"stats-lite@^2.2.0": + "integrity" "sha512-/Kz55rgUIv2KP2MKphwYT/NCuSfAlbbMRv2ZWw7wyXayu230zdtzhxxuXXcvsc6EmmhS8bSJl3uS1wmMHFumbA==" + "resolved" "https://registry.npmjs.org/stats-lite/-/stats-lite-2.2.0.tgz" + "version" "2.2.0" + dependencies: + "isnumber" "~1.0.0" + "statuses@>= 1.5.0 < 2", "statuses@~1.5.0": "integrity" "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" "version" "1.5.0" +"stream-blackhole@^1.0.3": + "integrity" "sha1-b8LiwunZ/ea+jGjT24jeCYAuTWM=" + "resolved" "https://registry.npmjs.org/stream-blackhole/-/stream-blackhole-1.0.3.tgz" + "version" "1.0.3" + "stream-browserify@^2.0.1": "integrity" "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==" "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" @@ -10580,7 +11039,16 @@ "is-fullwidth-code-point" "^2.0.0" "strip-ansi" "^5.1.0" -"string-width@^4.1.0": +"string-width@^4.0.0": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^4.1.0", "string-width@^4.2.0": "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" "version" "4.2.3" @@ -10919,6 +11387,16 @@ dependencies: "setimmediate" "^1.0.4" +"tiny-invariant@^1.1.0": + "integrity" "sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==" + "resolved" "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz" + "version" "1.2.0" + +"tiny-warning@^1.0.3": + "integrity" "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "resolved" "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" + "version" "1.0.3" + "title-case@^2.1.0": "integrity" "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=" "resolved" "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz" @@ -10984,6 +11462,11 @@ "regex-not" "^1.0.2" "safe-regex" "^1.1.0" +"toformat@^2.0.0": + "integrity" "sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ==" + "resolved" "https://registry.npmjs.org/toformat/-/toformat-2.0.0.tgz" + "version" "2.0.0" + "toidentifier@1.0.0": "integrity" "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" @@ -11058,11 +11541,16 @@ "make-error" "^1.1.1" "yn" "3.1.1" -"tslib@^1.9.0", "tslib@^1.9.3": +"tslib@^1.14.1", "tslib@^1.9.0", "tslib@^1.9.3": "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" "version" "1.14.1" +"tslib@^2.0.0": + "integrity" "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" + "version" "2.3.1" + "tslib@^2.2.0": "integrity" "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" @@ -12420,6 +12908,13 @@ dependencies: "string-width" "^1.0.2 || 2" +"widest-line@^3.1.0": + "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" + "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "string-width" "^4.0.0" + "window-size@^0.2.0": "integrity" "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=" "resolved" "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz" @@ -12469,6 +12964,24 @@ "string-width" "^3.0.0" "strip-ansi" "^5.0.0" +"wrap-ansi@^6.2.0": + "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + "wrappy@1": "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"