diff --git a/contracts/mocks/TrendingManagerMock.sol b/contracts/mocks/TrendingManagerMock.sol new file mode 100644 index 0000000..09932e8 --- /dev/null +++ b/contracts/mocks/TrendingManagerMock.sol @@ -0,0 +1,39 @@ +/* + Copyright 2020 Set Labs Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +pragma solidity 0.5.7; +pragma experimental "ABIEncoderV2"; + + +/** + * @title TrendingManagerMock + * @author Set Protocol + * + * Mock for TrendingManagerMock to test viewer. + */ +contract TrendingManagerMock { + uint256 public lastCrossoverConfirmationTimestamp; + uint256 public recentInitialProposeTimestamp; + + constructor( + uint256 _crossoverTimestamp + ) + public + { + lastCrossoverConfirmationTimestamp = _crossoverTimestamp; + recentInitialProposeTimestamp = _crossoverTimestamp; + } +} \ No newline at end of file diff --git a/contracts/viewer/ProtocolViewer.sol b/contracts/viewer/ProtocolViewer.sol index aa7d109..751c666 100644 --- a/contracts/viewer/ProtocolViewer.sol +++ b/contracts/viewer/ProtocolViewer.sol @@ -18,6 +18,7 @@ pragma solidity 0.5.7; pragma experimental "ABIEncoderV2"; import { ERC20Viewer } from "./lib/ERC20Viewer.sol"; +import { ManagerViewer } from "./lib/ManagerViewer.sol"; import { RebalancingSetTokenViewer } from "./lib/RebalancingSetTokenViewer.sol"; import { TradingPoolViewer } from "./lib/TradingPoolViewer.sol"; import { CTokenViewer } from "./lib/CTokenViewer.sol"; @@ -36,5 +37,6 @@ contract ProtocolViewer is ERC20Viewer, RebalancingSetTokenViewer, TradingPoolViewer, - CTokenViewer + CTokenViewer, + ManagerViewer {} diff --git a/contracts/viewer/lib/ManagerViewer.sol b/contracts/viewer/lib/ManagerViewer.sol new file mode 100644 index 0000000..9c9354e --- /dev/null +++ b/contracts/viewer/lib/ManagerViewer.sol @@ -0,0 +1,76 @@ +/* + Copyright 2020 Set Labs Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +pragma solidity 0.5.7; +pragma experimental "ABIEncoderV2"; + +import { IAssetPairManager } from "set-protocol-strategies/contracts/managers/interfaces/IAssetPairManager.sol"; +import { IMACOStrategyManagerV2 } from "set-protocol-strategies/contracts/managers/interfaces/IMACOStrategyManagerV2.sol"; + + +/** + * @title ManagerViewer + * @author Set Protocol + * + * Interfaces for fetching multiple managers state in a single read + */ +contract ManagerViewer { + + function batchFetchMACOV2CrossoverTimestamp( + IMACOStrategyManagerV2[] calldata _managers + ) + external + view + returns (uint256[] memory) + { + // Cache length of addresses to fetch owner for + uint256 _managerCount = _managers.length; + + // Instantiate output array in memory + uint256[] memory timestamps = new uint256[](_managerCount); + + for (uint256 i = 0; i < _managerCount; i++) { + IMACOStrategyManagerV2 manager = _managers[i]; + + timestamps[i] = manager.lastCrossoverConfirmationTimestamp(); + } + + return timestamps; + } + + function batchFetchAssetPairCrossoverTimestamp( + IAssetPairManager[] calldata _managers + ) + external + view + returns (uint256[] memory) + { + // Cache length of addresses to fetch owner for + uint256 _managerCount = _managers.length; + + // Instantiate output array in memory + uint256[] memory timestamps = new uint256[](_managerCount); + + for (uint256 i = 0; i < _managerCount; i++) { + IAssetPairManager manager = _managers[i]; + + timestamps[i] = manager.recentInitialProposeTimestamp(); + } + + return timestamps; + } + +} diff --git a/contracts/viewer/lib/TradingPoolViewer.sol b/contracts/viewer/lib/TradingPoolViewer.sol index 11e60b8..e29be47 100644 --- a/contracts/viewer/lib/TradingPoolViewer.sol +++ b/contracts/viewer/lib/TradingPoolViewer.sol @@ -22,10 +22,14 @@ import { ERC20Detailed } from "openzeppelin-solidity/contracts/token/ERC20/ERC20 import { ISocialTradingManager } from "set-protocol-strategies/contracts/managers/interfaces/ISocialTradingManager.sol"; import { SocialTradingLibrary } from "set-protocol-strategies/contracts/managers/lib/SocialTradingLibrary.sol"; +import { IFeeCalculator } from "set-protocol-contracts/contracts/core/interfaces/IFeeCalculator.sol"; import { ILiquidator } from "set-protocol-contracts/contracts/core/interfaces/ILiquidator.sol"; +import { IPerformanceFeeCalculator } from "set-protocol-contracts/contracts/core/interfaces/IPerformanceFeeCalculator.sol"; import { IRebalancingSetTokenV2 } from "set-protocol-contracts/contracts/core/interfaces/IRebalancingSetTokenV2.sol"; -import { RebalancingLibrary } from "set-protocol-contracts/contracts/core/lib/RebalancingLibrary.sol"; +import { IRebalancingSetTokenV3 } from "set-protocol-contracts/contracts/core/interfaces/IRebalancingSetTokenV3.sol"; import { ISetToken } from "set-protocol-contracts/contracts/core/interfaces/ISetToken.sol"; +import { PerformanceFeeLibrary } from "set-protocol-contracts/contracts/core/fee-calculators/lib/PerformanceFeeLibrary.sol"; +import { RebalancingLibrary } from "set-protocol-contracts/contracts/core/lib/RebalancingLibrary.sol"; /** @@ -80,30 +84,55 @@ contract TradingPoolViewer { view returns (SocialTradingLibrary.PoolInfo memory, TradingPoolCreateInfo memory, CollateralSetInfo memory) { - TradingPoolCreateInfo memory tradingPoolInfo = TradingPoolCreateInfo({ - manager: _tradingPool.manager(), - feeRecipient: _tradingPool.feeRecipient(), - currentSet: _tradingPool.currentSet(), - unitShares: _tradingPool.unitShares(), - naturalUnit: _tradingPool.naturalUnit(), - rebalanceInterval: _tradingPool.rebalanceInterval(), - entryFee: _tradingPool.entryFee(), - rebalanceFee: _tradingPool.rebalanceFee(), - lastRebalanceTimestamp: _tradingPool.lastRebalanceTimestamp(), - rebalanceState: _tradingPool.rebalanceState(), - name: _tradingPool.name(), - symbol: _tradingPool.symbol() - }); + TradingPoolCreateInfo memory tradingPoolInfo = getTradingPoolInfo( + address(_tradingPool) + ); SocialTradingLibrary.PoolInfo memory poolInfo = ISocialTradingManager(tradingPoolInfo.manager).pools( address(_tradingPool) ); - CollateralSetInfo memory collateralSetInfo = getCollateralSetInfo(tradingPoolInfo.currentSet); + CollateralSetInfo memory collateralSetInfo = getCollateralSetInfo( + tradingPoolInfo.currentSet + ); return (poolInfo, tradingPoolInfo, collateralSetInfo); } + function fetchNewTradingPoolV2Details( + IRebalancingSetTokenV3 _tradingPool + ) + external + view + returns ( + SocialTradingLibrary.PoolInfo memory, + TradingPoolCreateInfo memory, + PerformanceFeeLibrary.FeeState memory, + CollateralSetInfo memory, + address + ) + { + TradingPoolCreateInfo memory tradingPoolInfo = getTradingPoolInfo( + address(_tradingPool) + ); + + SocialTradingLibrary.PoolInfo memory poolInfo = ISocialTradingManager(tradingPoolInfo.manager).pools( + address(_tradingPool) + ); + + PerformanceFeeLibrary.FeeState memory performanceFeeInfo = getPerformanceFeeState( + address(_tradingPool) + ); + + CollateralSetInfo memory collateralSetInfo = getCollateralSetInfo( + tradingPoolInfo.currentSet + ); + + address performanceFeeCalculatorAddress = address(_tradingPool.rebalanceFeeCalculator()); + + return (poolInfo, tradingPoolInfo, performanceFeeInfo, collateralSetInfo, performanceFeeCalculatorAddress); + } + function fetchTradingPoolRebalanceDetails( IRebalancingSetTokenV2 _tradingPool ) @@ -138,6 +167,30 @@ contract TradingPoolViewer { return (poolInfo, tradingPoolInfo, collateralSetInfo); } + function batchFetchTradingPoolOperator( + IRebalancingSetTokenV2[] calldata _tradingPools + ) + external + view + returns (address[] memory) + { + // Cache length of addresses to fetch owner for + uint256 _poolCount = _tradingPools.length; + + // Instantiate output array in memory + address[] memory operators = new address[](_poolCount); + + for (uint256 i = 0; i < _poolCount; i++) { + IRebalancingSetTokenV2 tradingPool = _tradingPools[i]; + + operators[i] = ISocialTradingManager(tradingPool.manager()).pools( + address(tradingPool) + ).trader; + } + + return operators; + } + function batchFetchTradingPoolEntryFees( IRebalancingSetTokenV2[] calldata _tradingPools ) @@ -178,6 +231,59 @@ contract TradingPoolViewer { return rebalanceFees; } + function batchFetchTradingPoolAccumulation( + IRebalancingSetTokenV3[] calldata _tradingPools + ) + external + view + returns (uint256[] memory, uint256[] memory) + { + // Cache length of addresses to fetch rebalanceFees for + uint256 _poolCount = _tradingPools.length; + + // Instantiate streaming fees output array in memory + uint256[] memory streamingFees = new uint256[](_poolCount); + + // Instantiate profit fees output array in memory + uint256[] memory profitFees = new uint256[](_poolCount); + + for (uint256 i = 0; i < _poolCount; i++) { + address rebalanceFeeCalculatorAddress = address(_tradingPools[i].rebalanceFeeCalculator()); + + ( + streamingFees[i], + profitFees[i] + ) = IPerformanceFeeCalculator(rebalanceFeeCalculatorAddress).getCalculatedFees( + address(_tradingPools[i]) + ); + } + + return (streamingFees, profitFees); + } + + + function batchFetchTradingPoolFeeState( + IRebalancingSetTokenV3[] calldata _tradingPools + ) + external + view + returns (PerformanceFeeLibrary.FeeState[] memory) + { + // Cache length of addresses to fetch rebalanceFees for + uint256 _poolCount = _tradingPools.length; + + // Instantiate output array in memory + PerformanceFeeLibrary.FeeState[] memory feeStates = new PerformanceFeeLibrary.FeeState[](_poolCount); + + for (uint256 i = 0; i < _poolCount; i++) { + feeStates[i] = getPerformanceFeeState( + address(_tradingPools[i]) + ); + } + + return feeStates; + } + /* ============ Internal Functions ============ */ function getCollateralSetInfo( @@ -195,4 +301,42 @@ contract TradingPoolViewer { symbol: ERC20Detailed(address(_collateralSet)).symbol() }); } + + function getTradingPoolInfo( + address _tradingPool + ) + internal + view + returns (TradingPoolCreateInfo memory) + { + IRebalancingSetTokenV2 rebalancingSetTokenV2Instance = IRebalancingSetTokenV2(_tradingPool); + + return TradingPoolCreateInfo({ + manager: rebalancingSetTokenV2Instance.manager(), + feeRecipient: rebalancingSetTokenV2Instance.feeRecipient(), + currentSet: rebalancingSetTokenV2Instance.currentSet(), + unitShares: rebalancingSetTokenV2Instance.unitShares(), + naturalUnit: rebalancingSetTokenV2Instance.naturalUnit(), + rebalanceInterval: rebalancingSetTokenV2Instance.rebalanceInterval(), + entryFee: rebalancingSetTokenV2Instance.entryFee(), + rebalanceFee: rebalancingSetTokenV2Instance.rebalanceFee(), + lastRebalanceTimestamp: rebalancingSetTokenV2Instance.lastRebalanceTimestamp(), + rebalanceState: rebalancingSetTokenV2Instance.rebalanceState(), + name: rebalancingSetTokenV2Instance.name(), + symbol: rebalancingSetTokenV2Instance.symbol() + }); + } + + function getPerformanceFeeState( + address _tradingPool + ) + internal + view + returns (PerformanceFeeLibrary.FeeState memory) + { + IRebalancingSetTokenV3 rebalancingSetTokenV3Instance = IRebalancingSetTokenV3(_tradingPool); + + address rebalanceFeeCalculatorAddress = address(rebalancingSetTokenV3Instance.rebalanceFeeCalculator()); + return IPerformanceFeeCalculator(rebalanceFeeCalculatorAddress).feeState(_tradingPool); + } } diff --git a/package.json b/package.json index f62851f..01fcf8f 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "test": "test" }, "scripts": { - "chain": "yarn clean-chain && ganache-cli --db blockchain --networkId 50 --accounts 20 -l 19000000 -e 10000000000 -m 'concert load couple harbor equip island argue ramp clarify fence smart topic'", + "chain": "yarn clean-chain && ganache-cli --db blockchain --networkId 50 --accounts 20 -l 20000000 -e 10000000000 -m 'concert load couple harbor equip island argue ramp clarify fence smart topic'", "clean": "rm -rf build; rm -rf transpiled; rm -rf types/generated", "clean-chain": "rm -rf blockchain && cp -r snapshots/0x-Kyber-Compound blockchain", "compile": "./node_modules/.bin/truffle compile --all", @@ -78,7 +78,7 @@ "set-abi-gen": "1.1.0-beta.1", "solc": "^0.5.4", "solidity-coverage": "^0.6.3", - "truffle": "^5.0.37", + "truffle": "^5.1.12", "@truffle/contract": "^4.0.2", "tslint": "^5.8.0", "tslint-no-unused-expression-chai": "0.0.3", @@ -98,8 +98,8 @@ "lint-staged": "^7.2.0", "module-alias": "^2.1.0", "openzeppelin-solidity": "^2.2", - "set-protocol-contracts": "^1.3.34-beta", - "set-protocol-strategies": "^1.1.26", + "set-protocol-contracts": "^1.3.48-beta", + "set-protocol-strategies": "1.1.29", "set-protocol-oracles": "^1.0.5", "set-protocol-utils": "^1.0.0-beta.45", "tiny-promisify": "^1.0.0", @@ -108,7 +108,8 @@ "ts-node": "^8.0.2", "tslint-eslint-rules": "^5.3.1", "web3": "1.0.0-beta.36", - "web3-utils": "1.0.0-beta.36" + "web3-utils": "1.0.0-beta.36", + "zos-lib": "^2.4.2" }, "husky": { "hooks": { diff --git a/test/contracts/viewer/lib/managerViewer.spec.ts b/test/contracts/viewer/lib/managerViewer.spec.ts new file mode 100644 index 0000000..3969755 --- /dev/null +++ b/test/contracts/viewer/lib/managerViewer.spec.ts @@ -0,0 +1,99 @@ +require('module-alias/register'); + +import * as chai from 'chai'; +import { Address } from 'set-protocol-utils'; +import { BigNumber } from 'bignumber.js'; + +import ChaiSetup from '@utils/chaiSetup'; +import { BigNumberSetup } from '@utils/bigNumberSetup'; +import { + ManagerViewerContract, + TrendingManagerMockContract +} from '@utils/contracts'; + +import { + Blockchain, +} from 'set-protocol-contracts'; +import { ProtocolViewerHelper } from '@utils/helpers/protocolViewerHelper'; + +BigNumberSetup.configure(); +ChaiSetup.configure(); +const blockchain = new Blockchain(web3); +const { expect } = chai; + +contract('ManagerViewer', accounts => { + const [ + deployerAccount, + ] = accounts; + + let trendingManagerMock1: TrendingManagerMockContract; + let trendingManagerMock2: TrendingManagerMockContract; + + let crossoverTimestamp1: BigNumber; + let crossoverTimestamp2: BigNumber; + + const protocolViewerHelper = new ProtocolViewerHelper(deployerAccount); + + let managerViewer: ManagerViewerContract; + + beforeEach(async () => { + await blockchain.saveSnapshotAsync(); + + crossoverTimestamp1 = new BigNumber(14800000000); + crossoverTimestamp2 = new BigNumber(11800000000); + trendingManagerMock1 = await protocolViewerHelper.deployTrendingManagerMockAsync( + crossoverTimestamp1 + ); + trendingManagerMock2 = await protocolViewerHelper.deployTrendingManagerMockAsync( + crossoverTimestamp2 + ); + + managerViewer = await protocolViewerHelper.deployManagerViewerAsync(); + }); + + afterEach(async () => { + await blockchain.revertAsync(); + }); + + describe('#batchFetchMACOV2CrossoverTimestamp', async () => { + let subjectManagerAddresses: Address[]; + + beforeEach(async () => { + subjectManagerAddresses = [trendingManagerMock1.address, trendingManagerMock2.address]; + }); + + async function subject(): Promise { + return managerViewer.batchFetchMACOV2CrossoverTimestamp.callAsync( + subjectManagerAddresses, + ); + } + + it('fetches the lastCrossoverConfirmationTimestamp of the MACO Managers', async () => { + const actualCrossoverArray = await subject(); + + const expectedEntryFeeArray = [crossoverTimestamp1, crossoverTimestamp2]; + expect(JSON.stringify(actualCrossoverArray)).to.equal(JSON.stringify(expectedEntryFeeArray)); + }); + }); + + describe('#batchFetchAssetPairCrossoverTimestamp', async () => { + let subjectManagerAddresses: Address[]; + + beforeEach(async () => { + subjectManagerAddresses = [trendingManagerMock1.address, trendingManagerMock2.address]; + }); + + async function subject(): Promise { + return managerViewer.batchFetchAssetPairCrossoverTimestamp.callAsync( + subjectManagerAddresses, + ); + } + + it('fetches the recentInitialProposeTimestamp of the Asset Pair Managers', async () => { + const actualCrossoverArray = await subject(); + + const expectedEntryFeeArray = [crossoverTimestamp1, crossoverTimestamp2]; + expect(JSON.stringify(actualCrossoverArray)).to.equal(JSON.stringify(expectedEntryFeeArray)); + }); + }); +}); diff --git a/test/contracts/viewer/lib/tradingPoolViewer.spec.ts b/test/contracts/viewer/lib/tradingPoolViewer.spec.ts index b72e915..5411f9e 100644 --- a/test/contracts/viewer/lib/tradingPoolViewer.spec.ts +++ b/test/contracts/viewer/lib/tradingPoolViewer.spec.ts @@ -17,9 +17,12 @@ import { FixedFeeCalculatorContract, LinearAuctionLiquidatorContract, OracleWhiteListContract, + PerformanceFeeCalculatorContract, SetTokenContract, RebalancingSetTokenV2Contract, RebalancingSetTokenV2FactoryContract, + RebalancingSetTokenV3Contract, + RebalancingSetTokenV3FactoryContract, SetTokenFactoryContract, StandardTokenMockContract, TransferProxyContract, @@ -35,6 +38,7 @@ import { DEFAULT_REBALANCING_NATURAL_UNIT, DEFAULT_UNIT_SHARES, ONE_DAY_IN_SECONDS, + ONE_YEAR_IN_SECONDS, ZERO, } from '@utils/constants'; import { getWeb3 } from '@utils/web3Helper'; @@ -46,6 +50,7 @@ import { FeeCalculatorHelper, LiquidatorHelper, RebalancingSetV2Helper, + RebalancingSetV3Helper, ValuationHelper, } from 'set-protocol-contracts'; import { @@ -65,6 +70,7 @@ contract('TradingPoolViewer', accounts => { feeRecipient, trader, allocator, + trader2, ] = accounts; let rebalancingSetToken: RebalancingSetTokenV2Contract; @@ -74,6 +80,7 @@ contract('TradingPoolViewer', accounts => { let vault: VaultContract; let setTokenFactory: SetTokenFactoryContract; let rebalancingFactory: RebalancingSetTokenV2FactoryContract; + let rebalancingSetTokenV3Factory: RebalancingSetTokenV3FactoryContract; let rebalancingComponentWhiteList: WhiteListContract; let liquidatorWhitelist: WhiteListContract; let liquidator: LinearAuctionLiquidatorContract; @@ -110,16 +117,22 @@ contract('TradingPoolViewer', accounts => { const coreHelper = new CoreHelper(deployerAccount, deployerAccount); const erc20Helper = new ERC20Helper(deployerAccount); + const feeCalculatorHelper = new FeeCalculatorHelper(deployerAccount); + const oracleHelper = new OracleHelper(deployerAccount); const rebalancingHelper = new RebalancingSetV2Helper( deployerAccount, coreHelper, erc20Helper, blockchain ); - const oracleHelper = new OracleHelper(deployerAccount); + const rebalancingSetV3Helper = new RebalancingSetV3Helper( + deployerAccount, + coreHelper, + erc20Helper, + blockchain + ); const valuationHelper = new ValuationHelper(deployerAccount, coreHelper, erc20Helper, oracleHelper); const liquidatorHelper = new LiquidatorHelper(deployerAccount, erc20Helper, valuationHelper); - const feeCalculatorHelper = new FeeCalculatorHelper(deployerAccount); const viewerHelper = new ProtocolViewerHelper(deployerAccount); before(async () => { @@ -141,15 +154,8 @@ contract('TradingPoolViewer', accounts => { rebalancingComponentWhiteList = await coreHelper.deployWhiteListAsync(); liquidatorWhitelist = await coreHelper.deployWhiteListAsync(); feeCalculatorWhitelist = await coreHelper.deployWhiteListAsync(); - rebalancingFactory = await coreHelper.deployRebalancingSetTokenV2FactoryAsync( - coreMock.address, - rebalancingComponentWhiteList.address, - liquidatorWhitelist.address, - feeCalculatorWhitelist.address, - ); await coreHelper.setDefaultStateAndAuthorizationsAsync(coreMock, vault, transferProxy, setTokenFactory); - await coreHelper.addFactoryAsync(coreMock, rebalancingFactory); component1 = await erc20Helper.deployTokenAsync(deployerAccount); component2 = await erc20Helper.deployTokenAsync(deployerAccount); @@ -232,6 +238,14 @@ contract('TradingPoolViewer', accounts => { let feeUpdateTimestamp: BigNumber; beforeEach(async () => { + rebalancingFactory = await coreHelper.deployRebalancingSetTokenV2FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingFactory); + currentSetToken = set1; setManager = await viewerHelper.deploySocialTradingManagerMockAsync(); @@ -315,6 +329,234 @@ contract('TradingPoolViewer', accounts => { }); }); + describe('#fetchNewTradingPoolV2Details', async () => { + let subjectTradingPool: Address; + + let ethOracleWhiteList: OracleWhiteListContract; + let usdOracleWhiteList: OracleWhiteListContract; + + let wrappedETH: StandardTokenMockContract; + let wrappedBTC: StandardTokenMockContract; + let usdc: StandardTokenMockContract; + let dai: StandardTokenMockContract; + + let collateralSet: SetTokenContract; + let collateralSetComponents: Address[]; + let collateralSetUnits: BigNumber[]; + let collateralSetNaturalUnit: BigNumber; + + let firstSetUnits: BigNumber; + + let setManager: SocialTradingManagerMockContract; + let lastRebalanceTimestamp: BigNumber; + let currentAllocation: BigNumber; + + let usdWrappedETHOracle: UpdatableOracleMockContract; + let usdWrappedBTCOracle: UpdatableOracleMockContract; + let usdUSDCOracle: UpdatableOracleMockContract; + let usdDaiOracle: UpdatableOracleMockContract; + + let ethWrappedETHOracle: UpdatableOracleMockContract; + let ethWrappedBTCOracle: UpdatableOracleMockContract; + let ethUSDCOracle: UpdatableOracleMockContract; + let ethDaiOracle: UpdatableOracleMockContract; + + let ethPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + + beforeEach(async () => { + rebalancingSetTokenV3Factory = await viewerHelper.deployRebalancingSetTokenV3FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingSetTokenV3Factory); + + wrappedETH = await erc20Helper.deployTokenAsync(deployerAccount, 18); + wrappedBTC = await erc20Helper.deployTokenAsync(deployerAccount, 8); + usdc = await erc20Helper.deployTokenAsync(deployerAccount, 6); + dai = await erc20Helper.deployTokenAsync(deployerAccount, 18); + + let wrappedETHPrice: BigNumber; + let wrappedBTCPrice: BigNumber; + let usdcPrice: BigNumber; + let daiPrice: BigNumber; + + wrappedETHPrice = ether(128); + wrappedBTCPrice = ether(7500); + usdcPrice = ether(1); + daiPrice = ether(1); + + usdWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedETHPrice); + usdWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedBTCPrice); + usdUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync(usdcPrice); + usdDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync(daiPrice); + + usdOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [usdWrappedETHOracle.address, usdWrappedBTCOracle.address, usdUSDCOracle.address, usdDaiOracle.address], + ); + + ethWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedETHPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedBTCPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + usdcPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync( + daiPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + + ethOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [ethWrappedETHOracle.address, ethWrappedBTCOracle.address, ethUSDCOracle.address, ethDaiOracle.address], + ); + + const maxProfitFeePercentage = ether(.5); + const maxStreamingFeePercentage = ether(.1); + ethPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + ethOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(ethPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + collateralSetComponents = [wrappedETH.address, wrappedBTC.address]; + collateralSetUnits = [wrappedBTCPrice.div(wrappedETHPrice).mul(10 ** 12), new BigNumber(100)]; + collateralSetNaturalUnit = new BigNumber(10 ** 12); + collateralSet = await coreHelper.createSetTokenAsync( + coreMock, + setTokenFactory.address, + collateralSetComponents, + collateralSetUnits, + collateralSetNaturalUnit, + ); + + setManager = await viewerHelper.deploySocialTradingManagerMockAsync(); + + const failPeriod = ONE_DAY_IN_SECONDS; + const { timestamp } = await web3.eth.getBlock('latest'); + lastRebalanceTimestamp = timestamp; + + const calculatorData = feeCalculatorHelper.generatePerformanceFeeCallDataBuffer( + ONE_DAY_IN_SECONDS.mul(30), + ONE_YEAR_IN_SECONDS, + ether(.2), + ether(.02) + ); + + const firstNaturalUnit = DEFAULT_REBALANCING_NATURAL_UNIT; + const firstSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + firstSetUnits = new BigNumber(100).mul(firstNaturalUnit).mul(10 ** 18).div(firstSetValue).round(0, 3); + const firstSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + setManager.address, + liquidator.address, + feeRecipient, + ethPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + failPeriod, + lastRebalanceTimestamp, + ZERO, + calculatorData + ); + + rebalancingSetToken = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [firstSetUnits], + firstNaturalUnit, + firstSetCallData + ); + + currentAllocation = ether(.6); + await setManager.updateRecord.sendTransactionAsync( + rebalancingSetToken.address, + trader, + allocator, + currentAllocation + ); + + subjectTradingPool = rebalancingSetToken.address; + }); + + async function subject(): Promise { + return poolViewer.fetchNewTradingPoolV2Details.callAsync( + subjectTradingPool + ); + } + + it('fetches the correct RebalancingSetTokenV3/TradingPool data', async () => { + const [ , tradingPoolInfo, , , ] = await subject(); + + expect(tradingPoolInfo.manager).to.equal(setManager.address); + expect(tradingPoolInfo.feeRecipient).to.equal(feeRecipient); + expect(tradingPoolInfo.currentSet).to.equal(collateralSet.address); + expect(tradingPoolInfo.name).to.equal('Rebalancing Set Token'); + expect(tradingPoolInfo.symbol).to.equal('RBSET'); + expect(tradingPoolInfo.unitShares).to.be.bignumber.equal(firstSetUnits); + expect(tradingPoolInfo.naturalUnit).to.be.bignumber.equal(DEFAULT_REBALANCING_NATURAL_UNIT); + expect(tradingPoolInfo.rebalanceInterval).to.be.bignumber.equal(ONE_DAY_IN_SECONDS); + expect(tradingPoolInfo.entryFee).to.be.bignumber.equal(ZERO); + expect(tradingPoolInfo.lastRebalanceTimestamp).to.be.bignumber.equal(lastRebalanceTimestamp); + expect(tradingPoolInfo.rebalanceState).to.be.bignumber.equal(ZERO); + }); + + it('fetches the correct poolInfo data', async () => { + const [ poolInfo, , , , ] = await subject(); + + expect(poolInfo.trader).to.equal(trader); + expect(poolInfo.allocator).to.equal(allocator); + expect(poolInfo.currentAllocation).to.be.bignumber.equal(currentAllocation); + expect(poolInfo.newEntryFee).to.be.bignumber.equal(ZERO); + expect(poolInfo.feeUpdateTimestamp).to.be.bignumber.equal(ZERO); + }); + + + it('fetches the correct RebalancingSetTokenV3/Performance Fee data', async () => { + const [ , , performanceFeeState, , ] = await subject(); + const [ + profitFeePeriod, + highWatermarkResetPeriod, + profitFeePercentage, + streamingFeePercentage, + highWatermark, + lastProfitFeeTimestamp, + lastStreamingFeeTimestamp, + ] = performanceFeeState; + + const expectedFeeStates: any = await ethPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken.address); + + expect(profitFeePeriod).to.equal(expectedFeeStates.profitFeePeriod); + expect(highWatermarkResetPeriod).to.equal(expectedFeeStates.highWatermarkResetPeriod); + expect(profitFeePercentage).to.equal(expectedFeeStates.profitFeePercentage); + expect(streamingFeePercentage).to.equal(expectedFeeStates.streamingFeePercentage); + expect(highWatermark).to.equal(expectedFeeStates.highWatermark); + expect(lastProfitFeeTimestamp).to.equal(expectedFeeStates.lastProfitFeeTimestamp); + expect(lastStreamingFeeTimestamp).to.equal(expectedFeeStates.lastStreamingFeeTimestamp); + }); + + it('fetches the correct CollateralSet data', async () => { + const [ , , , collateralSetData, ] = await subject(); + + expect(JSON.stringify(collateralSetData.components)).to.equal(JSON.stringify(collateralSetComponents)); + expect(JSON.stringify(collateralSetData.units)).to.equal(JSON.stringify(collateralSetUnits)); + expect(collateralSetData.naturalUnit).to.be.bignumber.equal(collateralSetNaturalUnit); + expect(collateralSetData.name).to.equal('Set Token'); + expect(collateralSetData.symbol).to.equal('SET'); + }); + + it('fetches the correct PerformanceFeeCalculator address', async () => { + const [ , , , , performanceFeeCalculatorAddress ] = await subject(); + + expect(performanceFeeCalculatorAddress).to.equal(ethPerformanceFeeCalculator.address); + }); + }); + describe('#fetchTradingPoolRebalanceDetails', async () => { let subjectTradingPool: Address; let setManager: SocialTradingManagerMockContract; @@ -323,6 +565,14 @@ contract('TradingPoolViewer', accounts => { let nextSet: SetTokenContract; beforeEach(async () => { + rebalancingFactory = await coreHelper.deployRebalancingSetTokenV2FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingFactory); + const currentSetToken = set1; setManager = await viewerHelper.deploySocialTradingManagerMockAsync(); @@ -424,21 +674,26 @@ contract('TradingPoolViewer', accounts => { }); }); - describe('#batchFetchTradingPoolEntryFees', async () => { + describe('#batchFetchTradingPoolOperator', async () => { let subjectTradingPools: Address[]; let rebalancingSetToken2: RebalancingSetTokenV2Contract; - let entryFee1: BigNumber; - let entryFee2: BigNumber; beforeEach(async () => { + rebalancingFactory = await coreHelper.deployRebalancingSetTokenV2FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingFactory); + const setManager = await viewerHelper.deploySocialTradingManagerMockAsync(); const failPeriod = ONE_DAY_IN_SECONDS; const { timestamp } = await web3.eth.getBlock('latest'); const lastRebalanceTimestamp = timestamp; - entryFee1 = ether(.02); rebalancingSetToken = await rebalancingHelper.createDefaultRebalancingSetTokenV2Async( coreMock, rebalancingFactory.address, @@ -449,57 +704,75 @@ contract('TradingPoolViewer', accounts => { set1.address, failPeriod, lastRebalanceTimestamp, - entryFee1 ); - entryFee2 = ether(.03); rebalancingSetToken2 = await rebalancingHelper.createDefaultRebalancingSetTokenV2Async( coreMock, rebalancingFactory.address, - setManager.address, + setManager.address, // Set as other address liquidator.address, feeRecipient, fixedFeeCalculator.address, set1.address, failPeriod, lastRebalanceTimestamp, - entryFee2 + ); + + await setManager.updateRecord.sendTransactionAsync( + rebalancingSetToken.address, + trader, // Set to first trader + allocator, + ether(.3) + ); + + await setManager.updateRecord.sendTransactionAsync( + rebalancingSetToken2.address, + trader2, // Set to second trader + allocator, + ether(.6) ); subjectTradingPools = [rebalancingSetToken.address, rebalancingSetToken2.address]; }); async function subject(): Promise { - return poolViewer.batchFetchTradingPoolEntryFees.callAsync( + return poolViewer.batchFetchTradingPoolOperator.callAsync( subjectTradingPools ); } - it('fetches the correct entryFee array', async () => { - const actualEntryFeeArray = await subject(); + it('fetches the correct operators array', async () => { + const actualOperatorsArray = await subject(); - const expectedEntryFeeArray = [entryFee1, entryFee2]; + const expectedOperatorsArray = [trader, trader2]; - expect(JSON.stringify(actualEntryFeeArray)).to.equal(JSON.stringify(expectedEntryFeeArray)); + expect(JSON.stringify(actualOperatorsArray)).to.equal(JSON.stringify(expectedOperatorsArray)); }); }); - describe('#batchFetchTradingPoolRebalanceFees', async () => { + describe('#batchFetchTradingPoolEntryFees', async () => { let subjectTradingPools: Address[]; let rebalancingSetToken2: RebalancingSetTokenV2Contract; - let rebalanceFee1: BigNumber; - let rebalanceFee2: BigNumber; + let entryFee1: BigNumber; + let entryFee2: BigNumber; beforeEach(async () => { + rebalancingFactory = await coreHelper.deployRebalancingSetTokenV2FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingFactory); + const setManager = await viewerHelper.deploySocialTradingManagerMockAsync(); const failPeriod = ONE_DAY_IN_SECONDS; const { timestamp } = await web3.eth.getBlock('latest'); const lastRebalanceTimestamp = timestamp; - const entryFee = ether(.02); - rebalanceFee1 = ether(.002); + entryFee1 = ether(.02); rebalancingSetToken = await rebalancingHelper.createDefaultRebalancingSetTokenV2Async( coreMock, rebalancingFactory.address, @@ -510,11 +783,10 @@ contract('TradingPoolViewer', accounts => { set1.address, failPeriod, lastRebalanceTimestamp, - entryFee, - rebalanceFee1 + entryFee1 ); - rebalanceFee2 = ether(.003); + entryFee2 = ether(.03); rebalancingSetToken2 = await rebalancingHelper.createDefaultRebalancingSetTokenV2Async( coreMock, rebalancingFactory.address, @@ -525,25 +797,665 @@ contract('TradingPoolViewer', accounts => { set1.address, failPeriod, lastRebalanceTimestamp, - entryFee, - rebalanceFee2 + entryFee2 ); subjectTradingPools = [rebalancingSetToken.address, rebalancingSetToken2.address]; }); async function subject(): Promise { + return poolViewer.batchFetchTradingPoolEntryFees.callAsync( + subjectTradingPools + ); + } + + it('fetches the correct entryFee array', async () => { + const actualEntryFeeArray = await subject(); + + const expectedEntryFeeArray = [entryFee1, entryFee2]; + + expect(JSON.stringify(actualEntryFeeArray)).to.equal(JSON.stringify(expectedEntryFeeArray)); + }); + }); + + describe('#batchFetchTradingPoolRebalanceFees', async () => { + let subjectTradingPools: Address[]; + + let ethOracleWhiteList: OracleWhiteListContract; + let usdOracleWhiteList: OracleWhiteListContract; + + let wrappedETH: StandardTokenMockContract; + let wrappedBTC: StandardTokenMockContract; + let usdc: StandardTokenMockContract; + let dai: StandardTokenMockContract; + + let collateralSet: SetTokenContract; + + let usdWrappedETHOracle: UpdatableOracleMockContract; + let usdWrappedBTCOracle: UpdatableOracleMockContract; + let usdUSDCOracle: UpdatableOracleMockContract; + let usdDaiOracle: UpdatableOracleMockContract; + + let ethWrappedETHOracle: UpdatableOracleMockContract; + let ethWrappedBTCOracle: UpdatableOracleMockContract; + let ethUSDCOracle: UpdatableOracleMockContract; + let ethDaiOracle: UpdatableOracleMockContract; + + let ethPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + let usdPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + + let rebalancingSetToken2: RebalancingSetTokenV3Contract; + + let subjectIncreaseChainTime: BigNumber; + + beforeEach(async () => { + rebalancingSetTokenV3Factory = await viewerHelper.deployRebalancingSetTokenV3FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingSetTokenV3Factory); + + wrappedETH = await erc20Helper.deployTokenAsync(deployerAccount, 18); + wrappedBTC = await erc20Helper.deployTokenAsync(deployerAccount, 8); + usdc = await erc20Helper.deployTokenAsync(deployerAccount, 6); + dai = await erc20Helper.deployTokenAsync(deployerAccount, 18); + + let wrappedETHPrice: BigNumber; + let wrappedBTCPrice: BigNumber; + let usdcPrice: BigNumber; + let daiPrice: BigNumber; + + wrappedETHPrice = ether(128); + wrappedBTCPrice = ether(7500); + usdcPrice = ether(1); + daiPrice = ether(1); + + usdWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedETHPrice); + usdWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedBTCPrice); + usdUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync(usdcPrice); + usdDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync(daiPrice); + + usdOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [usdWrappedETHOracle.address, usdWrappedBTCOracle.address, usdUSDCOracle.address, usdDaiOracle.address], + ); + + ethWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedETHPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedBTCPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + usdcPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync( + daiPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + + ethOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [ethWrappedETHOracle.address, ethWrappedBTCOracle.address, ethUSDCOracle.address, ethDaiOracle.address], + ); + + const maxProfitFeePercentage = ether(.5); + const maxStreamingFeePercentage = ether(.1); + ethPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + ethOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(ethPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const collateralSetComponents = [wrappedETH.address, wrappedBTC.address]; + const collateralSetUnits = [wrappedBTCPrice.div(wrappedETHPrice).mul(10 ** 12), new BigNumber(100)]; + const collateralSetNaturalUnit = new BigNumber(10 ** 12); + collateralSet = await coreHelper.createSetTokenAsync( + coreMock, + setTokenFactory.address, + collateralSetComponents, + collateralSetUnits, + collateralSetNaturalUnit, + ); + + const failPeriod = ONE_DAY_IN_SECONDS; + const { timestamp } = await web3.eth.getBlock('latest'); + const lastRebalanceTimestamp = timestamp; + + const calculatorData = feeCalculatorHelper.generatePerformanceFeeCallDataBuffer( + ONE_DAY_IN_SECONDS.mul(30), + ONE_YEAR_IN_SECONDS, + ether(.2), + ether(.02) + ); + + const firstNaturalUnit = DEFAULT_REBALANCING_NATURAL_UNIT; + const firstSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const firstSetUnits = new BigNumber(100).mul(firstNaturalUnit).mul(10 ** 18).div(firstSetValue).round(0, 3); + const firstSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + feeRecipient, + ethPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + failPeriod, + lastRebalanceTimestamp, + ZERO, + calculatorData + ); + + rebalancingSetToken = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [firstSetUnits], + firstNaturalUnit, + firstSetCallData + ); + + usdPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + usdOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(usdPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const secondNaturalUnit = new BigNumber(10 ** 8); + const secondSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const secondSetUnits = new BigNumber(100).mul(secondNaturalUnit).mul(10 ** 18).div(secondSetValue).round(0, 3); + const secondSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + deployerAccount, + usdPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + ONE_DAY_IN_SECONDS.mul(2), + ZERO, + ZERO, + calculatorData + ); + + rebalancingSetToken2 = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [secondSetUnits], + secondNaturalUnit, + secondSetCallData + ); + + subjectTradingPools = [rebalancingSetToken.address, rebalancingSetToken2.address]; + subjectIncreaseChainTime = ONE_YEAR_IN_SECONDS; + }); + + async function subject(): Promise { + await blockchain.increaseTimeAsync(subjectIncreaseChainTime); + await blockchain.mineBlockAsync(); return poolViewer.batchFetchTradingPoolRebalanceFees.callAsync( subjectTradingPools ); } + it('fetches the correct fee accumulation array', async () => { + const feeState1 = await ethPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken.address); + const feeState2 = await usdPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken2.address); + + const actualFeeArray = await subject(); + + const lastBlock = await web3.eth.getBlock('latest'); + + const rebalancingSetValue1 = await valuationHelper.calculateRebalancingSetTokenValueAsync( + rebalancingSetToken, + ethOracleWhiteList, + ); + const rebalancingSetValue2 = await valuationHelper.calculateRebalancingSetTokenValueAsync( + rebalancingSetToken2, + usdOracleWhiteList, + ); + const expectedFee1 = await feeCalculatorHelper.calculateAccruedFeesAsync( + feeState1, + rebalancingSetValue1, + new BigNumber(lastBlock.timestamp) + ); + const expectedFee2 = await feeCalculatorHelper.calculateAccruedFeesAsync( + feeState2, + rebalancingSetValue2, + new BigNumber(lastBlock.timestamp) + ); + + const expectedFeeArray = [expectedFee1, expectedFee2]; + + expect(JSON.stringify(actualFeeArray)).to.equal(JSON.stringify(expectedFeeArray)); + }); + }); + + describe('#batchFetchTradingPoolAccumulation', async () => { + let subjectTradingPools: Address[]; + + let ethOracleWhiteList: OracleWhiteListContract; + let usdOracleWhiteList: OracleWhiteListContract; + + let wrappedETH: StandardTokenMockContract; + let wrappedBTC: StandardTokenMockContract; + let usdc: StandardTokenMockContract; + let dai: StandardTokenMockContract; + + let collateralSet: SetTokenContract; + + let usdWrappedETHOracle: UpdatableOracleMockContract; + let usdWrappedBTCOracle: UpdatableOracleMockContract; + let usdUSDCOracle: UpdatableOracleMockContract; + let usdDaiOracle: UpdatableOracleMockContract; + + let ethWrappedETHOracle: UpdatableOracleMockContract; + let ethWrappedBTCOracle: UpdatableOracleMockContract; + let ethUSDCOracle: UpdatableOracleMockContract; + let ethDaiOracle: UpdatableOracleMockContract; + + let ethPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + let usdPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + + let rebalancingSetToken2: RebalancingSetTokenV3Contract; + + let subjectIncreaseChainTime: BigNumber; + + beforeEach(async () => { + rebalancingSetTokenV3Factory = await viewerHelper.deployRebalancingSetTokenV3FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingSetTokenV3Factory); + + wrappedETH = await erc20Helper.deployTokenAsync(deployerAccount, 18); + wrappedBTC = await erc20Helper.deployTokenAsync(deployerAccount, 8); + usdc = await erc20Helper.deployTokenAsync(deployerAccount, 6); + dai = await erc20Helper.deployTokenAsync(deployerAccount, 18); + + let wrappedETHPrice: BigNumber; + let wrappedBTCPrice: BigNumber; + let usdcPrice: BigNumber; + let daiPrice: BigNumber; + + wrappedETHPrice = ether(128); + wrappedBTCPrice = ether(7500); + usdcPrice = ether(1); + daiPrice = ether(1); + + usdWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedETHPrice); + usdWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedBTCPrice); + usdUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync(usdcPrice); + usdDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync(daiPrice); + + usdOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [usdWrappedETHOracle.address, usdWrappedBTCOracle.address, usdUSDCOracle.address, usdDaiOracle.address], + ); + + ethWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedETHPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedBTCPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + usdcPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync( + daiPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + + ethOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [ethWrappedETHOracle.address, ethWrappedBTCOracle.address, ethUSDCOracle.address, ethDaiOracle.address], + ); + + const maxProfitFeePercentage = ether(.5); + const maxStreamingFeePercentage = ether(.1); + ethPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + ethOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(ethPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const collateralSetComponents = [wrappedETH.address, wrappedBTC.address]; + const collateralSetUnits = [wrappedBTCPrice.div(wrappedETHPrice).mul(10 ** 12), new BigNumber(100)]; + const collateralSetNaturalUnit = new BigNumber(10 ** 12); + collateralSet = await coreHelper.createSetTokenAsync( + coreMock, + setTokenFactory.address, + collateralSetComponents, + collateralSetUnits, + collateralSetNaturalUnit, + ); + + const failPeriod = ONE_DAY_IN_SECONDS; + const { timestamp } = await web3.eth.getBlock('latest'); + const lastRebalanceTimestamp = timestamp; + + const calculatorData = feeCalculatorHelper.generatePerformanceFeeCallDataBuffer( + ONE_DAY_IN_SECONDS.mul(30), + ONE_YEAR_IN_SECONDS, + ether(.2), + ether(.02) + ); + + const firstNaturalUnit = DEFAULT_REBALANCING_NATURAL_UNIT; + const firstSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const firstSetUnits = new BigNumber(100).mul(firstNaturalUnit).mul(10 ** 18).div(firstSetValue).round(0, 3); + const firstSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + feeRecipient, + ethPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + failPeriod, + lastRebalanceTimestamp, + ZERO, + calculatorData + ); + + rebalancingSetToken = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [firstSetUnits], + firstNaturalUnit, + firstSetCallData + ); + + usdPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + usdOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(usdPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const secondNaturalUnit = new BigNumber(10 ** 8); + const secondSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const secondSetUnits = new BigNumber(100).mul(secondNaturalUnit).mul(10 ** 18).div(secondSetValue).round(0, 3); + const secondSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + deployerAccount, + usdPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + ONE_DAY_IN_SECONDS.mul(2), + ZERO, + ZERO, + calculatorData + ); + + rebalancingSetToken2 = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [secondSetUnits], + secondNaturalUnit, + secondSetCallData + ); + + subjectTradingPools = [rebalancingSetToken.address, rebalancingSetToken2.address]; + subjectIncreaseChainTime = ONE_YEAR_IN_SECONDS; + }); + + async function subject(): Promise { + await blockchain.increaseTimeAsync(subjectIncreaseChainTime); + await blockchain.mineBlockAsync(); + return poolViewer.batchFetchTradingPoolAccumulation.callAsync( + subjectTradingPools + ); + } + + it('fetches the correct profit/streaming fee accumulation array', async () => { + const feeState1: any = await ethPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken.address); + const feeState2: any = await usdPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken2.address); + + const [ + actualStreamingFeeArray, + actualProfitFeeArray, + ] = await subject(); + + const lastBlock = await web3.eth.getBlock('latest'); + + const rebalancingSetValue1 = await valuationHelper.calculateRebalancingSetTokenValueAsync( + rebalancingSetToken, + ethOracleWhiteList, + ); + const rebalancingSetValue2 = await valuationHelper.calculateRebalancingSetTokenValueAsync( + rebalancingSetToken2, + usdOracleWhiteList, + ); + const expectedStreamingFee1 = await feeCalculatorHelper.calculateAccruedStreamingFee( + feeState1.streamingFeePercentage, + new BigNumber(lastBlock.timestamp).sub(feeState1.lastStreamingFeeTimestamp) + ); + const expectedStreamingFee2 = await feeCalculatorHelper.calculateAccruedStreamingFee( + feeState2.streamingFeePercentage, + new BigNumber(lastBlock.timestamp).sub(feeState2.lastStreamingFeeTimestamp) + ); + + const expectedProfitFee1 = await feeCalculatorHelper.calculateAccruedProfitFeeAsync( + feeState1, + rebalancingSetValue1, + new BigNumber(lastBlock.timestamp) + ); + const expectedProfitFee2 = await feeCalculatorHelper.calculateAccruedProfitFeeAsync( + feeState2, + rebalancingSetValue2, + new BigNumber(lastBlock.timestamp) + ); + + const expectedStreamingFeeArray = [expectedStreamingFee1, expectedStreamingFee2]; + const expectedProfitFeeArray = [expectedProfitFee1, expectedProfitFee2]; + + expect(JSON.stringify(actualStreamingFeeArray)).to.equal(JSON.stringify(expectedStreamingFeeArray)); + expect(JSON.stringify(actualProfitFeeArray)).to.equal(JSON.stringify(expectedProfitFeeArray)); + }); + }); + + describe('#batchFetchTradingPoolFeeState', async () => { + let subjectTradingPools: Address[]; + + let ethOracleWhiteList: OracleWhiteListContract; + let usdOracleWhiteList: OracleWhiteListContract; + + let wrappedETH: StandardTokenMockContract; + let wrappedBTC: StandardTokenMockContract; + let usdc: StandardTokenMockContract; + let dai: StandardTokenMockContract; + + let collateralSet: SetTokenContract; + + let usdWrappedETHOracle: UpdatableOracleMockContract; + let usdWrappedBTCOracle: UpdatableOracleMockContract; + let usdUSDCOracle: UpdatableOracleMockContract; + let usdDaiOracle: UpdatableOracleMockContract; + + let ethWrappedETHOracle: UpdatableOracleMockContract; + let ethWrappedBTCOracle: UpdatableOracleMockContract; + let ethUSDCOracle: UpdatableOracleMockContract; + let ethDaiOracle: UpdatableOracleMockContract; + + let ethPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + let usdPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + + let secondRebalancingSetToken: RebalancingSetTokenV3Contract; + + beforeEach(async () => { + rebalancingSetTokenV3Factory = await viewerHelper.deployRebalancingSetTokenV3FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingSetTokenV3Factory); + + wrappedETH = await erc20Helper.deployTokenAsync(deployerAccount, 18); + wrappedBTC = await erc20Helper.deployTokenAsync(deployerAccount, 8); + usdc = await erc20Helper.deployTokenAsync(deployerAccount, 6); + dai = await erc20Helper.deployTokenAsync(deployerAccount, 18); + + let wrappedETHPrice: BigNumber; + let wrappedBTCPrice: BigNumber; + let usdcPrice: BigNumber; + let daiPrice: BigNumber; + + wrappedETHPrice = ether(128); + wrappedBTCPrice = ether(7500); + usdcPrice = ether(1); + daiPrice = ether(1); + + usdWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedETHPrice); + usdWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedBTCPrice); + usdUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync(usdcPrice); + usdDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync(daiPrice); + + usdOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [usdWrappedETHOracle.address, usdWrappedBTCOracle.address, usdUSDCOracle.address, usdDaiOracle.address], + ); + + ethWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedETHPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedBTCPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + usdcPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync( + daiPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + + ethOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [ethWrappedETHOracle.address, ethWrappedBTCOracle.address, ethUSDCOracle.address, ethDaiOracle.address], + ); + + const maxProfitFeePercentage = ether(.5); + const maxStreamingFeePercentage = ether(.1); + ethPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + ethOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(ethPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const collateralSetComponents = [wrappedETH.address, wrappedBTC.address]; + const collateralSetUnits = [wrappedBTCPrice.div(wrappedETHPrice).mul(10 ** 12), new BigNumber(100)]; + const collateralSetNaturalUnit = new BigNumber(10 ** 12); + collateralSet = await coreHelper.createSetTokenAsync( + coreMock, + setTokenFactory.address, + collateralSetComponents, + collateralSetUnits, + collateralSetNaturalUnit, + ); + + const calculatorData = feeCalculatorHelper.generatePerformanceFeeCallDataBuffer( + ONE_DAY_IN_SECONDS.mul(30), + ONE_YEAR_IN_SECONDS, + ether(.2), + ether(.02) + ); + + const firstNaturalUnit = new BigNumber(10 ** 8); + const firstSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const firstSetUnits = new BigNumber(100).mul(firstNaturalUnit).mul(10 ** 18).div(firstSetValue).round(0, 3); + const firstSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + deployerAccount, + ethPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + ONE_DAY_IN_SECONDS.mul(2), + ZERO, + ZERO, + calculatorData + ); + + rebalancingSetToken = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [firstSetUnits], + firstNaturalUnit, + firstSetCallData + ); + + usdPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + usdOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(usdPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const secondNaturalUnit = new BigNumber(10 ** 8); + const secondSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const secondSetUnits = new BigNumber(100).mul(secondNaturalUnit).mul(10 ** 18).div(secondSetValue).round(0, 3); + const secondSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + deployerAccount, + usdPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + ONE_DAY_IN_SECONDS.mul(2), + ZERO, + ZERO, + calculatorData + ); + + secondRebalancingSetToken = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [secondSetUnits], + secondNaturalUnit, + secondSetCallData + ); + + subjectTradingPools = [rebalancingSetToken.address, secondRebalancingSetToken.address]; + }); + + async function subject(): Promise { + return poolViewer.batchFetchTradingPoolFeeState.callAsync( + subjectTradingPools + ); + } + it('fetches the correct rebalanceFee array', async () => { - const actualEntryRebalanceArray = await subject(); + const tradingPoolFeeStates = await subject(); - const expectedEntryRebalanceArray = [rebalanceFee1, rebalanceFee2]; + const firstFeeState: any = await ethPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken.address); + const secondFeeState: any = await usdPerformanceFeeCalculator.feeState.callAsync( + secondRebalancingSetToken.address + ); + + const expectedFeeStateInfo = _.map([firstFeeState, secondFeeState], feeStates => + [ + feeStates.profitFeePeriod, + feeStates.highWatermarkResetPeriod, + feeStates.profitFeePercentage, + feeStates.streamingFeePercentage, + feeStates.highWatermark, + feeStates.lastProfitFeeTimestamp, + feeStates.lastStreamingFeeTimestamp, + ] + ); - expect(JSON.stringify(actualEntryRebalanceArray)).to.equal(JSON.stringify(expectedEntryRebalanceArray)); + expect(JSON.stringify(tradingPoolFeeStates)).to.equal(JSON.stringify(expectedFeeStateInfo)); }); }); }); diff --git a/test/contracts/viewer/protocolViewer.spec.ts b/test/contracts/viewer/protocolViewer.spec.ts index c935fc1..0541aa7 100644 --- a/test/contracts/viewer/protocolViewer.spec.ts +++ b/test/contracts/viewer/protocolViewer.spec.ts @@ -1,5 +1,6 @@ require('module-alias/register'); +import * as _ from 'lodash'; import * as ABIDecoder from 'abi-decoder'; import * as chai from 'chai'; import * as setProtocolUtils from 'set-protocol-utils'; @@ -18,10 +19,13 @@ import { FixedFeeCalculatorContract, LinearAuctionLiquidatorContract, OracleWhiteListContract, + PerformanceFeeCalculatorContract, RebalancingSetTokenContract, RebalancingSetTokenV2Contract, + RebalancingSetTokenV3Contract, RebalancingSetTokenFactoryContract, RebalancingSetTokenV2FactoryContract, + RebalancingSetTokenV3FactoryContract, SetTokenContract, SetTokenFactoryContract, StandardTokenMockContract, @@ -32,10 +36,12 @@ import { import { ProtocolViewerContract, SocialTradingManagerMockContract, + TrendingManagerMockContract } from '@utils/contracts'; import { ether, gWei } from '@utils/units'; import { ONE_DAY_IN_SECONDS, + ONE_YEAR_IN_SECONDS, DEFAULT_AUCTION_PRICE_NUMERATOR, DEFAULT_AUCTION_PRICE_DIVISOR, DEFAULT_REBALANCING_NATURAL_UNIT, @@ -52,6 +58,7 @@ import { LiquidatorHelper, RebalancingHelper, RebalancingSetV2Helper, + RebalancingSetV3Helper, ValuationHelper, } from 'set-protocol-contracts'; import { @@ -75,6 +82,7 @@ contract('ProtocolViewer', accounts => { feeRecipient, trader, allocator, + trader2, ] = accounts; const coreHelper = new CoreHelper(deployerAccount, deployerAccount); @@ -358,6 +366,7 @@ contract('ProtocolViewer', accounts => { let vault: VaultContract; let setTokenFactory: SetTokenFactoryContract; let rebalancingFactory: RebalancingSetTokenV2FactoryContract; + let rebalancingSetTokenV3Factory: RebalancingSetTokenV3FactoryContract; let rebalancingComponentWhiteList: WhiteListContract; let liquidatorWhitelist: WhiteListContract; let liquidator: LinearAuctionLiquidatorContract; @@ -392,6 +401,13 @@ contract('ProtocolViewer', accounts => { blockchain ); + const rebalancingSetV3Helper = new RebalancingSetV3Helper( + deployerAccount, + coreHelper, + erc20Helper, + blockchain + ); + let currentSetToken: SetTokenContract; let currentAllocation: BigNumber; let lastRebalanceTimestamp: BigNumber; @@ -557,6 +573,235 @@ contract('ProtocolViewer', accounts => { }); }); + describe('#fetchNewTradingPoolV2Details', async () => { + let subjectTradingPool: Address; + + let ethOracleWhiteList: OracleWhiteListContract; + let usdOracleWhiteList: OracleWhiteListContract; + + let wrappedETH: StandardTokenMockContract; + let wrappedBTC: StandardTokenMockContract; + let usdc: StandardTokenMockContract; + let dai: StandardTokenMockContract; + + let collateralSet: SetTokenContract; + let collateralSetComponents: Address[]; + let collateralSetUnits: BigNumber[]; + let collateralSetNaturalUnit: BigNumber; + + let firstSetUnits: BigNumber; + + let setManager: SocialTradingManagerMockContract; + let lastRebalanceTimestamp: BigNumber; + let currentAllocation: BigNumber; + + let usdWrappedETHOracle: UpdatableOracleMockContract; + let usdWrappedBTCOracle: UpdatableOracleMockContract; + let usdUSDCOracle: UpdatableOracleMockContract; + let usdDaiOracle: UpdatableOracleMockContract; + + let ethWrappedETHOracle: UpdatableOracleMockContract; + let ethWrappedBTCOracle: UpdatableOracleMockContract; + let ethUSDCOracle: UpdatableOracleMockContract; + let ethDaiOracle: UpdatableOracleMockContract; + + let ethPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + + beforeEach(async () => { + rebalancingSetTokenV3Factory = await viewerHelper.deployRebalancingSetTokenV3FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingSetTokenV3Factory); + + wrappedETH = await erc20Helper.deployTokenAsync(deployerAccount, 18); + wrappedBTC = await erc20Helper.deployTokenAsync(deployerAccount, 8); + usdc = await erc20Helper.deployTokenAsync(deployerAccount, 6); + dai = await erc20Helper.deployTokenAsync(deployerAccount, 18); + + let wrappedETHPrice: BigNumber; + let wrappedBTCPrice: BigNumber; + let usdcPrice: BigNumber; + let daiPrice: BigNumber; + + wrappedETHPrice = ether(128); + wrappedBTCPrice = ether(7500); + usdcPrice = ether(1); + daiPrice = ether(1); + + usdWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedETHPrice); + usdWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedBTCPrice); + usdUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync(usdcPrice); + usdDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync(daiPrice); + + usdOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [usdWrappedETHOracle.address, usdWrappedBTCOracle.address, usdUSDCOracle.address, usdDaiOracle.address], + ); + + ethWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedETHPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedBTCPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + usdcPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync( + daiPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + + ethOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [ethWrappedETHOracle.address, ethWrappedBTCOracle.address, ethUSDCOracle.address, ethDaiOracle.address], + ); + + const maxProfitFeePercentage = ether(.5); + const maxStreamingFeePercentage = ether(.1); + ethPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + ethOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(ethPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + collateralSetComponents = [wrappedETH.address, wrappedBTC.address]; + collateralSetUnits = [wrappedBTCPrice.div(wrappedETHPrice).mul(10 ** 12), new BigNumber(100)]; + collateralSetNaturalUnit = new BigNumber(10 ** 12); + collateralSet = await coreHelper.createSetTokenAsync( + coreMock, + setTokenFactory.address, + collateralSetComponents, + collateralSetUnits, + collateralSetNaturalUnit, + ); + + setManager = await viewerHelper.deploySocialTradingManagerMockAsync(); + + const failPeriod = ONE_DAY_IN_SECONDS; + const { timestamp } = await web3.eth.getBlock('latest'); + lastRebalanceTimestamp = new BigNumber(timestamp); + + const calculatorData = feeCalculatorHelper.generatePerformanceFeeCallDataBuffer( + ONE_DAY_IN_SECONDS.mul(30), + ONE_YEAR_IN_SECONDS, + ether(.2), + ether(.02) + ); + + const firstNaturalUnit = DEFAULT_REBALANCING_NATURAL_UNIT; + const firstSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + firstSetUnits = new BigNumber(100).mul(firstNaturalUnit).mul(10 ** 18).div(firstSetValue).round(0, 3); + const firstSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + setManager.address, + liquidator.address, + feeRecipient, + ethPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + failPeriod, + lastRebalanceTimestamp, + ZERO, + calculatorData + ); + + rebalancingSetToken = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [firstSetUnits], + firstNaturalUnit, + firstSetCallData + ); + + currentAllocation = ether(.6); + await setManager.updateRecord.sendTransactionAsync( + rebalancingSetToken.address, + trader, + allocator, + currentAllocation + ); + + subjectTradingPool = rebalancingSetToken.address; + }); + + async function subject(): Promise { + return protocolViewer.fetchNewTradingPoolV2Details.callAsync( + subjectTradingPool + ); + } + + it('fetches the correct RebalancingSetTokenV3/TradingPool data', async () => { + const [ , tradingPoolInfo, , , ] = await subject(); + + expect(tradingPoolInfo.manager).to.equal(setManager.address); + expect(tradingPoolInfo.feeRecipient).to.equal(feeRecipient); + expect(tradingPoolInfo.currentSet).to.equal(collateralSet.address); + expect(tradingPoolInfo.name).to.equal('Rebalancing Set Token'); + expect(tradingPoolInfo.symbol).to.equal('RBSET'); + expect(tradingPoolInfo.unitShares).to.be.bignumber.equal(firstSetUnits); + expect(tradingPoolInfo.naturalUnit).to.be.bignumber.equal(DEFAULT_REBALANCING_NATURAL_UNIT); + expect(tradingPoolInfo.rebalanceInterval).to.be.bignumber.equal(ONE_DAY_IN_SECONDS); + expect(tradingPoolInfo.entryFee).to.be.bignumber.equal(ZERO); + expect(tradingPoolInfo.lastRebalanceTimestamp).to.be.bignumber.equal(lastRebalanceTimestamp); + expect(tradingPoolInfo.rebalanceState).to.be.bignumber.equal(ZERO); + }); + + it('fetches the correct poolInfo data', async () => { + const [ poolInfo, , , , ] = await subject(); + + expect(poolInfo.trader).to.equal(trader); + expect(poolInfo.allocator).to.equal(allocator); + expect(poolInfo.currentAllocation).to.be.bignumber.equal(currentAllocation); + expect(poolInfo.newEntryFee).to.be.bignumber.equal(ZERO); + expect(poolInfo.feeUpdateTimestamp).to.be.bignumber.equal(ZERO); + }); + + + it('fetches the correct RebalancingSetTokenV3/Performance Fee data', async () => { + const [ , , performanceFeeState, , ] = await subject(); + const [ + profitFeePeriod, + highWatermarkResetPeriod, + profitFeePercentage, + streamingFeePercentage, + highWatermark, + lastProfitFeeTimestamp, + lastStreamingFeeTimestamp, + ] = performanceFeeState; + + const expectedFeeStates: any = + await ethPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken.address); + + expect(profitFeePeriod).to.equal(expectedFeeStates.profitFeePeriod); + expect(highWatermarkResetPeriod).to.equal(expectedFeeStates.highWatermarkResetPeriod); + expect(profitFeePercentage).to.equal(expectedFeeStates.profitFeePercentage); + expect(streamingFeePercentage).to.equal(expectedFeeStates.streamingFeePercentage); + expect(highWatermark).to.equal(expectedFeeStates.highWatermark); + expect(lastProfitFeeTimestamp).to.equal(expectedFeeStates.lastProfitFeeTimestamp); + expect(lastStreamingFeeTimestamp).to.equal(expectedFeeStates.lastStreamingFeeTimestamp); + }); + + it('fetches the correct CollateralSet data', async () => { + const [ , , , collateralSetData, ] = await subject(); + + expect(JSON.stringify(collateralSetData.components)).to.equal(JSON.stringify(collateralSetComponents)); + expect(JSON.stringify(collateralSetData.units)).to.equal(JSON.stringify(collateralSetUnits)); + expect(collateralSetData.naturalUnit).to.be.bignumber.equal(collateralSetNaturalUnit); + expect(collateralSetData.name).to.equal('Set Token'); + expect(collateralSetData.symbol).to.equal('SET'); + }); + + it('fetches the correct PerformanceFeeCalculator address', async () => { + const [ , , , , performanceFeeCalculatorAddress ] = await subject(); + + expect(performanceFeeCalculatorAddress).to.equal(ethPerformanceFeeCalculator.address); + }); + }); + describe('#fetchTradingPoolRebalanceDetails', async () => { let subjectTradingPool: Address; @@ -776,6 +1021,508 @@ contract('ProtocolViewer', accounts => { expect(JSON.stringify(actualEntryRebalanceArray)).to.equal(JSON.stringify(expectedEntryRebalanceArray)); }); }); + + describe('#batchFetchTradingPoolAccumulation', async () => { + let subjectTradingPools: Address[]; + + let ethOracleWhiteList: OracleWhiteListContract; + let usdOracleWhiteList: OracleWhiteListContract; + + let wrappedETH: StandardTokenMockContract; + let wrappedBTC: StandardTokenMockContract; + let usdc: StandardTokenMockContract; + let dai: StandardTokenMockContract; + + let collateralSet: SetTokenContract; + + let usdWrappedETHOracle: UpdatableOracleMockContract; + let usdWrappedBTCOracle: UpdatableOracleMockContract; + let usdUSDCOracle: UpdatableOracleMockContract; + let usdDaiOracle: UpdatableOracleMockContract; + + let ethWrappedETHOracle: UpdatableOracleMockContract; + let ethWrappedBTCOracle: UpdatableOracleMockContract; + let ethUSDCOracle: UpdatableOracleMockContract; + let ethDaiOracle: UpdatableOracleMockContract; + + let ethPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + let usdPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + + let rebalancingSetToken2: RebalancingSetTokenV3Contract; + + let subjectIncreaseChainTime: BigNumber; + + beforeEach(async () => { + rebalancingSetTokenV3Factory = await viewerHelper.deployRebalancingSetTokenV3FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingSetTokenV3Factory); + + wrappedETH = await erc20Helper.deployTokenAsync(deployerAccount, 18); + wrappedBTC = await erc20Helper.deployTokenAsync(deployerAccount, 8); + usdc = await erc20Helper.deployTokenAsync(deployerAccount, 6); + dai = await erc20Helper.deployTokenAsync(deployerAccount, 18); + + let wrappedETHPrice: BigNumber; + let wrappedBTCPrice: BigNumber; + let usdcPrice: BigNumber; + let daiPrice: BigNumber; + + wrappedETHPrice = ether(128); + wrappedBTCPrice = ether(7500); + usdcPrice = ether(1); + daiPrice = ether(1); + + usdWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedETHPrice); + usdWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedBTCPrice); + usdUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync(usdcPrice); + usdDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync(daiPrice); + + usdOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [usdWrappedETHOracle.address, usdWrappedBTCOracle.address, usdUSDCOracle.address, usdDaiOracle.address], + ); + + ethWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedETHPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedBTCPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + usdcPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync( + daiPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + + ethOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [ethWrappedETHOracle.address, ethWrappedBTCOracle.address, ethUSDCOracle.address, ethDaiOracle.address], + ); + + const maxProfitFeePercentage = ether(.5); + const maxStreamingFeePercentage = ether(.1); + ethPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + ethOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(ethPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const collateralSetComponents = [wrappedETH.address, wrappedBTC.address]; + const collateralSetUnits = [wrappedBTCPrice.div(wrappedETHPrice).mul(10 ** 12), new BigNumber(100)]; + const collateralSetNaturalUnit = new BigNumber(10 ** 12); + collateralSet = await coreHelper.createSetTokenAsync( + coreMock, + setTokenFactory.address, + collateralSetComponents, + collateralSetUnits, + collateralSetNaturalUnit, + ); + + const failPeriod = ONE_DAY_IN_SECONDS; + const { timestamp } = await web3.eth.getBlock('latest'); + const lastRebalanceTimestamp = new BigNumber(timestamp); + + const calculatorData = feeCalculatorHelper.generatePerformanceFeeCallDataBuffer( + ONE_DAY_IN_SECONDS.mul(30), + ONE_YEAR_IN_SECONDS, + ether(.2), + ether(.02) + ); + + const firstNaturalUnit = DEFAULT_REBALANCING_NATURAL_UNIT; + const firstSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const firstSetUnits = new BigNumber(100).mul(firstNaturalUnit).mul(10 ** 18).div(firstSetValue).round(0, 3); + const firstSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + feeRecipient, + ethPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + failPeriod, + lastRebalanceTimestamp, + ZERO, + calculatorData + ); + + rebalancingSetToken = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [firstSetUnits], + firstNaturalUnit, + firstSetCallData + ); + + usdPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + usdOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(usdPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const secondNaturalUnit = new BigNumber(10 ** 8); + const secondSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const secondSetUnits = new BigNumber(100).mul(secondNaturalUnit).mul(10 ** 18).div(secondSetValue).round(0, 3); + const secondSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + deployerAccount, + usdPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + ONE_DAY_IN_SECONDS.mul(2), + ZERO, + ZERO, + calculatorData + ); + + rebalancingSetToken2 = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [secondSetUnits], + secondNaturalUnit, + secondSetCallData + ); + + subjectTradingPools = [rebalancingSetToken.address, rebalancingSetToken2.address]; + subjectIncreaseChainTime = ONE_YEAR_IN_SECONDS; + }); + + async function subject(): Promise { + await blockchain.increaseTimeAsync(subjectIncreaseChainTime); + await blockchain.mineBlockAsync(); + return protocolViewer.batchFetchTradingPoolAccumulation.callAsync( + subjectTradingPools + ); + } + + it('fetches the correct profit/streaming fee accumulation array', async () => { + const feeState1: any = await ethPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken.address); + const feeState2: any = await usdPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken2.address); + + const [ + actualStreamingFeeArray, + actualProfitFeeArray, + ] = await subject(); + + const lastBlock = await web3.eth.getBlock('latest'); + + const rebalancingSetValue1 = await valuationHelper.calculateRebalancingSetTokenValueAsync( + rebalancingSetToken, + ethOracleWhiteList, + ); + const rebalancingSetValue2 = await valuationHelper.calculateRebalancingSetTokenValueAsync( + rebalancingSetToken2, + usdOracleWhiteList, + ); + const expectedStreamingFee1 = await feeCalculatorHelper.calculateAccruedStreamingFee( + feeState1.streamingFeePercentage, + new BigNumber(lastBlock.timestamp).sub(feeState1.lastStreamingFeeTimestamp) + ); + const expectedStreamingFee2 = await feeCalculatorHelper.calculateAccruedStreamingFee( + feeState2.streamingFeePercentage, + new BigNumber(lastBlock.timestamp).sub(feeState2.lastStreamingFeeTimestamp) + ); + + const expectedProfitFee1 = await feeCalculatorHelper.calculateAccruedProfitFeeAsync( + feeState1, + rebalancingSetValue1, + new BigNumber(lastBlock.timestamp) + ); + const expectedProfitFee2 = await feeCalculatorHelper.calculateAccruedProfitFeeAsync( + feeState2, + rebalancingSetValue2, + new BigNumber(lastBlock.timestamp) + ); + + const expectedStreamingFeeArray = [expectedStreamingFee1, expectedStreamingFee2]; + const expectedProfitFeeArray = [expectedProfitFee1, expectedProfitFee2]; + + expect(JSON.stringify(actualStreamingFeeArray)).to.equal(JSON.stringify(expectedStreamingFeeArray)); + expect(JSON.stringify(actualProfitFeeArray)).to.equal(JSON.stringify(expectedProfitFeeArray)); + }); + }); + + describe('#batchFetchTradingPoolFeeState', async () => { + let subjectTradingPools: Address[]; + + let ethOracleWhiteList: OracleWhiteListContract; + let usdOracleWhiteList: OracleWhiteListContract; + + let wrappedETH: StandardTokenMockContract; + let wrappedBTC: StandardTokenMockContract; + let usdc: StandardTokenMockContract; + let dai: StandardTokenMockContract; + + let collateralSet: SetTokenContract; + + let usdWrappedETHOracle: UpdatableOracleMockContract; + let usdWrappedBTCOracle: UpdatableOracleMockContract; + let usdUSDCOracle: UpdatableOracleMockContract; + let usdDaiOracle: UpdatableOracleMockContract; + + let ethWrappedETHOracle: UpdatableOracleMockContract; + let ethWrappedBTCOracle: UpdatableOracleMockContract; + let ethUSDCOracle: UpdatableOracleMockContract; + let ethDaiOracle: UpdatableOracleMockContract; + + let ethPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + let usdPerformanceFeeCalculator: PerformanceFeeCalculatorContract; + + let secondRebalancingSetToken: RebalancingSetTokenV3Contract; + + beforeEach(async () => { + rebalancingSetTokenV3Factory = await viewerHelper.deployRebalancingSetTokenV3FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingSetTokenV3Factory); + + wrappedETH = await erc20Helper.deployTokenAsync(deployerAccount, 18); + wrappedBTC = await erc20Helper.deployTokenAsync(deployerAccount, 8); + usdc = await erc20Helper.deployTokenAsync(deployerAccount, 6); + dai = await erc20Helper.deployTokenAsync(deployerAccount, 18); + + let wrappedETHPrice: BigNumber; + let wrappedBTCPrice: BigNumber; + let usdcPrice: BigNumber; + let daiPrice: BigNumber; + + wrappedETHPrice = ether(128); + wrappedBTCPrice = ether(7500); + usdcPrice = ether(1); + daiPrice = ether(1); + + usdWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedETHPrice); + usdWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync(wrappedBTCPrice); + usdUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync(usdcPrice); + usdDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync(daiPrice); + + usdOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [usdWrappedETHOracle.address, usdWrappedBTCOracle.address, usdUSDCOracle.address, usdDaiOracle.address], + ); + + ethWrappedETHOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedETHPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethWrappedBTCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + wrappedBTCPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethUSDCOracle = await oracleHelper.deployUpdatableOracleMockAsync( + usdcPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + ethDaiOracle = await oracleHelper.deployUpdatableOracleMockAsync( + daiPrice.mul(ether(1)).div(wrappedETHPrice).round(0, 3) + ); + + ethOracleWhiteList = await coreHelper.deployOracleWhiteListAsync( + [wrappedETH.address, wrappedBTC.address, usdc.address, dai.address], + [ethWrappedETHOracle.address, ethWrappedBTCOracle.address, ethUSDCOracle.address, ethDaiOracle.address], + ); + + const maxProfitFeePercentage = ether(.5); + const maxStreamingFeePercentage = ether(.1); + ethPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + ethOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(ethPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const collateralSetComponents = [wrappedETH.address, wrappedBTC.address]; + const collateralSetUnits = [wrappedBTCPrice.div(wrappedETHPrice).mul(10 ** 12), new BigNumber(100)]; + const collateralSetNaturalUnit = new BigNumber(10 ** 12); + collateralSet = await coreHelper.createSetTokenAsync( + coreMock, + setTokenFactory.address, + collateralSetComponents, + collateralSetUnits, + collateralSetNaturalUnit, + ); + + const calculatorData = feeCalculatorHelper.generatePerformanceFeeCallDataBuffer( + ONE_DAY_IN_SECONDS.mul(30), + ONE_YEAR_IN_SECONDS, + ether(.2), + ether(.02) + ); + + const firstNaturalUnit = new BigNumber(10 ** 8); + const firstSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const firstSetUnits = new BigNumber(100).mul(firstNaturalUnit).mul(10 ** 18).div(firstSetValue).round(0, 3); + const firstSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + deployerAccount, + ethPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + ONE_DAY_IN_SECONDS.mul(2), + ZERO, + ZERO, + calculatorData + ); + + rebalancingSetToken = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [firstSetUnits], + firstNaturalUnit, + firstSetCallData + ); + + usdPerformanceFeeCalculator = await feeCalculatorHelper.deployPerformanceFeeCalculatorAsync( + coreMock.address, + usdOracleWhiteList.address, + maxProfitFeePercentage, + maxStreamingFeePercentage + ); + await coreHelper.addAddressToWhiteList(usdPerformanceFeeCalculator.address, feeCalculatorWhitelist); + + const secondNaturalUnit = new BigNumber(10 ** 8); + const secondSetValue = await valuationHelper.calculateSetTokenValueAsync(collateralSet, usdOracleWhiteList); + const secondSetUnits = new BigNumber(100).mul(secondNaturalUnit).mul(10 ** 18).div(secondSetValue).round(0, 3); + const secondSetCallData = rebalancingSetV3Helper.generateRebalancingSetTokenV3CallData( + deployerAccount, + liquidator.address, + deployerAccount, + usdPerformanceFeeCalculator.address, + ONE_DAY_IN_SECONDS, + ONE_DAY_IN_SECONDS.mul(2), + ZERO, + ZERO, + calculatorData + ); + + secondRebalancingSetToken = await rebalancingSetV3Helper.createRebalancingTokenV3Async( + coreMock, + rebalancingSetTokenV3Factory.address, + [collateralSet.address], + [secondSetUnits], + secondNaturalUnit, + secondSetCallData + ); + + subjectTradingPools = [rebalancingSetToken.address, secondRebalancingSetToken.address]; + }); + + async function subject(): Promise { + return protocolViewer.batchFetchTradingPoolFeeState.callAsync( + subjectTradingPools + ); + } + + it('fetches the correct rebalanceFee array', async () => { + const tradingPoolFeeStates = await subject(); + + const firstFeeState: any = await ethPerformanceFeeCalculator.feeState.callAsync(rebalancingSetToken.address); + const secondFeeState: any = await usdPerformanceFeeCalculator.feeState.callAsync( + secondRebalancingSetToken.address + ); + + const expectedFeeStateInfo = _.map([firstFeeState, secondFeeState], feeStates => + [ + feeStates.profitFeePeriod, + feeStates.highWatermarkResetPeriod, + feeStates.profitFeePercentage, + feeStates.streamingFeePercentage, + feeStates.highWatermark, + feeStates.lastProfitFeeTimestamp, + feeStates.lastStreamingFeeTimestamp, + ] + ); + + expect(JSON.stringify(tradingPoolFeeStates)).to.equal(JSON.stringify(expectedFeeStateInfo)); + }); + }); + + describe('#batchFetchTradingPoolOperator', async () => { + let subjectTradingPools: Address[]; + + let rebalancingSetToken2: RebalancingSetTokenV2Contract; + + beforeEach(async () => { + rebalancingFactory = await coreHelper.deployRebalancingSetTokenV2FactoryAsync( + coreMock.address, + rebalancingComponentWhiteList.address, + liquidatorWhitelist.address, + feeCalculatorWhitelist.address, + ); + await coreHelper.addFactoryAsync(coreMock, rebalancingFactory); + + const setManager = await viewerHelper.deploySocialTradingManagerMockAsync(); + + const failPeriod = ONE_DAY_IN_SECONDS; + const { timestamp } = await web3.eth.getBlock('latest'); + const lastRebalanceTimestamp = new BigNumber(timestamp); + + rebalancingSetToken = await rebalancingHelper.createDefaultRebalancingSetTokenV2Async( + coreMock, + rebalancingFactory.address, + setManager.address, + liquidator.address, + feeRecipient, + fixedFeeCalculator.address, + set1.address, + failPeriod, + lastRebalanceTimestamp, + ); + + rebalancingSetToken2 = await rebalancingHelper.createDefaultRebalancingSetTokenV2Async( + coreMock, + rebalancingFactory.address, + setManager.address, // Set as other address + liquidator.address, + feeRecipient, + fixedFeeCalculator.address, + set1.address, + failPeriod, + lastRebalanceTimestamp, + ); + + await setManager.updateRecord.sendTransactionAsync( + rebalancingSetToken.address, + trader, // Set to first trader + allocator, + ether(.3) + ); + + await setManager.updateRecord.sendTransactionAsync( + rebalancingSetToken2.address, + trader2, // Set to second trader + allocator, + ether(.6) + ); + + subjectTradingPools = [rebalancingSetToken.address, rebalancingSetToken2.address]; + }); + + async function subject(): Promise { + return protocolViewer.batchFetchTradingPoolOperator.callAsync( + subjectTradingPools + ); + } + + it('fetches the correct operators array', async () => { + const actualOperatorsArray = await subject(); + + const expectedOperatorsArray = [trader, trader2]; + + expect(JSON.stringify(actualOperatorsArray)).to.equal(JSON.stringify(expectedOperatorsArray)); + }); + }); }); describe('#batchFetchExchangeRateStored', async () => { @@ -831,4 +1578,69 @@ contract('ProtocolViewer', accounts => { expect(exchangeRatesJSON).to.equal(expectedExchangeRatesJSON); }); }); + + describe('Manager Viewer Tests', async () => { + let trendingManagerMock1: TrendingManagerMockContract; + let trendingManagerMock2: TrendingManagerMockContract; + + let crossoverTimestamp1: BigNumber; + let crossoverTimestamp2: BigNumber; + + beforeEach(async () => { + crossoverTimestamp1 = new BigNumber(14800000000); + crossoverTimestamp2 = new BigNumber(11800000000); + trendingManagerMock1 = await protocolViewerHelper.deployTrendingManagerMockAsync( + crossoverTimestamp1 + ); + trendingManagerMock2 = await protocolViewerHelper.deployTrendingManagerMockAsync( + crossoverTimestamp2 + ); + }); + + afterEach(async () => { + await blockchain.revertAsync(); + }); + + describe('#batchFetchMACOV2CrossoverTimestamp', async () => { + let subjectManagerAddresses: Address[]; + + beforeEach(async () => { + subjectManagerAddresses = [trendingManagerMock1.address, trendingManagerMock2.address]; + }); + + async function subject(): Promise { + return protocolViewer.batchFetchMACOV2CrossoverTimestamp.callAsync( + subjectManagerAddresses, + ); + } + + it('fetches the lastCrossoverConfirmationTimestamp of the MACO Managers', async () => { + const actualCrossoverArray = await subject(); + + const expectedEntryFeeArray = [crossoverTimestamp1, crossoverTimestamp2]; + expect(JSON.stringify(actualCrossoverArray)).to.equal(JSON.stringify(expectedEntryFeeArray)); + }); + }); + + describe('#batchFetchAssetPairCrossoverTimestamp', async () => { + let subjectManagerAddresses: Address[]; + + beforeEach(async () => { + subjectManagerAddresses = [trendingManagerMock1.address, trendingManagerMock2.address]; + }); + + async function subject(): Promise { + return protocolViewer.batchFetchAssetPairCrossoverTimestamp.callAsync( + subjectManagerAddresses, + ); + } + + it('fetches the recentInitialProposeTimestamp of the Asset Pair Managers', async () => { + const actualCrossoverArray = await subject(); + + const expectedEntryFeeArray = [crossoverTimestamp1, crossoverTimestamp2]; + expect(JSON.stringify(actualCrossoverArray)).to.equal(JSON.stringify(expectedEntryFeeArray)); + }); + }); + }); }); diff --git a/utils/constants.ts b/utils/constants.ts index ef792f2..2dc4322 100644 --- a/utils/constants.ts +++ b/utils/constants.ts @@ -19,6 +19,7 @@ export const NULL_ADDRESS: string = '0x0000000000000000000000000000000000000000 export const ONE: BigNumber = new BigNumber(1); export const ONE_HOUR_IN_SECONDS = new BigNumber(3600); export const ONE_DAY_IN_SECONDS = new BigNumber(86400); +export const ONE_YEAR_IN_SECONDS = ONE_DAY_IN_SECONDS.mul(365.25); export const RISK_COLLATERAL_NATURAL_UNIT = new BigNumber(10 ** 6); export const SNAPSHOT_TIME_LOCK = new BigNumber(1); export const STABLE_COLLATERAL_NATURAL_UNIT = new BigNumber(10 ** 12); diff --git a/utils/contracts.ts b/utils/contracts.ts index b37ebb9..48e3aea 100644 --- a/utils/contracts.ts +++ b/utils/contracts.ts @@ -1,5 +1,7 @@ export { BaseContract } from '../types/base_contract'; export { ERC20ViewerContract } from '../types/generated/erc20_viewer'; +export { TrendingManagerMockContract } from '../types/generated/trending_manager_mock'; +export { ManagerViewerContract } from '../types/generated/manager_viewer'; export { ProtocolViewerContract } from '../types/generated/protocol_viewer'; export { RebalancingSetTokenViewerContract } from '../types/generated/rebalancing_set_token_viewer'; export { SocialTradingManagerMockContract } from '../types/generated/social_trading_manager_mock'; diff --git a/utils/helpers/protocolViewerHelper.ts b/utils/helpers/protocolViewerHelper.ts index afc4a2e..5628830 100644 --- a/utils/helpers/protocolViewerHelper.ts +++ b/utils/helpers/protocolViewerHelper.ts @@ -1,21 +1,38 @@ +import { BigNumber } from 'bignumber.js'; import { Address } from 'set-protocol-utils'; +import Web3 from 'web3'; import { CTokenViewerContract, ERC20ViewerContract, + ManagerViewerContract, + TrendingManagerMockContract, ProtocolViewerContract, RebalancingSetTokenViewerContract, SocialTradingManagerMockContract, TradingPoolViewerContract, } from '../contracts'; import { getContractInstance, txnFrom } from '../web3Helper'; +import { + ONE_DAY_IN_SECONDS, + DEFAULT_GAS, +} from '../constants'; +import { + RebalancingSetTokenV3Factory, + RebalancingSetTokenV3FactoryContract, + FactoryUtilsLibrary, + Bytes32Library +} from 'set-protocol-contracts'; const CTokenViewer = artifacts.require('CTokenViewer'); const ERC20Viewer = artifacts.require('ERC20Viewer'); +const ManagerViewer = artifacts.require('ManagerViewer'); +const TrendingManagerMock = artifacts.require('TrendingManagerMock'); const ProtocolViewer = artifacts.require('ProtocolViewer'); const RebalancingSetTokenViewer = artifacts.require('RebalancingSetTokenViewer'); const SocialTradingManagerMock = artifacts.require('SocialTradingManagerMock'); const TradingPoolViewer = artifacts.require('TradingPoolViewer'); +const contract = require('truffle-contract'); export class ProtocolViewerHelper { private _contractOwnerAddress: Address; @@ -51,6 +68,20 @@ export class ProtocolViewerHelper { ); } + public async deployManagerViewerAsync( + from: Address = this._contractOwnerAddress + ): Promise { + const + managerViewer = await ManagerViewer.new( + txnFrom(from) + ); + + return new ManagerViewerContract( + getContractInstance(managerViewer), + txnFrom(from), + ); + } + public async deployProtocolViewerAsync( from: Address = this._contractOwnerAddress ): Promise { @@ -100,4 +131,83 @@ export class ProtocolViewerHelper { txnFrom(from), ); } + + public async deployTrendingManagerMockAsync( + crossoverTimestamp: BigNumber, + from: Address = this._contractOwnerAddress + ): Promise { + const trendingManagerMock = await TrendingManagerMock.new( + crossoverTimestamp, + txnFrom(from) + ); + + return new TrendingManagerMockContract( + getContractInstance(trendingManagerMock), + txnFrom(from), + ); + } + + public async deployRebalancingSetTokenV3FactoryAsync( + coreAddress: Address, + componentWhitelistAddress: Address, + liquidatorWhitelistAddress: Address, + feeCalculatorWhitelistAddress: Address, + minimumRebalanceInterval: BigNumber = ONE_DAY_IN_SECONDS, + minimumFailRebalancePeriod: BigNumber = ONE_DAY_IN_SECONDS, + maximumFailRebalancePeriod: BigNumber = ONE_DAY_IN_SECONDS.mul(30), + minimumNaturalUnit: BigNumber = new BigNumber(10), + maximumNaturalUnit: BigNumber = new BigNumber(10 ** 14), + from: Address = this._contractOwnerAddress + ): Promise { + const truffleBytes32LibraryContract = this.setDefaultTruffleContract(web3, Bytes32Library); + const deployedBytes32LibraryContract = await truffleBytes32LibraryContract.new(); + + const truffleFactoryUtilsLibContract = this.setDefaultTruffleContract(web3, FactoryUtilsLibrary); + const deployedFactoryUtilsLibContract = await truffleFactoryUtilsLibContract.new(); + + const truffleTokenFactory = this.setDefaultTruffleContract(web3, RebalancingSetTokenV3Factory); + + await truffleTokenFactory.link( + 'Bytes32Library', + deployedBytes32LibraryContract.address + ); + + await truffleTokenFactory.link( + 'FactoryUtilsLibrary', + deployedFactoryUtilsLibContract.address + ); + + const deployedTokenFactory = await truffleTokenFactory.new( + coreAddress, + componentWhitelistAddress, + liquidatorWhitelistAddress, + feeCalculatorWhitelistAddress, + minimumRebalanceInterval, + minimumFailRebalancePeriod, + maximumFailRebalancePeriod, + minimumNaturalUnit, + maximumNaturalUnit, + { from }, + ); + + return await RebalancingSetTokenV3FactoryContract.at( + deployedTokenFactory.address, + web3, + { from, gas: DEFAULT_GAS }, + ); + } + + private setDefaultTruffleContract(web3: Web3, contractInstance: any): any { + const TX_DEFAULTS = { + from: this._contractOwnerAddress, + gasPrice: 6000000000, + gas: 6712390, + }; + const truffleContract = contract(contractInstance); + truffleContract.setProvider(web3.currentProvider); + truffleContract.setNetwork(50); + truffleContract.defaults(TX_DEFAULTS); + + return truffleContract; + } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index b1bac08..0a1c450 100644 --- a/yarn.lock +++ b/yarn.lock @@ -237,14 +237,12 @@ "@babel/runtime@^7.3.1": version "7.7.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.2.tgz#111a78002a5c25fc8e3361bedc9529c696b85a6a" - integrity sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw== dependencies: regenerator-runtime "^0.13.2" "@resolver-engine/core@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.2.1.tgz#0d71803f6d3b8cb2e9ed481a1bf0ca5f5256d0c0" - integrity sha512-nsLQHmPJ77QuifqsIvqjaF5B9aHnDzJjp73Q1z6apY3e9nqYrx4Dtowhpsf7Jwftg/XzVDEMQC+OzUBNTS+S1A== dependencies: debug "^3.1.0" request "^2.85.0" @@ -252,7 +250,6 @@ "@resolver-engine/fs@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.2.1.tgz#f98a308d77568cc02651d03636f46536b941b241" - integrity sha512-7kJInM1Qo2LJcKyDhuYzh9ZWd+mal/fynfL9BNjWOiTcOpX+jNfqb/UmGUqros5pceBITlWGqS4lU709yHFUbg== dependencies: "@resolver-engine/core" "^0.2.1" debug "^3.1.0" @@ -260,7 +257,6 @@ "@resolver-engine/imports-fs@^0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.2.2.tgz#5a81ef3285dbf0411ab3b15205080a1ad7622d9e" - integrity sha512-gFCgMvCwyppjwq0UzIjde/WI+yDs3oatJhozG9xdjJdewwtd7LiF0T5i9lrHAUtqrQbqoFE4E+ZMRVHWpWHpKQ== dependencies: "@resolver-engine/fs" "^0.2.1" "@resolver-engine/imports" "^0.2.2" @@ -269,7 +265,6 @@ "@resolver-engine/imports@^0.2.2": version "0.2.2" resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.2.2.tgz#d3de55a1bb5f3beb7703fdde743298f321175843" - integrity sha512-u5/HUkvo8q34AA+hnxxqqXGfby5swnH0Myw91o3Sm2TETJlNKXibFGSKBavAH+wvWdBi4Z5gS2Odu0PowgVOUg== dependencies: "@resolver-engine/core" "^0.2.1" debug "^3.1.0" @@ -284,29 +279,24 @@ "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: defer-to-connect "^1.0.1" "@truffle/blockchain-utils@^0.0.11": version "0.0.11" resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.0.11.tgz#9886f4cb7a9f20deded4451ac78f8567ae5c0d75" - integrity sha512-9MyQ/20M96clhIcC7fVFIckGSB8qMsmcdU6iYt98HXJ9GOLNKsCaJFz1OVsJncVreYwTUhoEXTrVBc8zrmPDJQ== "@truffle/blockchain-utils@^0.0.17": version "0.0.17" resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.0.17.tgz#a1ab0ec9a9c3cbc6ada769f606d6b07f8e515120" - integrity sha512-SqvkHCn65QbRFlNpA3M91tqcV8dVMSEfOu3lfXrPozKJyTTtFg/A8WMvMMs79/Q8SJlUuJARjsXwQmo5V3V78A== "@truffle/contract-schema@^3.0.14", "@truffle/contract-schema@^3.0.23": version "3.0.23" resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.0.23.tgz#5d869d9b10be23034c07c7dbf3c48542eabe63ef" - integrity sha512-N4CaTMcZhOC44Vl6k2r/eua+ojUswl6mNlkVTVYMvWjfKa8GHKKClsZfkGO72aBrBzoTFsM6D75LvQIIRBy3fg== dependencies: ajv "^6.10.0" crypto-js "^3.1.9-1" @@ -315,7 +305,6 @@ "@truffle/contract@^4.0.2": version "4.1.10" resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.1.10.tgz#640b41159306e44c1dfa4227145759dd92108d1f" - integrity sha512-TRec+7oQyrxfJizYbOCGM9+Jbl2rA8JvBmMudoYmw7ZImJPerD2pJwrfBOOAG4oA3Z4uhW9+rvG80yuilAiu3g== dependencies: "@truffle/blockchain-utils" "^0.0.17" "@truffle/contract-schema" "^3.0.23" @@ -332,17 +321,14 @@ "@truffle/error@^0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.6.tgz#75d499845b4b3a40537889e7d04c663afcaee85d" - integrity sha512-QUM9ZWiwlXGixFGpV18g5I6vua6/r+ZV9W/5DQA5go9A3eZUNPHPaTKMIQPJLYn6+ZV5jg5H28zCHq56LHF3yA== "@truffle/error@^0.0.8": version "0.0.8" resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.8.tgz#dc94ca36393403449d4b7461bf9452c241e53ec1" - integrity sha512-x55rtRuNfRO1azmZ30iR0pf0OJ6flQqbax1hJz+Avk1K5fdmOv5cr22s9qFnwTWnS6Bw0jvJEoR0ITsM7cPKtQ== "@truffle/interface-adapter@^0.4.5": version "0.4.5" resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.4.5.tgz#f15ddbef95d61efa713527ca81c9ee75e94e5e3d" - integrity sha512-NGR2UsUXaG6LVezDKqtyqbi7o2UIZJzPmXDybfu0bZ1B1FbdJWXdtLgiPZSlC8IK5Js1V3ruqougX3b4YV5Dfw== dependencies: bn.js "^4.11.8" ethers "^4.0.32" @@ -356,7 +342,6 @@ "@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" - integrity sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA== dependencies: bignumber.js "*" @@ -375,14 +360,12 @@ "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4": version "4.11.5" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.5.tgz#40e36197433f78f807524ec623afcf0169ac81dc" - integrity sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng== dependencies: "@types/node" "*" "@types/cbor@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/cbor/-/cbor-2.0.0.tgz#c627afc2ee22f23f2337fecb34628a4f97c6afbb" - integrity sha1-xievwu4i8j8jN/7LNGKKT5fGr7s= dependencies: "@types/node" "*" @@ -457,7 +440,6 @@ "@types/node@^10.12.18": version "10.17.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.4.tgz#8993a4fe3c4022fda66bf4ea660d615fc5659c6f" - integrity sha512-F2pgg+LcIr/elguz+x+fdBX5KeZXGUOp7TV8M0TVIrDezYLFRNt8oMTyps0VQ1kj5WGGoR18RdxnRDHXrIFHMQ== "@types/node@^10.3.2": version "10.11.7" @@ -466,7 +448,6 @@ "@types/node@^12.6.1": version "12.12.21" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.21.tgz#aa44a6363291c7037111c47e4661ad210aded23f" - integrity sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA== "@types/node@^8.0.0", "@types/node@^8.0.53", "@types/node@^8.5.1": version "8.10.28" @@ -511,14 +492,12 @@ "@types/web3@^1.0.14": version "1.2.2" resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.2.2.tgz#d95a101547ce625c5ebd0470baa5dbd4b9f3c015" - integrity sha512-eFiYJKggNrOl0nsD+9cMh2MLk4zVBfXfGnVeRFbpiZzBE20eet4KLA3fXcjSuHaBn0RnQzwLAGdgzgzdet4C0A== dependencies: web3 "*" "@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" - integrity sha512-ZtZeWCc/s0nMcdx/+rZwY1EcuRdemOK9ag21ty9UsHkFxsNb/AaoucUz0iPuyGe0Ku+PFuRmWZG7Z7462p9xPw== dependencies: scryptsy "^2.1.0" semver "^6.3.0" @@ -526,7 +505,6 @@ "@web3-js/websocket@^1.0.29": version "1.0.30" resolved "https://registry.yarnpkg.com/@web3-js/websocket/-/websocket-1.0.30.tgz#9ea15b7b582cf3bf3e8bc1f4d3d54c0731a87f87" - integrity sha512-fDwrD47MiDrzcJdSeTLF75aCcxVVt8B1N74rA+vh2XCAvFy4tEWJjtnUtj2QG7/zlQ6g9cQ88bZFBxwd9/FmtA== dependencies: debug "^2.2.0" es5-ext "^0.10.50" @@ -537,7 +515,6 @@ JSONStream@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" @@ -588,21 +565,18 @@ aes-js@3.0.0: agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" - integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== dependencies: es6-promisify "^5.0.0" agent-base@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" agentkeepalive@^3.4.1: version "3.5.2" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== dependencies: humanize-ms "^1.2.1" @@ -622,7 +596,6 @@ ajv@^5.2.2, ajv@^5.2.3, ajv@^5.3.0: ajv@^6.10.0: version "6.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" - integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -636,7 +609,6 @@ amdefine@>=0.0.4: 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" @@ -663,7 +635,6 @@ 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== ansi-styles@^2.2.1: version "2.2.1" @@ -712,7 +683,6 @@ arg@^4.1.0: argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" @@ -821,7 +791,6 @@ aws4@^1.8.0: axios@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" - integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== dependencies: follow-redirects "1.5.10" is-buffer "^2.0.2" @@ -877,7 +846,6 @@ babylon@^6.17.3, babylon@^6.18.0: balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-js@0.0.8: version "0.0.8" @@ -908,7 +876,6 @@ bcrypt-pbkdf@^1.0.0: bignumber.js@*, bignumber.js@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== bignumber.js@^4.1.0, bignumber.js@~4.1.0: version "4.1.0" @@ -917,7 +884,6 @@ bignumber.js@^4.1.0, bignumber.js@~4.1.0: bignumber.js@^7.2.0, bignumber.js@^7.2.1: version "7.2.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== "bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": version "2.0.7" @@ -934,7 +900,6 @@ bindings@^1.2.1: 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== dependencies: file-uri-to-path "1.0.0" @@ -964,7 +929,6 @@ bluebird@^2.9.34: bluebird@^3.4.7: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bluebird@^3.5.0: version "3.5.2" @@ -973,7 +937,6 @@ bluebird@^3.5.0: bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" - integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== bn-chai@^1.0.1: version "1.0.1" @@ -1024,7 +987,6 @@ body-parser@^1.16.0: 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" @@ -1038,7 +1000,6 @@ boxen@^3.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" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -1077,7 +1038,6 @@ browser-stdout@1.3.0: browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: version "1.2.0" @@ -1192,7 +1152,6 @@ builtin-modules@^1.0.0, builtin-modules@^1.1.1: builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= bytes@3.0.0: version "3.0.0" @@ -1201,7 +1160,6 @@ bytes@3.0.0: cacache@^12.0.0, cacache@^12.0.2: version "12.0.3" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" - integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== dependencies: bluebird "^3.5.5" chownr "^1.1.1" @@ -1236,7 +1194,6 @@ cache-base@^1.0.1: cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: clone-response "^1.0.2" get-stream "^5.1.0" @@ -1263,7 +1220,6 @@ camelcase@^4.1.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== canonical-weth@^1.3.1: version "1.3.1" @@ -1276,7 +1232,6 @@ caseless@~0.12.0: cbor@^4.1.1, cbor@^4.1.5: version "4.3.0" resolved "https://registry.yarnpkg.com/cbor/-/cbor-4.3.0.tgz#0217c1cadd067d9112f44336dca07e72020bb804" - integrity sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ== dependencies: bignumber.js "^9.0.0" commander "^3.0.0" @@ -1286,7 +1241,6 @@ cbor@^4.1.1, cbor@^4.1.5: cbor@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.0.1.tgz#243eea46b19c6e54ffb18fb07fa52c1c627a6f05" - integrity sha512-l4ghwqioCyuAaD3LvY4ONwv8NMuERz62xjbMHGdWBqERJPygVmoFER1b4+VS6iW0rXwoVGuKZPPPTofwWOg3YQ== dependencies: bignumber.js "^9.0.0" nofilter "^1.0.3" @@ -1326,7 +1280,6 @@ chai@^4.2.0: chainlink@^0.7.10: version "0.7.10" resolved "https://registry.yarnpkg.com/chainlink/-/chainlink-0.7.10.tgz#43d1d68ed8bedc1b5df5e2e92bf955bb1f696a53" - integrity sha512-uLuDqaDU6BrOImIzGiNSkFh011nOF+gkUPCpSt7q3UiNQJwiOErP7Xr16wJ0uW3YGz1u0YDlQK5TobCbzBUn+w== dependencies: cbor "^5.0.1" chainlinkv0.5 "0.0.2" @@ -1337,7 +1290,6 @@ chainlink@^0.7.10: chainlinkv0.5@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/chainlinkv0.5/-/chainlinkv0.5-0.0.2.tgz#b9263c71e927d96ea242bd7805917684daf8993c" - integrity sha512-K8v4YJoThpjsfFY+bxB5eHm3oBKEHb5kQTau8cLh+vJCU6SIAFGT9oifcLaQx1SLtQvlv62NKJcQqE19pj8k9Q== dependencies: bn.js "^4.11.0" cbor "^4.1.1" @@ -1367,7 +1319,6 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1: 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== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -1403,7 +1354,6 @@ chownr@^1.0.1: chownr@^1.1.1, chownr@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== ci-info@^1.3.0: version "1.4.0" @@ -1412,12 +1362,10 @@ ci-info@^1.3.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== cint@^8.2.1: version "8.2.1" resolved "https://registry.yarnpkg.com/cint/-/cint-8.2.1.tgz#70386b1b48e2773d0d63166a55aff94ef4456a12" - integrity sha1-cDhrG0jidz0NYxZqVa/5TvRFahI= cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -1442,7 +1390,6 @@ class-utils@^0.3.5: 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@^1.0.2: version "1.0.2" @@ -1459,7 +1406,6 @@ cli-cursor@^2.1.0: cli-cursor@^3.0.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" @@ -1479,7 +1425,6 @@ cli-table3@^0.5.0: cli-table@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= dependencies: colors "1.0.3" @@ -1513,7 +1458,6 @@ cliui@^4.0.0: cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: string-width "^3.1.0" strip-ansi "^5.2.0" @@ -1522,7 +1466,6 @@ cliui@^5.0.0: clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= dependencies: mimic-response "^1.0.0" @@ -1554,7 +1497,6 @@ color-name@1.1.1: colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= colors@^1.1.2: version "1.3.2" @@ -1577,7 +1519,6 @@ commander@2.11.0: commander@2.15.1: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== commander@^2.12.1, commander@^2.14.1, commander@^2.9.0: version "2.17.1" @@ -1590,12 +1531,10 @@ commander@^2.8.1: commander@^3.0.0, commander@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@~2.8.1: version "2.8.1" @@ -1610,7 +1549,6 @@ component-emitter@^1.2.1: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.2" @@ -1624,7 +1562,6 @@ concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^1.6.0: 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" @@ -1660,7 +1597,6 @@ cookiejar@^2.1.1: copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" fs-write-stream-atomic "^1.0.8" @@ -1755,7 +1691,6 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -1786,12 +1721,10 @@ crypto-js@^3.1.4: crypto-js@^3.1.9-1: version "3.3.0" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.3.0.tgz#846dd1cce2f68aacfa156c8578f926a609b7976b" - integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== 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= csstype@^2.2.0: version "2.5.6" @@ -1800,12 +1733,10 @@ csstype@^2.2.0: cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: es5-ext "^0.10.50" type "^1.0.1" @@ -1839,7 +1770,6 @@ debug@3.1.0, debug@=3.1.0, debug@^3.1.0: 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" @@ -1930,7 +1860,6 @@ deepmerge@^2.0.1: defer-to-connect@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.0.tgz#b41bd7efa8508cef13f8456975f7a278c72833fd" - integrity sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ== define-property@^0.2.5: version "0.2.5" @@ -1974,7 +1903,6 @@ delegates@^1.0.0: delimit-stream@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" - integrity sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs= depd@1.1.1: version "1.1.1" @@ -2054,7 +1982,6 @@ dom-walk@^0.1.0: 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" @@ -2077,7 +2004,6 @@ duplexer3@^0.1.4: duplexify@^3.4.2, 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" @@ -2111,7 +2037,6 @@ elliptic@6.3.3: elliptic@6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -2136,7 +2061,6 @@ elliptic@^6.0.0, elliptic@^6.2.3, elliptic@^6.4.0: emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== encodeurl@~1.0.2: version "1.0.2" @@ -2157,7 +2081,6 @@ end-of-stream@^1.0.0: end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" @@ -2168,7 +2091,6 @@ eol@^0.9.1: err-code@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" @@ -2179,7 +2101,6 @@ error-ex@^1.2.0, error-ex@^1.3.1: es5-ext@^0.10.35, es5-ext@^0.10.50: version "0.10.52" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.52.tgz#bb21777e919a04263736ded120a9d665f10ea63f" - integrity sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag== dependencies: es6-iterator "~2.0.3" es6-symbol "~3.1.2" @@ -2188,7 +2109,6 @@ es5-ext@^0.10.35, es5-ext@^0.10.50: 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= dependencies: d "1" es5-ext "^0.10.35" @@ -2197,19 +2117,16 @@ es6-iterator@~2.0.3: es6-promise@^4.0.3: version "4.2.8" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== es6-promisify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= dependencies: es6-promise "^4.0.3" es6-symbol@^3.1.1, es6-symbol@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: d "^1.0.1" ext "^1.1.2" @@ -2301,7 +2218,6 @@ esprima@2.7.x, esprima@^2.7.1: 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== esquery@^1.0.0: version "1.0.1" @@ -2381,7 +2297,6 @@ eth-lib@0.2.7: eth-lib@0.2.8, 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" @@ -2390,14 +2305,12 @@ eth-lib@0.2.8, eth-lib@^0.2.8: ethereum-bloom-filters@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.6.tgz#9cdebb3ec20de96ec4a434c6bad6ea5a513037aa" - integrity sha512-dE9CGNzgOOsdh7msZirvv8qjHtnHpvBlKe2647kM8v+yeF71IRso55jpojemvHV+jMjr48irPWxMRaHuOWzAFA== dependencies: js-sha3 "^0.8.0" ethereum-ens@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/ethereum-ens/-/ethereum-ens-0.8.0.tgz#6d0f79acaa61fdbc87d2821779c4e550243d4c57" - integrity sha512-a8cBTF4AWw1Q1Y37V1LSCS9pRY4Mh3f8vCg5cbXCCEJ3eno1hbI/+Ccv9SZLISYpqQhaglP3Bxb/34lS4Qf7Bg== dependencies: bluebird "^3.4.7" eth-ens-namehash "^2.0.0" @@ -2430,7 +2343,6 @@ ethereumjs-abi@0.6.5, ethereumjs-abi@^0.6.4: ethereumjs-abi@^0.6.8: version "0.6.8" resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== dependencies: bn.js "^4.11.8" ethereumjs-util "^6.0.0" @@ -2438,12 +2350,10 @@ ethereumjs-abi@^0.6.8: 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-testrpc-sc@6.5.1-sc.1: version "6.5.1-sc.1" resolved "https://registry.yarnpkg.com/ethereumjs-testrpc-sc/-/ethereumjs-testrpc-sc-6.5.1-sc.1.tgz#514020faa813d9f5cb9ae13739de7c8704ff0ec2" - integrity sha512-DPBwpMFFH5DTXicYjLLdTq6VLnD8p4oo5QfC9EmRKLzDsWRNXDhA9cgcdUZhhXuPM+mVAem7Q+o3Y3CQ5f+FKA== dependencies: ethereumjs-util "6.1.0" source-map-support "0.5.12" @@ -2452,7 +2362,6 @@ ethereumjs-testrpc-sc@6.5.1-sc.1: ethereumjs-tx@^2.1.1: 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" @@ -2460,7 +2369,6 @@ ethereumjs-tx@^2.1.1: 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== dependencies: bn.js "^4.11.0" create-hash "^1.1.2" @@ -2495,7 +2403,6 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2: ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" - integrity sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ== dependencies: "@types/bn.js" "^4.11.3" bn.js "^4.11.0" @@ -2553,7 +2460,6 @@ ethers@4.0.0-beta.14: ethers@4.0.0-beta.3: version "4.0.0-beta.3" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" - integrity sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog== dependencies: "@types/node" "^10.3.2" aes-js "3.0.0" @@ -2569,7 +2475,6 @@ ethers@4.0.0-beta.3: ethers@^4.0.0-beta.1, ethers@^4.0.32, ethers@^4.0.37: version "4.0.45" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.45.tgz#8d4cd764d7c7690836b583d4849203c225eb56e2" - integrity sha512-N/Wmc6Mw4pQO+Sss1HnKDCSS6KSCx0luoBMiPNq+1GbOaO3YaZOyplBEhj+NEoYsizZYODtkITg2oecPeNnidQ== dependencies: aes-js "3.0.0" bn.js "^4.4.0" @@ -2584,7 +2489,6 @@ ethers@^4.0.0-beta.1, ethers@^4.0.32, ethers@^4.0.37: ethers@^4.0.20: version "4.0.41" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.41.tgz#a0cff526f08c2e08c525cf82ef4483f6333b8000" - integrity sha512-QpW2CPZajquwiA7rVDozMksOuvdUBKIruamAakt0++EKBB/VWtLB9zSRZDInLDpp9fZYgOT/0trPD38r6CzLIg== dependencies: aes-js "3.0.0" bn.js "^4.4.0" @@ -2599,7 +2503,6 @@ ethers@^4.0.20: ethers@^4.0.27: version "4.0.39" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.39.tgz#5ce9dfffedb03936415743f63b37d96280886a47" - integrity sha512-QVtC8TTUgTrnlQjQvdFJ7fkSWKwp8HVTbKRmrdbVryrPzJHMTf3WSeRNvLF2enGyAFtyHJyFNnjN0fSshcEr9w== dependencies: "@types/node" "^10.3.2" aes-js "3.0.0" @@ -2659,7 +2562,6 @@ eventemitter3@1.1.1: eventemitter3@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -2695,7 +2597,6 @@ execa@^0.9.0: execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" get-stream "^4.0.0" @@ -2781,7 +2682,6 @@ express@^4.14.0: ext@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.2.0.tgz#8dd8d2dd21bcced3045be09621fa0cbf73908ba4" - integrity sha512-0ccUQK/9e3NreLFg6K6np8aPyRgwycx+oFGtfx1dSp7Wj00Ozw9r05FgBRlzjf2XBM7LAzwgLyDscRrtSU91hA== dependencies: type "^2.0.0" @@ -2844,12 +2744,10 @@ fast-deep-equal@^1.0.0: fast-deep-equal@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== fast-diff@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-json-stable-stringify@^2.0.0: version "2.0.0" @@ -2868,7 +2766,6 @@ fd-slicer@~1.1.0: figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== figures@^1.7.0: version "1.7.0" @@ -2905,7 +2802,6 @@ file-type@^6.1.0: file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== file@^0.2.2: version "0.2.2" @@ -2961,7 +2857,6 @@ find-root@^1.0.0: find-up@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" path-exists "^4.0.0" @@ -2975,7 +2870,6 @@ find-up@^2.0.0, find-up@^2.1.0: find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" @@ -2991,7 +2885,6 @@ flat-cache@^1.2.1: flush-write-stream@^1.0.0: 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" @@ -2999,7 +2892,6 @@ flush-write-stream@^1.0.0: follow-redirects@1.5.10: version "1.5.10" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== dependencies: debug "=3.1.0" @@ -3048,7 +2940,6 @@ fresh@0.5.2: from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= dependencies: inherits "^2.0.1" readable-stream "^2.0.0" @@ -3077,7 +2968,6 @@ fs-extra@^2.0.0, fs-extra@^2.1.2: fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -3109,7 +2999,6 @@ fs-promise@^2.0.0: fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -3119,7 +3008,6 @@ fs-write-stream-atomic@^1.0.8: 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: version "1.2.4" @@ -3131,7 +3019,6 @@ fsevents@^1.0.0: fstream@^1.0.2, fstream@^1.0.8: version "1.0.12" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" @@ -3145,7 +3032,6 @@ functional-red-black-tree@^1.0.1: ganache-cli@^6.3.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" @@ -3167,7 +3053,6 @@ gauge@~2.7.3: genfun@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== get-caller-file@^1.0.1: version "1.0.3" @@ -3176,7 +3061,6 @@ get-caller-file@^1.0.1: get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.0: version "2.0.0" @@ -3193,7 +3077,6 @@ get-port@^3.1.0: get-stdin@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== get-stream@^2.2.0: version "2.3.1" @@ -3209,14 +3092,12 @@ get-stream@^3.0.0: get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.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== dependencies: pump "^3.0.0" @@ -3267,7 +3148,6 @@ glob@^5.0.15: glob@^7.1.3: version "7.1.5" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" - integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3279,7 +3159,6 @@ glob@^7.1.3: glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3291,7 +3170,6 @@ glob@^7.1.4: 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" @@ -3354,7 +3232,6 @@ got@7.1.0, got@^7.1.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== dependencies: "@sindresorhus/is" "^0.14.0" "@szmarczak/http-timer" "^1.1.2" @@ -3371,7 +3248,6 @@ got@9.6.0, got@^9.6.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: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== "graceful-readlink@>= 1.0.0": version "1.0.1" @@ -3388,7 +3264,6 @@ growl@1.10.5, "growl@~> 1.10.0": handlebars@^4.0.1, handlebars@^4.0.11: version "4.5.1" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.1.tgz#8a01c382c180272260d07f2d1aa3ae745715c7ba" - integrity sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA== dependencies: neo-async "^2.6.0" optimist "^0.6.1" @@ -3469,7 +3344,6 @@ has-values@^1.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== hash-base@^3.0.0: version "3.0.4" @@ -3511,7 +3385,6 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: hosted-git-info@^2.7.1: version "2.8.5" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" - integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== http-basic@^7.0.0: version "7.0.0" @@ -3527,12 +3400,10 @@ http-basic@^7.0.0: http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== 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" - integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== http-errors@1.6.2: version "1.6.2" @@ -3559,7 +3430,6 @@ http-https@^1.0.0: http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== dependencies: agent-base "4" debug "3.1.0" @@ -3581,7 +3451,6 @@ http-signature@~1.2.0: https-proxy-agent@^2.2.3: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== dependencies: agent-base "^4.3.0" debug "^3.1.0" @@ -3589,7 +3458,6 @@ https-proxy-agent@^2.2.3: humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= dependencies: ms "^2.0.0" @@ -3630,7 +3498,6 @@ ieee754@^1.1.4: iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore-walk@^3.0.1: version "3.0.1" @@ -3645,7 +3512,6 @@ ignore@^3.3.3, ignore@^3.3.5: 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-sort-cli@^4.2.0: version "4.2.0" @@ -3723,12 +3589,10 @@ indent-string@^3.0.0: infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" @@ -3736,7 +3600,6 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.1: version "2.0.1" @@ -3786,12 +3649,10 @@ invert-kv@^1.0.0: 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== ip@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= ipaddr.js@1.8.0: version "1.8.0" @@ -3826,7 +3687,6 @@ is-buffer@^1.1.5: is-buffer@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== is-builtin-module@^1.0.0: version "1.0.0" @@ -3847,7 +3707,6 @@ is-ci@^1.0.10: 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" @@ -3900,7 +3759,6 @@ is-extendable@^0.1.0, is-extendable@^0.1.1: is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" @@ -3951,7 +3809,6 @@ is-hex-prefixed@1.0.0: 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" @@ -3963,7 +3820,6 @@ is-natural-number@^4.0.1: 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" @@ -4018,7 +3874,6 @@ is-plain-obj@^1.1.0: is-plain-object@^2.0.1, 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== dependencies: isobject "^3.0.1" @@ -4061,7 +3916,6 @@ is-windows@^1.0.2: 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" @@ -4084,7 +3938,6 @@ isobject@^2.0.0: isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isomorphic-fetch@^2.2.1: version "2.2.1" @@ -4175,7 +4028,6 @@ jest-validate@^23.5.0: jju@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= js-sha3@0.5.5: version "0.5.5" @@ -4196,7 +4048,6 @@ js-sha3@^0.7.0: js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== js-string-escape@^1.0.1: version "1.0.1" @@ -4213,7 +4064,6 @@ js-tokens@^3.0.2: js-yaml@3.x, js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -4225,7 +4075,6 @@ jsbn@~0.1.0: json-buffer@3.0.0: version "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.0, json-parse-better-errors@^1.0.1: version "1.0.2" @@ -4234,7 +4083,6 @@ json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: json-parse-helpfulerror@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz#13f14ce02eed4e981297b64eb9e3b932e2dd13dc" - integrity sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w= dependencies: jju "^1.1.0" @@ -4245,7 +4093,6 @@ json-schema-traverse@^0.3.0: json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" @@ -4268,7 +4115,6 @@ json-stringify-safe@~5.0.1: json-text-sequence@^0.1: version "0.1.1" resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" - integrity sha1-py8hfcSvxGKf/1/rME3BvVGi89I= dependencies: delimit-stream "0.1.0" @@ -4281,7 +4127,6 @@ json5@^1.0.1: 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" @@ -4304,7 +4149,6 @@ jsonify@~0.0.0: jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsonschema@^1.2.0: version "1.2.4" @@ -4331,7 +4175,6 @@ keccak@^1.0.2: keccak@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" - integrity sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q== dependencies: bindings "^1.5.0" inherits "^2.0.4" @@ -4348,7 +4191,6 @@ keccakjs@^0.2.0, keccakjs@^0.2.1: keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: json-buffer "3.0.0" @@ -4381,12 +4223,10 @@ klaw@^1.0.0: 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== 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" @@ -4399,7 +4239,6 @@ lcid@^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" @@ -4421,7 +4260,6 @@ levn@^0.3.0, levn@~0.3.0: libnpmconfig@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" - integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== dependencies: figgy-pudding "^3.5.1" find-up "^3.0.0" @@ -4430,7 +4268,6 @@ libnpmconfig@^1.2.1: link_token@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/link_token/-/link_token-1.0.6.tgz#98c5a1f53d4e22d7b0d5f80c5051702e7dc3b436" - integrity sha512-WI6n2Ri9kWQFsFYPTnLvU+Y3DT87he55uqLLX/sAwCVkGTXI/wionGEHAoWU33y8RepWlh46y+RD+DAz5Wmejg== lint-staged@^7.2.0: version "7.2.2" @@ -4525,7 +4362,6 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" @@ -4533,109 +4369,88 @@ locate-path@^3.0.0: locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" lodash.concat@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.concat/-/lodash.concat-4.5.0.tgz#b053ae02e4a8008582e7256b9d02bda6d0380395" - integrity sha1-sFOuAuSoAIWC5yVrnQK9ptA4A5U= lodash.difference@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= lodash.every@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" - integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc= lodash.findlast@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.findlast/-/lodash.findlast-4.6.0.tgz#ea8bb78cf2e7e7804fc8aeb7d1953e07fe31fbc8" - integrity sha1-6ou3jPLn54BPyK630ZU+B/4x+8g= lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= lodash.invertby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.invertby/-/lodash.invertby-4.7.0.tgz#cdebb6cd4942aa6b8df2c74be1c5d948682718b0" - integrity sha1-zeu2zUlCqmuN8sdL4cXZSGgnGLA= lodash.isarray@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-4.0.0.tgz#2aca496b28c4ca6d726715313590c02e6ea34403" - integrity sha1-KspJayjEym1yZxUxNZDALm6jRAM= lodash.isempty@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" - integrity sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU= lodash.map@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= lodash.omit@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" - integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= lodash.pick@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= lodash.pickby@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" - integrity sha1-feoh2MGNdwOifHBMFdO4SmfjOv8= lodash.random@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.random/-/lodash.random-3.2.0.tgz#96e24e763333199130d2c9e2fd57f91703cc262d" - integrity sha1-luJOdjMzGZEw0sni/Vf5FwPMJi0= lodash.reverse@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.reverse/-/lodash.reverse-4.0.1.tgz#1f2afedace2e16e660f3aa7c59d3300a6f25d13c" - integrity sha1-Hyr+2s4uFuZg86p8WdMwCm8l0Tw= lodash.some@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= lodash.values@^4.3.0: version "4.3.0" @@ -4644,17 +4459,14 @@ lodash.values@^4.3.0: lodash.without@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" - integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= lodash@^4.13.1, lodash@^4.14.2, lodash@^4.17.13, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.13" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.13.tgz#0bdc3a6adc873d2f4e0c4bac285df91b64fc7b93" - integrity sha512-vm3/XWXfWtRua0FkUyEHBZy8kCPjErNBT9fJx8Zvs+U6zjqPbTUOpkaoum3O5uiA8sm+yNMHXfYkTUHFoMxFNA== lodash@^4.17.11, lodash@^4.17.15, lodash@^4.2.0: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== log-driver@^1.2.7: version "1.2.7" @@ -4692,7 +4504,6 @@ lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: lowercase-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lru-cache@^4.0.1: version "4.1.3" @@ -4704,7 +4515,6 @@ lru-cache@^4.0.1: lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" @@ -4721,7 +4531,6 @@ make-error@^1.1.1: make-fetch-happen@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.1.tgz#fac65400ab5f7a9c001862a3e9b0f417f0840175" - integrity sha512-b4dfaMvUDR67zxUq1+GN7Ke9rH5WvGRmoHuMH7l+gmUCR2tCXFP6mpeJ9Dp+jB6z8mShRopSf1vLRBhRs8Cu5w== dependencies: agentkeepalive "^3.4.1" cacache "^12.0.0" @@ -4738,7 +4547,6 @@ make-fetch-happen@^5.0.0: 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" @@ -4776,7 +4584,6 @@ mem@^1.1.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" @@ -4868,7 +4675,6 @@ mimic-fn@^1.0.0: 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" @@ -4891,14 +4697,12 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: "minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, 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@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@^1.2.0: version "1.2.0" @@ -4907,7 +4711,6 @@ minimist@^1.2.0: minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= minipass@^2.2.1, minipass@^2.3.3: version "2.3.4" @@ -4919,7 +4722,6 @@ minipass@^2.2.1, minipass@^2.3.3: minipass@^2.3.5, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" @@ -4933,14 +4735,12 @@ minizlib@^1.1.0: minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: minipass "^2.9.0" mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -4956,7 +4756,6 @@ mississippi@^3.0.0: mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -4976,7 +4775,6 @@ mkdirp@*, mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0 mocha@5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" - integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== dependencies: browser-stdout "1.3.1" commander "2.15.1" @@ -5020,7 +4818,6 @@ mout@^0.11.0: move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -5036,7 +4833,6 @@ ms@2.0.0: ms@^2.0.0, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== mute-stream@0.0.7: version "0.0.7" @@ -5061,7 +4857,6 @@ nan@>=2.5.1, nan@^2.0.8, nan@^2.2.1, nan@^2.9.2: nan@^2.14.0: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== nan@^2.3.3: version "2.11.1" @@ -5106,27 +4901,22 @@ negotiator@0.6.1: 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== nested-error-stacks@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b" - integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-alias@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/node-alias/-/node-alias-1.0.4.tgz#1f1b916b56b9ea241c0135f97ced6940f556f292" - integrity sha1-HxuRa1a56iQcATX5fO1pQPVW8pI= dependencies: chalk "^1.1.1" lodash "^4.2.0" @@ -5134,7 +4924,6 @@ node-alias@^1.0.4: node-fetch-npm@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" - integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== dependencies: encoding "^0.1.11" json-parse-better-errors "^1.0.0" @@ -5165,7 +4954,6 @@ node-pre-gyp@^0.10.0: nofilter@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.3.tgz#34e54b4cc9757de0cad38cc0d19462489b1b7f5d" - integrity sha512-FlUlqwRK6reQCaFLAhMcF+6VkVG2caYjKQY3YsRDTl4/SEch595Qb3oLjJRDr8dkHAAOVj2pOx3VknfnSgkE5g== nopt@3.x: version "3.0.6" @@ -5192,7 +4980,6 @@ normalize-package-data@^2.3.2: normalize-package-data@^2.4.0: 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== dependencies: hosted-git-info "^2.1.4" resolve "^1.10.0" @@ -5212,7 +4999,6 @@ normalize-path@^2.0.0, normalize-path@^2.0.1: normalize-url@^4.1.0: version "4.5.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== npm-bundled@^1.0.1: version "1.0.5" @@ -5221,7 +5007,6 @@ npm-bundled@^1.0.1: npm-check-updates@^3.1.11: version "3.2.1" resolved "https://registry.yarnpkg.com/npm-check-updates/-/npm-check-updates-3.2.1.tgz#6bb73a5b8684e94b6093d1f189d176074eb4512b" - integrity sha512-gYXHGc9mAncGrEMjs2uRJgOdWRP5CR9iZ+HyUNf4eqjtdDV6jLvi2e19G5BEpdvc8fU73J+B5m8ALYB49du/EA== dependencies: chalk "^2.4.2" cint "^8.2.1" @@ -5247,7 +5032,6 @@ npm-check-updates@^3.1.11: npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" - integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== dependencies: hosted-git-info "^2.7.1" osenv "^0.1.5" @@ -5257,7 +5041,6 @@ npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: npm-packlist@^1.1.12: version "1.4.6" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" - integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -5278,7 +5061,6 @@ npm-path@^2.0.2: npm-pick-manifest@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" - integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== dependencies: figgy-pudding "^3.5.1" npm-package-arg "^6.0.0" @@ -5287,7 +5069,6 @@ npm-pick-manifest@^3.0.0: npm-registry-fetch@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz#2b1434f93ccbe6b6385f8e45f45db93e16921d7a" - integrity sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A== dependencies: JSONStream "^1.3.4" bluebird "^3.5.1" @@ -5350,7 +5131,6 @@ object-copy@^0.1.0: object-keys@^1.0.12: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" @@ -5380,7 +5160,6 @@ oboe@2.1.3: oboe@2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= dependencies: http-https "^1.0.0" @@ -5393,7 +5172,6 @@ on-finished@~2.3.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" @@ -5410,14 +5188,12 @@ onetime@^2.0.0: 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" openzeppelin-solidity@^1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/openzeppelin-solidity/-/openzeppelin-solidity-1.12.0.tgz#7b9c55975e73370d4541e3442b30cb3d91ac973a" - integrity sha512-WlorzMXIIurugiSdw121RVD5qA3EfSI7GybTn+/Du0mPNgairjt29NpVTAaH8eLjAeAwlw46y7uQKy0NYem/gA== openzeppelin-solidity@^2.2: version "2.2.0" @@ -5426,7 +5202,6 @@ openzeppelin-solidity@^2.2: optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= dependencies: minimist "~0.0.1" wordwrap "~0.0.2" @@ -5470,7 +5245,6 @@ os-locale@^2.0.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" @@ -5494,12 +5268,10 @@ p-cancelable@^0.3.0: p-cancelable@^1.0.0: version "1.1.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-finally@^1.0.0: version "1.0.0" @@ -5508,7 +5280,6 @@ p-finally@^1.0.0: 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" @@ -5519,7 +5290,6 @@ p-limit@^1.1.0: p-limit@^2.0.0, p-limit@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== dependencies: p-try "^2.0.0" @@ -5532,14 +5302,12 @@ p-locate@^2.0.0: p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" @@ -5560,12 +5328,10 @@ p-try@^1.0.0: p-try@^2.0.0: version "2.2.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" @@ -5575,7 +5341,6 @@ package-json@^6.3.0: pacote@^9.5.8: version "9.5.9" resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.9.tgz#fa3a08629c9390b2b99769c55b2cc137e1a24df3" - integrity sha512-S1nYW9ly+3btn3VmwRAk2LG3TEh8mkrFdY+psbnHSk8oPODbZ28uG0Z0d3yI0EpqcpLR6BukoVRf3H4IbGCkPQ== dependencies: bluebird "^3.5.3" cacache "^12.0.2" @@ -5610,12 +5375,10 @@ pacote@^9.5.8: pako@^1.0.4: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== dependencies: cyclist "^1.0.1" inherits "^2.0.3" @@ -5685,12 +5448,10 @@ path-exists@^3.0.0: path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "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, path-is-inside@^1.0.2: version "1.0.2" @@ -5793,7 +5554,6 @@ prepend-http@^1.0.1: prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= preserve@^0.2.0: version "0.2.0" @@ -5828,17 +5588,14 @@ progress@^2.0.0: progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= promise-retry@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= dependencies: err-code "^1.0.0" retry "^0.10.0" @@ -5852,7 +5609,6 @@ promise@^8.0.0: prompts@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35" - integrity sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw== dependencies: kleur "^3.0.3" sisteransi "^1.0.3" @@ -5860,7 +5616,6 @@ prompts@^2.2.1: protoduck@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== dependencies: genfun "^5.0.0" @@ -5893,7 +5648,6 @@ public-encrypt@^4.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" @@ -5901,7 +5655,6 @@ pump@^2.0.0: pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -5909,7 +5662,6 @@ pump@^3.0.0: pumpify@^1.3.3: 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" @@ -5926,7 +5678,6 @@ punycode@^1.4.1: punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@6.5.1: version "6.5.1" @@ -5961,7 +5712,6 @@ randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" @@ -6001,7 +5751,6 @@ raw-body@2.3.3: rc-config-loader@^2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/rc-config-loader/-/rc-config-loader-2.0.5.tgz#81e78221167dbaa80877f2538f5e1a37c7e24ce3" - integrity sha512-T464K2MQlnNWOblUDIglpFhyN+zYJq7jSlL++/N0hUkcmIXeNFumwXFVdtf8qhUGohn4RYQ0wdi74R575I44PQ== dependencies: debug "^4.1.1" js-yaml "^3.12.0" @@ -6069,7 +5818,6 @@ regenerator-runtime@^0.11.0: regenerator-runtime@^0.13.2: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== regex-cache@^0.4.2: version "0.4.4" @@ -6091,7 +5839,6 @@ regexpp@^1.0.1: 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" @@ -6099,7 +5846,6 @@ registry-auth-token@^4.0.0: 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" @@ -6199,7 +5945,6 @@ require-main-filename@^1.0.1: require-main-filename@^2.0.0: version "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== require-uncached@^1.0.3: version "1.0.3" @@ -6211,7 +5956,6 @@ require-uncached@^1.0.3: requireg@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/requireg/-/requireg-0.2.2.tgz#437e77a5316a54c9bcdbbf5d1f755fe093089830" - integrity sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg== dependencies: nested-error-stacks "~2.0.1" rc "~1.2.7" @@ -6246,21 +5990,18 @@ resolve@^1.1.6, resolve@^1.3.2, resolve@^1.5.0: resolve@^1.10.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" resolve@~1.7.1: version "1.7.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" - integrity sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw== dependencies: path-parse "^1.0.5" responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= dependencies: lowercase-keys "^1.0.0" @@ -6281,7 +6022,6 @@ restore-cursor@^2.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" @@ -6293,12 +6033,10 @@ ret@~0.1.10: retry@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= rimraf@2, 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" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" @@ -6318,7 +6056,6 @@ rlp@^2.0.0: 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" @@ -6331,7 +6068,6 @@ run-async@^2.2.0: 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" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= dependencies: aproba "^1.1.1" @@ -6362,7 +6098,6 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== safe-regex@^1.1.0: version "1.1.0" @@ -6385,7 +6120,6 @@ scrypt-js@2.0.3: scrypt-js@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== scrypt.js@0.2.0: version "0.2.0" @@ -6403,7 +6137,6 @@ scrypt@^6.0.2: 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== scryptsy@^1.2.1: version "1.2.1" @@ -6437,14 +6170,12 @@ semver-compare@^1.0.0: 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-utils@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2" - integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA== "semver@2 || 3 || 4 || 5", semver@^5.3.0: version "5.5.1" @@ -6453,12 +6184,10 @@ semver-utils@^1.1.4: 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@^5.0.3, semver@^5.4.1, 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== semver@^5.5.0: version "5.6.0" @@ -6467,7 +6196,6 @@ semver@^5.5.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== send@0.16.2: version "0.16.2" @@ -6535,7 +6263,6 @@ set-immediate-shim@^1.0.1: set-protocol-contracts@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/set-protocol-contracts/-/set-protocol-contracts-1.2.9.tgz#92ec40eab0ca019dd2cc36b210b00b8ed232f30d" - integrity sha512-EcXWh7yJgHqr5qrR/PGTurtORvDd5QRGvf6c5tomYB7/WTFu5ielQDHjM2T7InyG80OOrsNsYdNJhsVS3ZSndQ== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6560,7 +6287,6 @@ set-protocol-contracts@^1.2.9: set-protocol-contracts@^1.3.13-beta: version "1.3.13-beta" resolved "https://registry.yarnpkg.com/set-protocol-contracts/-/set-protocol-contracts-1.3.13-beta.tgz#85529bbd2620640e91b7541bcbc1fca8d96b7145" - integrity sha512-TefAGIjQ6jkLlV2QQG5KkG81jOaKKyHy3lTGPgLsUrDY4kpUlE5RXW5QOP6pTMmM1km8DO6kdaOzkXpRElBNzA== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6587,7 +6313,6 @@ set-protocol-contracts@^1.3.13-beta: set-protocol-contracts@^1.3.32-beta: version "1.3.32-beta" resolved "https://registry.yarnpkg.com/set-protocol-contracts/-/set-protocol-contracts-1.3.32-beta.tgz#005bd41363c3be65397ebeaa3ac7faae247379ff" - integrity sha512-+d+nW+c1XuBB8pXKc3PpxTFQEic22pPcBcderJQynaw304KASqj3Vlg+nUU5Q6786mr5Cplfe9TaQGBcykiMPg== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6612,10 +6337,10 @@ set-protocol-contracts@^1.3.32-beta: web3-utils "1.0.0-beta.36" zos-lib "^2.4.2" -set-protocol-contracts@^1.3.34-beta: - version "1.3.34-beta" - resolved "https://registry.yarnpkg.com/set-protocol-contracts/-/set-protocol-contracts-1.3.34-beta.tgz#654a330d6734b5fb1992279b0cfbc52ca0b1d445" - integrity sha512-xKHBgIJDtUw5WUCmdl666hCgBQpumNBdVJPLFunvdXIATi8jI69IQTN5vDiSO8wO6tizcm08rzR4WCHU5hF2MA== +set-protocol-contracts@^1.3.48-beta: + version "1.3.48-beta" + resolved "https://registry.yarnpkg.com/set-protocol-contracts/-/set-protocol-contracts-1.3.48-beta.tgz#959309f9a88f39670cf81ecec8e606e4ac000fa0" + integrity sha512-Aih7AizTAl1tsqwaNeH3Krv9mjW0HupH9qphI1UihomKJAVZYyt+seDL2KsE0EXjfE/rSIqQ1Jddhd1RuuyHag== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6643,7 +6368,6 @@ set-protocol-contracts@^1.3.34-beta: set-protocol-contracts@^1.3.8-beta: version "1.3.8-beta" resolved "https://registry.yarnpkg.com/set-protocol-contracts/-/set-protocol-contracts-1.3.8-beta.tgz#a632c07fbb8ed9ee74e9627805dc9abcec7f2f4f" - integrity sha512-oA5CpjjWpg2yTeaM6MyFBp893JokBExqOyQq2XeBypdI2fpH5V0F++Dd/6S/zLiyyTTctbrPkiAJ6D4Vn9IL6Q== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6670,7 +6394,6 @@ set-protocol-contracts@^1.3.8-beta: set-protocol-oracles@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/set-protocol-oracles/-/set-protocol-oracles-1.0.3.tgz#be745a51adc9d40d27ba454f882ae15c429fa55b" - integrity sha512-lQZLNAYAtzEDsXM4B4t5/++sZzi3KtbG6WEOMCcSB+q4/Ft9x4IGAS77dgLBgwGjU01H4N0/o5dWryYwZT6UHQ== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6697,7 +6420,6 @@ set-protocol-oracles@^1.0.1: set-protocol-oracles@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/set-protocol-oracles/-/set-protocol-oracles-1.0.5.tgz#611e648c8a538b360b25e3450a062d61fd0a3fa4" - integrity sha512-t+Axb07DH7JBzHvtR52LuJlSYxu4rVM+CZwZApIXu69D+fJg8Y0PfGaRI0MiXZ2Fr+X18Q/Jcq1P0kuHeuvC3g== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6721,10 +6443,36 @@ set-protocol-oracles@^1.0.5: web3 "1.0.0-beta.36" web3-utils "1.0.0-beta.36" +set-protocol-strategies@1.1.29: + version "1.1.29" + resolved "https://registry.yarnpkg.com/set-protocol-strategies/-/set-protocol-strategies-1.1.29.tgz#aa1c5cf5f1d9f8eac1ffb68874f09b67cea66b9a" + integrity sha512-llalDnD2k5Gx7nD/TmIazrns6YrvvobWH66FtHnS88A9RkjtTWk9yfMzw6nlUGy7jYTMvORtesvYl+duBF9qrA== + dependencies: + bn-chai "^1.0.1" + canonical-weth "^1.3.1" + dotenv "^6.2.0" + eth-gas-reporter "^0.1.10" + ethlint "^1.2.3" + expect "^24.1.0" + fs-extra "^5.0.0" + husky "^0.14.3" + lint-staged "^7.2.0" + module-alias "^2.1.0" + openzeppelin-solidity "^2.2" + set-protocol-contracts "^1.3.48-beta" + set-protocol-oracles "^1.0.5" + set-protocol-utils "^1.0.0-beta.45" + tiny-promisify "^1.0.0" + truffle-flattener "^1.4.2" + ts-mocha "^6.0.0" + ts-node "^8.0.2" + tslint-eslint-rules "^5.3.1" + web3 "1.0.0-beta.36" + web3-utils "1.0.0-beta.36" + set-protocol-strategies@^1.1.22: version "1.1.23" resolved "https://registry.yarnpkg.com/set-protocol-strategies/-/set-protocol-strategies-1.1.23.tgz#5180326c3f7ead937d55f3c9293b92d2bc402842" - integrity sha512-eWpFiY2lQ9D8rwzvij+N0cdc8Bl6KTjyrTTnbyR7HaAUAqW65kgYl/KRgobhU0iVwWiVk+LrPksTcbkK2wTTcw== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6747,10 +6495,9 @@ set-protocol-strategies@^1.1.22: web3 "1.0.0-beta.36" web3-utils "1.0.0-beta.36" -set-protocol-strategies@^1.1.24, set-protocol-strategies@^1.1.26: +set-protocol-strategies@^1.1.24: version "1.1.26" resolved "https://registry.yarnpkg.com/set-protocol-strategies/-/set-protocol-strategies-1.1.26.tgz#82f3758dec6bf8ce3ed99ba72674ac94910669b8" - integrity sha512-J/qnincwg6uxviq0WNNf2TdchAyYDlLzIep41+328rROXTy6GuMEs8WORAQKlkGQGaaOJ5Xp4r/8bz6FF1cVOQ== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6776,7 +6523,6 @@ set-protocol-strategies@^1.1.24, set-protocol-strategies@^1.1.26: set-protocol-strategies@^1.1.7: version "1.1.16" resolved "https://registry.yarnpkg.com/set-protocol-strategies/-/set-protocol-strategies-1.1.16.tgz#1c071c86951debc881d4af9059830285538ea2f7" - integrity sha512-Us47+iTwrXGiuloXBO2lhOfXsX1HPfBZ3IqUooE4jh6XxVNF139ZQ3vX9e/h7u0ahKj/0AdO8fjYxPRW2BB+Sw== dependencies: bn-chai "^1.0.1" canonical-weth "^1.3.1" @@ -6802,7 +6548,6 @@ set-protocol-strategies@^1.1.7: set-protocol-utils@^1.0.0-beta.39, set-protocol-utils@^1.0.0-beta.41: version "1.0.0-beta.43" resolved "https://registry.yarnpkg.com/set-protocol-utils/-/set-protocol-utils-1.0.0-beta.43.tgz#15ae674c16f4bfd140ec79db6221de23aba0fb89" - integrity sha512-bMCJq3Yk2uj/CRiTSKZycBbtn5Cn62rpQrzWIl3zNZ+24EdNRHS+siE3EbPYVXq4I8qxAddWSriKIbO4HWFnmw== dependencies: "@0xproject/base-contract" "^1.0.4" "@0xproject/order-utils" "^1.0.1" @@ -6834,7 +6579,6 @@ set-protocol-utils@^1.0.0-beta.39, set-protocol-utils@^1.0.0-beta.41: set-protocol-utils@^1.0.0-beta.44, set-protocol-utils@^1.0.0-beta.45: version "1.0.0-beta.45" resolved "https://registry.yarnpkg.com/set-protocol-utils/-/set-protocol-utils-1.0.0-beta.45.tgz#c399727b6f061ef5c99f2712e198ce2f8fea9d21" - integrity sha512-91UUsuOjx9JQ0DbWFA0bWJRrVioN3Gn61pLbEy9XyqYF4SwZ8Nh8aFRs9NghGNAQJ+xhSg7ag4YxVECjgsa6cw== dependencies: "@0xproject/base-contract" "^1.0.4" "@0xproject/order-utils" "^1.0.1" @@ -6931,7 +6675,6 @@ shelljs@^0.7.8: shelljs@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" - integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -6956,7 +6699,6 @@ simple-get@^2.7.0: sisteransi@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.3.tgz#98168d62b79e3a5e758e27ae63c4a053d748f4eb" - integrity sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg== slash@^1.0.0: version "1.0.0" @@ -6985,7 +6727,6 @@ slice-ansi@1.0.0: smart-buffer@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== snapdragon-node@^2.0.1: version "2.1.1" @@ -7017,7 +6758,6 @@ snapdragon@^0.8.1: socks-proxy-agent@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== dependencies: agent-base "~4.2.1" socks "~2.3.2" @@ -7025,7 +6765,6 @@ socks-proxy-agent@^4.0.0: socks@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.3.tgz#01129f0a5d534d2b897712ed8aceab7ee65d78e3" - integrity sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA== dependencies: ip "1.1.5" smart-buffer "^4.1.0" @@ -7058,7 +6797,6 @@ solc@^0.5.4: solidity-coverage@^0.6.3: version "0.6.7" resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.6.7.tgz#8ccd5e6d4d4ecc8cc59baf3656a869762d73c079" - integrity sha512-Ga0Er5b25sFhy1uaYrQ+jQisP9819nj3zP1pfyAfE8Skg+/OBQ+Ev3sOmYQy9qZMjDuFJ7PCjuFVXdqdBO3cZw== dependencies: death "^1.1.0" ethereumjs-testrpc-sc "6.5.1-sc.1" @@ -7075,7 +6813,6 @@ solidity-coverage@^0.6.3: solidity-parser-antlr@0.4.7: version "0.4.7" resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.7.tgz#8e18867c95a956958ed008371e43f9e571dee6af" - integrity sha512-iVjNhgqkXw+o+0E+xoLcji+3KuXLe8Rm8omUuVGhsV14+ZsTwQ70nhBRXg8O3t9xwdS0iST1q9NJ5IqHnqpWkA== dependencies: npm-check-updates "^3.1.11" @@ -7086,7 +6823,6 @@ solidity-parser-antlr@^0.2.10: solidity-parser-antlr@^0.4.11: version "0.4.11" resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.11.tgz#af43e1f13b3b88309a875455f5d6e565b05ee5f1" - integrity sha512-4jtxasNGmyC0midtjH/lTFPZYvTTUMy6agYcF+HoMnzW8+cqo3piFrINb4ZCzpPW+7tTVFCGa5ubP34zOzeuMg== solium-plugin-security@0.1.1: version "0.1.1" @@ -7113,7 +6849,6 @@ source-map-resolve@^0.5.0: source-map-support@0.5.12: version "0.5.12" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -7153,7 +6888,6 @@ source-map@~0.2.0: spawn-please@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/spawn-please/-/spawn-please-0.3.0.tgz#db338ec4cff63abc69f1d0e08cee9eb8bebd9d11" - integrity sha1-2zOOxM/2Orxp8dDgjO6euL69nRE= spdx-correct@^3.0.0: version "3.0.0" @@ -7180,7 +6914,6 @@ spdx-license-ids@^3.0.0: spinnies@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/spinnies/-/spinnies-0.4.3.tgz#2ea0ad148e78353ddf621dec3951a6f4c3cbf66e" - integrity sha512-TTA2vWXrXJpfThWAl2t2hchBnCMI1JM5Wmb2uyI7Zkefdw/xO98LDy6/SBYwQPiYXL3swx3Eb44ZxgoS8X5wpA== dependencies: chalk "^2.4.2" cli-cursor "^3.0.0" @@ -7195,7 +6928,6 @@ split-string@^3.0.1, split-string@^3.0.2: sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: version "1.14.2" @@ -7215,7 +6947,6 @@ sshpk@^1.7.0: ssri@^6.0.0, ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" @@ -7249,7 +6980,6 @@ stealthy-require@^1.1.0: stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" @@ -7257,7 +6987,6 @@ stream-each@^1.1.0: 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= strict-uri-encode@^1.0.0: version "1.1.0" @@ -7285,7 +7014,6 @@ string-width@^1.0.1: string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== dependencies: emoji-regex "^7.0.1" is-fullwidth-code-point "^2.0.0" @@ -7320,7 +7048,6 @@ strip-ansi@^4.0.0: strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: ansi-regex "^4.1.0" @@ -7361,7 +7088,6 @@ supports-color@4.4.0: supports-color@5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== dependencies: has-flag "^3.0.0" @@ -7402,7 +7128,6 @@ swarm-js@0.1.37: swarm-js@0.1.39: version "0.1.39" resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" - integrity sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg== dependencies: bluebird "^3.5.0" buffer "^5.0.5" @@ -7491,7 +7216,6 @@ tar@^4: tar@^4.0.2, tar@^4.4.10: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" @@ -7504,7 +7228,6 @@ tar@^4.0.2, tar@^4.4.10: 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" @@ -7543,7 +7266,6 @@ thenify-all@^1.0.0, thenify-all@^1.6.0: through2@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" xtend "~4.0.1" @@ -7589,7 +7311,6 @@ to-object-path@^0.3.0: to-readable-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== to-regex-range@^2.1.0: version "2.1.1" @@ -7637,7 +7358,6 @@ trim@0.0.1: truffle-contract@^4.0.31: version "4.0.31" resolved "https://registry.yarnpkg.com/truffle-contract/-/truffle-contract-4.0.31.tgz#e43b7f648e2db352c857d1202d710029b107b68d" - integrity sha512-u3q+p1wiX5C2GpnluGx/d2iaJk7bcWshk2/TohiJyA2iQiTfkS7M4n9D9tY3JqpXR8PmD/TrA69RylO0RhITFA== dependencies: "@truffle/blockchain-utils" "^0.0.11" "@truffle/contract-schema" "^3.0.14" @@ -7653,7 +7373,6 @@ truffle-contract@^4.0.31: truffle-flattener@^1.4.0, truffle-flattener@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.4.2.tgz#7460d0eec88ac67b150e8de3476f55d4420a4ba0" - integrity sha512-7qUIzaW8a4vI4nui14wsytht2oaqvqnZ1Iet2wRq2T0bCJ0wb6HByMKQhZKpU46R+n5BMTY4K5n+0ITyeNlmuQ== dependencies: "@resolver-engine/imports-fs" "^0.2.2" find-up "^2.1.0" @@ -7664,17 +7383,16 @@ truffle-flattener@^1.4.0, truffle-flattener@^1.4.2: truffle-interface-adapter@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/truffle-interface-adapter/-/truffle-interface-adapter-0.2.5.tgz#aa0bee635517b4a8e06adcdc99eacb993e68c243" - integrity sha512-EL39OpP8FcZ99ne1Rno3jImfb92Nectd4iVsZzoEUCBfbwHe7sr0k+i45guoruSoP8nMUE81Mov2s8I5pi6d9Q== dependencies: bn.js "^4.11.8" ethers "^4.0.32" lodash "^4.17.13" web3 "1.2.1" -truffle@^5.0.37: - version "5.0.37" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.0.37.tgz#10da6f1bb9e661c4ccec75c295554bc4434f6b18" - integrity sha512-od3mnu6sCV7sYbJCLSDV66RZ4bYeuLQ1QDpjGQHyJMB5AIw+u8GnxBmj6MKBOWHC+zixnwkRwS9yTYpj5IObFg== +truffle@^5.1.12: + version "5.1.16" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.1.16.tgz#19c5bc6b3e21cdc41266aed30b5650b9665952b8" + integrity sha512-McY2AKicKIdIclpclIXluWtCf1yj2cTJGS0ghStHkklw7XYk3ZL4MoftNyfqiYCjIjGs24qoEF9o/JlRp5qnmQ== dependencies: app-module-path "^2.2.0" mocha "5.2.0" @@ -7763,7 +7481,6 @@ tslint@^5.8.0: tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" - integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= tsutils@^2.27.2, tsutils@^2.3.0: version "2.29.0" @@ -7800,7 +7517,6 @@ type-detect@^4.0.0, type-detect@^4.0.5: 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-is@~1.6.15, type-is@~1.6.16: version "1.6.16" @@ -7812,12 +7528,10 @@ type-is@~1.6.15, type-is@~1.6.16: type@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== typedarray-to-buffer@^3.1.2, typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -7850,12 +7564,10 @@ typescript@^3.3.1: typescript@^3.7.0-beta: version "3.7.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" - integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== uglify-js@^3.1.4: version "3.6.7" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.7.tgz#15f49211df6b8a01ee91322bbe46fa33223175dc" - integrity sha512-4sXQDzmdnoXiO+xvmTzQsfIiwrjUCSA95rSP4SEd8tDb51W2TiDOlL76Hl+Kw0Ie42PSItCW8/t6pBNCF2R48A== dependencies: commander "~2.20.3" source-map "~0.6.1" @@ -7878,12 +7590,10 @@ underscore@1.8.3: 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== underscore@^1.8.3: version "1.9.2" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.2.tgz#0c8d6f536d6f378a5af264a72f7bec50feb7cf2f" - integrity sha512-D39qtimx0c1fI3ya1Lnhk3E9nONswSKhnffBI0gME9C99fYOkNi04xs8K6pePLhvl1frbDemkaBQ5ikWllR2HQ== union-value@^1.0.0: version "1.0.0" @@ -7897,21 +7607,18 @@ union-value@^1.0.0: unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== dependencies: imurmurhash "^0.1.4" 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" @@ -7933,7 +7640,6 @@ unset-value@^1.0.0: 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" @@ -7951,7 +7657,6 @@ update-notifier@^3.0.1: uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" @@ -7968,7 +7673,6 @@ url-parse-lax@^1.0.0: url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: prepend-http "^2.0.0" @@ -7991,7 +7695,6 @@ utf8@2.1.1: utf8@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== utf8@^2.1.1: version "2.1.2" @@ -8027,7 +7730,6 @@ validate-npm-package-license@^3.0.1: validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= dependencies: builtins "^1.0.3" @@ -8054,7 +7756,6 @@ web3-bzz@1.0.0-beta.36: web3-bzz@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.0.0-beta.37.tgz#59e3e4f5a9d732731008fe9165c3ec8bf85d502f" - integrity sha512-E+dho49Nsm/QpQvYWOF35YDsQrMvLB19AApENxhlQsu6HpWQt534DQul0t3Y/aAh8rlKD6Kanxt8LhHDG3vejQ== dependencies: got "7.1.0" swarm-js "0.1.37" @@ -8063,7 +7764,6 @@ web3-bzz@1.0.0-beta.37: 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" @@ -8072,7 +7772,6 @@ web3-bzz@1.2.1: web3-bzz@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.4.tgz#a4adb7a8cba3d260de649bdb1f14ed359bfb3821" - integrity sha512-MqhAo/+0iQSMBtt3/QI1rU83uvF08sYq8r25+OUZ+4VtihnYsmkkca+rdU0QbRyrXY2/yGIpI46PFdh0khD53A== dependencies: "@types/node" "^10.12.18" got "9.6.0" @@ -8082,7 +7781,6 @@ web3-bzz@1.2.4: web3-bzz@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.6.tgz#0b88c0b96029eaf01b10cb47c4d5f79db4668883" - integrity sha512-9NiHLlxdI1XeFtbPJAmi2jnnIHVF+GNy517wvOS72P7ZfuJTPwZaSNXfT01vWgPPE9R96/uAHDWHOg+T4WaDQQ== dependencies: "@types/node" "^10.12.18" got "9.6.0" @@ -8100,7 +7798,6 @@ web3-core-helpers@1.0.0-beta.36: web3-core-helpers@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz#04ec354b7f5c57234c309eea2bda9bf1f2fe68ba" - integrity sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew== dependencies: underscore "1.8.3" web3-eth-iban "1.0.0-beta.37" @@ -8109,7 +7806,6 @@ web3-core-helpers@1.0.0-beta.37: 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== dependencies: underscore "1.9.1" web3-eth-iban "1.2.1" @@ -8118,7 +7814,6 @@ web3-core-helpers@1.2.1: web3-core-helpers@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.4.tgz#ffd425861f4d66b3f38df032afdb39ea0971fc0f" - integrity sha512-U7wbsK8IbZvF3B7S+QMSNP0tni/6VipnJkB0tZVEpHEIV2WWeBHYmZDnULWcsS/x/jn9yKhJlXIxWGsEAMkjiw== dependencies: underscore "1.9.1" web3-eth-iban "1.2.4" @@ -8127,7 +7822,6 @@ web3-core-helpers@1.2.4: web3-core-helpers@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.6.tgz#7aacd25bf8015adcdfc0f3243d0dcfdff0373f7d" - integrity sha512-gYKWmC2HmO7RcDzpo4L1K8EIoy5L8iubNDuTC6q69UxczwqKF/Io0kbK/1Z10Av++NlzOSiuyGp2gc4t4UOsDw== dependencies: underscore "1.9.1" web3-eth-iban "1.2.6" @@ -8146,7 +7840,6 @@ web3-core-method@1.0.0-beta.36: web3-core-method@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz#53d148e63f818b23461b26307afdfbdaa9457744" - integrity sha512-pKWFUeqnVmzx3VrZg+CseSdrl/Yrk2ioid/HzolNXZE6zdoITZL0uRjnsbqXGEzgRRd1Oe/pFndpTlRsnxXloA== dependencies: underscore "1.8.3" web3-core-helpers "1.0.0-beta.37" @@ -8157,7 +7850,6 @@ web3-core-method@1.0.0-beta.37: 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== dependencies: underscore "1.9.1" web3-core-helpers "1.2.1" @@ -8168,7 +7860,6 @@ web3-core-method@1.2.1: web3-core-method@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.4.tgz#a0fbc50b8ff5fd214021435cc2c6d1e115807aed" - integrity sha512-8p9kpL7di2qOVPWgcM08kb+yKom0rxRCMv6m/K+H+yLSxev9TgMbCgMSbPWAHlyiF3SJHw7APFKahK5Z+8XT5A== dependencies: underscore "1.9.1" web3-core-helpers "1.2.4" @@ -8179,7 +7870,6 @@ web3-core-method@1.2.4: web3-core-method@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.6.tgz#f5a3e4d304abaf382923c8ab88ec8eeef45c1b3b" - integrity sha512-r2dzyPEonqkBg7Mugq5dknhV5PGaZTHBZlS/C+aMxNyQs3T3eaAsCTqlQDitwNUh/sUcYPEGF0Vo7ahYK4k91g== dependencies: underscore "1.9.1" web3-core-helpers "1.2.6" @@ -8197,7 +7887,6 @@ web3-core-promievent@1.0.0-beta.36: web3-core-promievent@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.0.0-beta.37.tgz#4e51c469d0a7ac0a969885a4dbcde8504abe5b02" - integrity sha512-GTF2r1lP8nJBeA5Gxq5yZpJy9l8Fb9CXGZPfF8jHvaRdQHtm2Z+NDhqYmF833lcdkokRSyfPcXlz1mlWeClFpg== dependencies: any-promise "1.3.0" eventemitter3 "1.1.1" @@ -8205,7 +7894,6 @@ web3-core-promievent@1.0.0-beta.37: 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" @@ -8213,7 +7901,6 @@ web3-core-promievent@1.2.1: 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" - integrity sha512-gEUlm27DewUsfUgC3T8AxkKi8Ecx+e+ZCaunB7X4Qk3i9F4C+5PSMGguolrShZ7Zb6717k79Y86f3A00O0VAZw== dependencies: any-promise "1.3.0" eventemitter3 "3.1.2" @@ -8221,7 +7908,6 @@ web3-core-promievent@1.2.4: web3-core-promievent@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.6.tgz#b1550a3a4163e48b8b704c1fe4b0084fc2dad8f5" - integrity sha512-km72kJef/qtQNiSjDJJVHIZvoVOm6ytW3FCYnOcCs7RIkviAb5JYlPiye0o4pJOLzCXYID7DK7Q9bhY8qWb1lw== dependencies: any-promise "1.3.0" eventemitter3 "3.1.2" @@ -8239,7 +7925,6 @@ web3-core-requestmanager@1.0.0-beta.36: web3-core-requestmanager@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.0.0-beta.37.tgz#721a75df5920621bff42d9d74f7a64413675d56b" - integrity sha512-66VUqye5BGp1Zz1r8psCxdNH+GtTjaFwroum2Osx+wbC5oRjAiXkkadiitf6wRb+edodjEMPn49u7B6WGNuewQ== dependencies: underscore "1.8.3" web3-core-helpers "1.0.0-beta.37" @@ -8250,7 +7935,6 @@ web3-core-requestmanager@1.0.0-beta.37: 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" @@ -8261,7 +7945,6 @@ web3-core-requestmanager@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" - integrity sha512-eZJDjyNTDtmSmzd3S488nR/SMJtNnn/GuwxnMh3AzYCqG3ZMfOylqTad2eYJPvc2PM5/Gj1wAMQcRpwOjjLuPg== dependencies: underscore "1.9.1" web3-core-helpers "1.2.4" @@ -8272,7 +7955,6 @@ web3-core-requestmanager@1.2.4: web3-core-requestmanager@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.6.tgz#5808c0edc0d6e2991a87b65508b3a1ab065b68ec" - integrity sha512-QU2cbsj9Dm0r6om40oSwk8Oqbp3wTa08tXuMpSmeOTkGZ3EMHJ1/4LiJ8shwg1AvPMrKVU0Nri6+uBNCdReZ+g== dependencies: underscore "1.9.1" web3-core-helpers "1.2.6" @@ -8291,7 +7973,6 @@ web3-core-subscriptions@1.0.0-beta.36: web3-core-subscriptions@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz#40de5e2490cc05b15faa8f935c97fd48d670cd9a" - integrity sha512-FdXl8so9kwkRRWziuCSpFsAuAdg9KvpXa1fQlT16uoGcYYfxwFO/nkwyBGQzkZt7emShI2IRugcazyPCZDwkOA== dependencies: eventemitter3 "1.1.1" underscore "1.8.3" @@ -8300,7 +7981,6 @@ web3-core-subscriptions@1.0.0-beta.37: 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== dependencies: eventemitter3 "3.1.2" underscore "1.9.1" @@ -8309,7 +7989,6 @@ web3-core-subscriptions@1.2.1: web3-core-subscriptions@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.4.tgz#0dc095b5cfd82baa527a39796e3515a846b21b99" - integrity sha512-3D607J2M8ymY9V+/WZq4MLlBulwCkwEjjC2U+cXqgVO1rCyVqbxZNCmHyNYHjDDCxSEbks9Ju5xqJxDSxnyXEw== dependencies: eventemitter3 "3.1.2" underscore "1.9.1" @@ -8318,7 +7997,6 @@ web3-core-subscriptions@1.2.4: web3-core-subscriptions@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.6.tgz#9d44189e2321f8f1abc31f6c09103b5283461b57" - integrity sha512-M0PzRrP2Ct13x3wPulFtc5kENH4UtnPxO9YxkfQlX2WRKENWjt4Rfq+BCVGYEk3rTutDfWrjfzjmqMRvXqEY5Q== dependencies: eventemitter3 "3.1.2" underscore "1.9.1" @@ -8336,7 +8014,6 @@ web3-core@1.0.0-beta.36: web3-core@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.0.0-beta.37.tgz#66c2c7000772c9db36d737ada31607ace09b7e90" - integrity sha512-cIwEqCj7OJyefQNauI0HOgW4sSaOQ98V99H2/HEIlnCZylsDzfw7gtQUdwnRFiIyIxjbWy3iWsjwDPoXNPZBYg== dependencies: web3-core-helpers "1.0.0-beta.37" web3-core-method "1.0.0-beta.37" @@ -8346,7 +8023,6 @@ web3-core@1.0.0-beta.37: 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== dependencies: web3-core-helpers "1.2.1" web3-core-method "1.2.1" @@ -8356,7 +8032,6 @@ web3-core@1.2.1: web3-core@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.4.tgz#2df13b978dcfc59c2abaa887d27f88f21ad9a9d6" - integrity sha512-CHc27sMuET2cs1IKrkz7xzmTdMfZpYswe7f0HcuyneTwS1yTlTnHyqjAaTy0ZygAb/x4iaVox+Gvr4oSAqSI+A== dependencies: "@types/bignumber.js" "^5.0.0" "@types/bn.js" "^4.11.4" @@ -8369,7 +8044,6 @@ web3-core@1.2.4: web3-core@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.6.tgz#bb42a1d7ae49a7258460f0d95ddb00906f59ef92" - integrity sha512-y/QNBFtr5cIR8vxebnotbjWJpOnO8LDYEAzZjeRRUJh2ijmhjoYk7dSNx9ExgC0UCfNFRoNCa9dGRu/GAxwRlw== dependencies: "@types/bn.js" "^4.11.4" "@types/node" "^12.6.1" @@ -8389,7 +8063,6 @@ web3-eth-abi@1.0.0-beta.36: web3-eth-abi@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz#55592fa9cd2427d9f0441d78f3b8d0c1359a2a24" - integrity sha512-g9DKZGM2OqwKp/tX3W/yihcj7mQCtJ6CXyZXEIZfuDyRBED/iSEIFfieDOd+yo16sokLMig6FG7ADhhu+19hdA== dependencies: ethers "4.0.0-beta.1" underscore "1.8.3" @@ -8398,7 +8071,6 @@ web3-eth-abi@1.0.0-beta.37: web3-eth-abi@1.0.0-beta.55: version "1.0.0-beta.55" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.55.tgz#69250420039346105a3d0f899c0a8a53be926f97" - integrity sha512-3h1xnm/vYmKUXTOYAOP0OsB5uijQV76pNNRGKOB6Dq6GR1pbcbD3WrB/4I643YA8l91t5FRzFzUiA3S77R2iqw== dependencies: "@babel/runtime" "^7.3.1" ethers "^4.0.27" @@ -8408,7 +8080,6 @@ web3-eth-abi@1.0.0-beta.55: 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" @@ -8417,7 +8088,6 @@ web3-eth-abi@1.2.1: web3-eth-abi@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.4.tgz#5b73e5ef70b03999227066d5d1310b168845e2b8" - integrity sha512-8eLIY4xZKoU3DSVu1pORluAw9Ru0/v4CGdw5so31nn+7fR8zgHMgwbFe0aOqWQ5VU42PzMMXeIJwt4AEi2buFg== dependencies: ethers "4.0.0-beta.3" underscore "1.9.1" @@ -8426,7 +8096,6 @@ web3-eth-abi@1.2.4: web3-eth-abi@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.6.tgz#b495383cc5c0d8e2857b26e7fe25606685983b25" - integrity sha512-w9GAyyikn8nSifSDZxAvU9fxtQSX+W2xQWMmrtTXmBGCaE4/ywKOSPAO78gq8AoU4Wq5yqVGKZLLbfpt7/sHlA== dependencies: ethers "4.0.0-beta.3" underscore "1.9.1" @@ -8450,7 +8119,6 @@ web3-eth-accounts@1.0.0-beta.36: web3-eth-accounts@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz#0a5a9f14a6c3bd285e001c15eb3bb38ffa4b5204" - integrity sha512-uvbHL62/zwo4GDmwKdqH9c/EgYd8QVnAfpVw8D3epSISpgbONNY7Hr4MRMSd/CqAP12l2Ls9JVQGLhhC83bW6g== dependencies: any-promise "1.3.0" crypto-browserify "3.12.0" @@ -8466,7 +8134,6 @@ web3-eth-accounts@1.0.0-beta.37: 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" @@ -8483,7 +8150,6 @@ web3-eth-accounts@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" - integrity sha512-04LzT/UtWmRFmi4hHRewP5Zz43fWhuHiK5XimP86sUQodk/ByOkXQ3RoXyGXFMNoRxdcAeRNxSfA2DpIBc9xUw== dependencies: "@web3-js/scrypt-shim" "^0.1.0" any-promise "1.3.0" @@ -8501,7 +8167,6 @@ web3-eth-accounts@1.2.4: web3-eth-accounts@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.6.tgz#a1ba4bf75fa8102a3ec6cddd0eccd72462262720" - integrity sha512-cDVtonHRgzqi/ZHOOf8kfCQWFEipcfQNAMzXIaKZwc0UUD9mgSI5oJrN45a89Ze+E6Lz9m77cDG5Ax9zscSkcw== dependencies: "@web3-js/scrypt-shim" "^0.1.0" any-promise "1.3.0" @@ -8532,7 +8197,6 @@ web3-eth-contract@1.0.0-beta.36: web3-eth-contract@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz#87f93c95ed16f320ba54943b7886890de6766013" - integrity sha512-h1B3A8Z/C7BlnTCHkrWbXZQTViDxfR12lKMeTkT8Sqj5phFmxrBlPE4ORy4lf1Dk5b23mZYE0r/IRACx4ThCrQ== dependencies: underscore "1.8.3" web3-core "1.0.0-beta.37" @@ -8546,7 +8210,6 @@ web3-eth-contract@1.0.0-beta.37: 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" @@ -8560,7 +8223,6 @@ web3-eth-contract@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" - integrity sha512-b/9zC0qjVetEYnzRA1oZ8gF1OSSUkwSYi5LGr4GeckLkzXP7osEnp9lkO/AQcE4GpG+l+STnKPnASXJGZPgBRQ== dependencies: "@types/bn.js" "^4.11.4" underscore "1.9.1" @@ -8575,7 +8237,6 @@ web3-eth-contract@1.2.4: web3-eth-contract@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.6.tgz#39111543960035ed94c597a239cf5aa1da796741" - integrity sha512-ak4xbHIhWgsbdPCkSN+HnQc1SH4c856y7Ly+S57J/DQVzhFZemK5HvWdpwadJrQTcHET3ZeId1vq3kmW7UYodw== dependencies: "@types/bn.js" "^4.11.4" underscore "1.9.1" @@ -8603,7 +8264,6 @@ web3-eth-ens@1.0.0-beta.36: web3-eth-ens@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.37.tgz#714ecb01eb447ee3eb39b2b20a10ae96edb1f01f" - integrity sha512-dR3UkrVzdRrJhfP57xBPx0CMiVnCcYFvh+u2XMkGydrhHgupSUkjqGr89xry/j1T0BkuN9mikpbyhdCVMXqMbg== dependencies: eth-ens-namehash "2.0.8" underscore "1.8.3" @@ -8617,7 +8277,6 @@ web3-eth-ens@1.0.0-beta.37: 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" @@ -8631,7 +8290,6 @@ web3-eth-ens@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" - integrity sha512-g8+JxnZlhdsCzCS38Zm6R/ngXhXzvc3h7bXlxgKU4coTzLLoMpgOAEz71GxyIJinWTFbLXk/WjNY0dazi9NwVw== dependencies: eth-ens-namehash "2.0.8" underscore "1.9.1" @@ -8645,7 +8303,6 @@ web3-eth-ens@1.2.4: web3-eth-ens@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.6.tgz#bf86a624c4c72bc59913c2345180d3ea947e110d" - integrity sha512-8UEqt6fqR/dji/jBGPFAyBs16OJjwi0t2dPWXPyGXmty/fH+osnXwWXE4HRUyj4xuafiM5P1YkXMsPhKEadjiw== dependencies: eth-ens-namehash "2.0.8" underscore "1.9.1" @@ -8666,7 +8323,6 @@ web3-eth-iban@1.0.0-beta.36: web3-eth-iban@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz#313a3f18ae2ab00ba98678ea1156b09ef32a3655" - integrity sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ== dependencies: bn.js "4.11.6" web3-utils "1.0.0-beta.37" @@ -8674,7 +8330,6 @@ web3-eth-iban@1.0.0-beta.37: 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== dependencies: bn.js "4.11.8" web3-utils "1.2.1" @@ -8682,7 +8337,6 @@ web3-eth-iban@1.2.1: web3-eth-iban@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.4.tgz#8e0550fd3fd8e47a39357d87fe27dee9483ee476" - integrity sha512-D9HIyctru/FLRpXakRwmwdjb5bWU2O6UE/3AXvRm6DCOf2e+7Ve11qQrPtaubHfpdW3KWjDKvlxV9iaFv/oTMQ== dependencies: bn.js "4.11.8" web3-utils "1.2.4" @@ -8690,7 +8344,6 @@ web3-eth-iban@1.2.4: web3-eth-iban@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.6.tgz#0b22191fd1aa6e27f7ef0820df75820bfb4ed46b" - integrity sha512-TPMc3BW9Iso7H+9w+ytbqHK9wgOmtocyCD3PaAe5Eie50KQ/j7ThA60dGJnxItVo6yyRv5pZAYxPVob9x/fJlg== dependencies: bn.js "4.11.8" web3-utils "1.2.6" @@ -8708,7 +8361,6 @@ web3-eth-personal@1.0.0-beta.36: web3-eth-personal@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz#187472f51861e2b6d45da43411801bc91a859f9a" - integrity sha512-B4dZpGbD+nGnn48i6nJBqrQ+HB7oDmd+Q3wGRKOsHSK5HRWO/KwYeA7wgwamMAElkut50lIsT9EJl4Apfk3G5Q== dependencies: web3-core "1.0.0-beta.37" web3-core-helpers "1.0.0-beta.37" @@ -8719,7 +8371,6 @@ web3-eth-personal@1.0.0-beta.37: 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" @@ -8730,7 +8381,6 @@ web3-eth-personal@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" - integrity sha512-5Russ7ZECwHaZXcN3DLuLS7390Vzgrzepl4D87SD6Sn1DHsCZtvfdPIYwoTmKNp69LG3mORl7U23Ga5YxqkICw== dependencies: "@types/node" "^12.6.1" web3-core "1.2.4" @@ -8742,7 +8392,6 @@ web3-eth-personal@1.2.4: web3-eth-personal@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.6.tgz#47a0a0657ec04dd77f95451a6869d4751d324b6b" - integrity sha512-T2NUkh1plY8d7wePXSoHnaiKOd8dLNFaQfgBl9JHU6S7IJrG9jnYD9bVxLEgRUfHs9gKf9tQpDf7AcPFdq/A8g== dependencies: "@types/node" "^12.6.1" web3-core "1.2.6" @@ -8772,7 +8421,6 @@ web3-eth@1.0.0-beta.36: web3-eth@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.0.0-beta.37.tgz#0e8ffcd857a5f85ae4b5f052ad831ca5c56f4f74" - integrity sha512-Eb3aGtkz3G9q+Z9DKgSQNbn/u8RtcZQQ0R4sW9hy5KK47GoT6vab5c6DiD3QWzI0BzitHzR5Ji+3VHf/hPUGgw== dependencies: underscore "1.8.3" web3-core "1.0.0-beta.37" @@ -8791,7 +8439,6 @@ web3-eth@1.0.0-beta.37: 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" @@ -8810,7 +8457,6 @@ web3-eth@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" - integrity sha512-+j+kbfmZsbc3+KJpvHM16j1xRFHe2jBAniMo1BHKc3lho6A8Sn9Buyut6odubguX2AxoRArCdIDCkT9hjUERpA== dependencies: underscore "1.9.1" web3-core "1.2.4" @@ -8829,7 +8475,6 @@ web3-eth@1.2.4: web3-eth@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.6.tgz#15a8c65fdde0727872848cae506758d302d8d046" - integrity sha512-ROWlDPzh4QX6tlGGGlAK6X4kA2n0/cNj/4kb0nNVWkRouGmYO0R8k6s47YxYHvGiXt0s0++FUUv5vAbWovtUQw== dependencies: underscore "1.9.1" web3-core "1.2.6" @@ -8856,7 +8501,6 @@ web3-net@1.0.0-beta.36: web3-net@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.0.0-beta.37.tgz#b494136043f3c6ba84fe4a47d4c028c2a63c9a8e" - integrity sha512-xG/uBtMdDa1UMXw9KjDUgf3fXA/fDEJUYUS0TDn+U9PMgngA+UVECHNNvQTrVVDxEky38V3sahwIDiopNsQdsw== dependencies: web3-core "1.0.0-beta.37" web3-core-method "1.0.0-beta.37" @@ -8865,7 +8509,6 @@ web3-net@1.0.0-beta.37: 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" @@ -8874,7 +8517,6 @@ web3-net@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" - integrity sha512-wKOsqhyXWPSYTGbp7ofVvni17yfRptpqoUdp3SC8RAhDmGkX6irsiT9pON79m6b3HUHfLoBilFQyt/fTUZOf7A== dependencies: web3-core "1.2.4" web3-core-method "1.2.4" @@ -8883,7 +8525,6 @@ web3-net@1.2.4: web3-net@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.6.tgz#035ca0fbe55282fda848ca17ebb4c8966147e5ea" - integrity sha512-hsNHAPddrhgjWLmbESW0KxJi2GnthPcow0Sqpnf4oB6+/+ZnQHU9OsIyHb83bnC1OmunrK2vf9Ye2mLPdFIu3A== dependencies: web3-core "1.2.6" web3-core-method "1.2.6" @@ -8899,7 +8540,6 @@ web3-providers-http@1.0.0-beta.36: web3-providers-http@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.0.0-beta.37.tgz#c06efd60e16e329e25bd268d2eefc68d82d13651" - integrity sha512-FM/1YDB1jtZuTo78habFj7S9tNHoqt0UipdyoQV29b8LkGKZV9Vs3is8L24hzuj1j/tbwkcAH+ewIseHwu0DTg== dependencies: web3-core-helpers "1.0.0-beta.37" xhr2-cookies "1.1.0" @@ -8907,7 +8547,6 @@ web3-providers-http@1.0.0-beta.37: 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" @@ -8915,7 +8554,6 @@ web3-providers-http@1.2.1: 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" - integrity sha512-dzVCkRrR/cqlIrcrWNiPt9gyt0AZTE0J+MfAu9rR6CyIgtnm1wFUVVGaxYRxuTGQRO4Dlo49gtoGwaGcyxqiTw== dependencies: web3-core-helpers "1.2.4" xhr2-cookies "1.1.0" @@ -8923,7 +8561,6 @@ web3-providers-http@1.2.4: web3-providers-http@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.6.tgz#3c7b1252751fb37e53b873fce9dbb6340f5e31d9" - integrity sha512-2+SaFCspb5f82QKuHB3nEPQOF9iSWxRf7c18fHtmnLNVkfG9SwLN1zh67bYn3tZGUdOI3gj8aX4Uhfpwx9Ezpw== dependencies: web3-core-helpers "1.2.6" xhr2-cookies "1.1.0" @@ -8939,7 +8576,6 @@ web3-providers-ipc@1.0.0-beta.36: web3-providers-ipc@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.0.0-beta.37.tgz#55d247e7197257ca0c3e4f4b0fe1561311b9d5b9" - integrity sha512-NdRPRxYMIU0C3u18NI8u4bwbhI9pCg5nRgDGYcmSAx5uOBxiYcQy+hb0WkJRRhBoyIXJmy+s26FoH8904+UnPg== dependencies: oboe "2.1.3" underscore "1.8.3" @@ -8948,7 +8584,6 @@ web3-providers-ipc@1.0.0-beta.37: 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" @@ -8957,7 +8592,6 @@ web3-providers-ipc@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" - integrity sha512-8J3Dguffin51gckTaNrO3oMBo7g+j0UNk6hXmdmQMMNEtrYqw4ctT6t06YOf9GgtOMjSAc1YEh3LPrvgIsR7og== dependencies: oboe "2.1.4" underscore "1.9.1" @@ -8966,7 +8600,6 @@ web3-providers-ipc@1.2.4: web3-providers-ipc@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.6.tgz#adabab5ac66b3ff8a26c7dc97af3f1a6a7609701" - integrity sha512-b0Es+/GTZyk5FG3SgUDW+2/mBwJAXWt5LuppODptiOas8bB2khLjG6+Gm1K4uwOb+1NJGPt5mZZ8Wi7vibtQ+A== dependencies: oboe "2.1.4" underscore "1.9.1" @@ -8983,7 +8616,6 @@ web3-providers-ws@1.0.0-beta.36: web3-providers-ws@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.0.0-beta.37.tgz#77c15aebc00b75d760d22d063ac2e415bdbef72f" - integrity sha512-8p6ZLv+1JYa5Vs8oBn33Nn3VGFBbF+wVfO+b78RJS1Qf1uIOzjFVDk3XwYDD7rlz9G5BKpxhaQw+6EGQ7L02aw== dependencies: underscore "1.8.3" web3-core-helpers "1.0.0-beta.37" @@ -8992,7 +8624,6 @@ web3-providers-ws@1.0.0-beta.37: 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" @@ -9001,7 +8632,6 @@ web3-providers-ws@1.2.1: 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" - integrity sha512-F/vQpDzeK+++oeeNROl1IVTufFCwCR2hpWe5yRXN0ApLwHqXrMI7UwQNdJ9iyibcWjJf/ECbauEEQ8CHgE+MYQ== dependencies: "@web3-js/websocket" "^1.0.29" underscore "1.9.1" @@ -9010,7 +8640,6 @@ web3-providers-ws@1.2.4: web3-providers-ws@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.6.tgz#3cecc49f7c99f07a75076d3c54247050bc4f7e11" - integrity sha512-20waSYX+gb5M5yKhug5FIwxBBvkKzlJH7sK6XEgdOx6BZ9YYamLmvg9wcRVtnSZO8hV/3cWenO/tRtTrHVvIgQ== dependencies: "@web3-js/websocket" "^1.0.29" underscore "1.9.1" @@ -9028,7 +8657,6 @@ web3-shh@1.0.0-beta.36: web3-shh@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.0.0-beta.37.tgz#3246ce5229601b525020828a56ee283307057105" - integrity sha512-h5STG/xqZNQWtCLYOu7NiMqwqPea8SfkKQUPUFxXKIPVCFVKpHuQEwW1qcPQRJMLhlQIv17xuoUe1A+RzDNbrw== dependencies: web3-core "1.0.0-beta.37" web3-core-method "1.0.0-beta.37" @@ -9038,7 +8666,6 @@ web3-shh@1.0.0-beta.37: 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== dependencies: web3-core "1.2.1" web3-core-method "1.2.1" @@ -9048,7 +8675,6 @@ web3-shh@1.2.1: web3-shh@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.4.tgz#5c8ff5ab624a3b14f08af0d24d2b16c10e9f70dd" - integrity sha512-z+9SCw0dE+69Z/Hv8809XDbLj7lTfEv9Sgu8eKEIdGntZf4v7ewj5rzN5bZZSz8aCvfK7Y6ovz1PBAu4QzS4IQ== dependencies: web3-core "1.2.4" web3-core-method "1.2.4" @@ -9058,7 +8684,6 @@ web3-shh@1.2.4: web3-shh@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.6.tgz#2492616da4cac32d4c7534b890f43bac63190c14" - integrity sha512-rouWyOOM6YMbLQd65grpj8BBezQfgNeRRX+cGyW4xsn6Xgu+B73Zvr6OtA/ftJwwa9bqHGpnLrrLMeWyy4YLUw== dependencies: web3-core "1.2.6" web3-core-method "1.2.6" @@ -9080,7 +8705,6 @@ web3-utils@1.0.0-beta.36: web3-utils@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.0.0-beta.37.tgz#ab868a90fe5e649337e38bdaf72133fcbf4d414d" - integrity sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ== dependencies: bn.js "4.11.6" eth-lib "0.1.27" @@ -9093,7 +8717,6 @@ web3-utils@1.0.0-beta.37: 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" @@ -9109,7 +8732,6 @@ web3-utils@1.0.0-beta.55: 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== dependencies: bn.js "4.11.8" eth-lib "0.2.7" @@ -9122,7 +8744,6 @@ web3-utils@1.2.1: web3-utils@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.4.tgz#96832a39a66b05bf8862a5b0bdad2799d709d951" - integrity sha512-+S86Ip+jqfIPQWvw2N/xBQq5JNqCO0dyvukGdJm8fEWHZbckT4WxSpHbx+9KLEWY4H4x9pUwnoRkK87pYyHfgQ== dependencies: bn.js "4.11.8" eth-lib "0.2.7" @@ -9136,7 +8757,6 @@ web3-utils@1.2.4: web3-utils@1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.6.tgz#b9a25432da00976457fcc1094c4af8ac6d486db9" - integrity sha512-8/HnqG/l7dGmKMgEL9JeKPTtjScxOePTzopv5aaKFExPfaBrYRkgoMqhoowCiAl/s16QaTn4DoIF1QC4YsT7Mg== dependencies: bn.js "4.11.8" eth-lib "0.2.7" @@ -9150,7 +8770,6 @@ web3-utils@1.2.6: web3@*: version "1.2.4" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.4.tgz#6e7ab799eefc9b4648c2dab63003f704a1d5e7d9" - integrity sha512-xPXGe+w0x0t88Wj+s/dmAdASr3O9wmA9mpZRtixGZxmBexAF0MjfqYM+MS4tVl5s11hMTN3AZb8cDD4VLfC57A== dependencies: "@types/node" "^12.6.1" web3-bzz "1.2.4" @@ -9176,7 +8795,6 @@ web3@1.0.0-beta.36: web3@1.0.0-beta.37: version "1.0.0-beta.37" resolved "https://registry.yarnpkg.com/web3/-/web3-1.0.0-beta.37.tgz#b42c30e67195f816cd19d048fda872f70eca7083" - integrity sha512-8XLgUspdzicC/xHG82TLrcF/Fxzj2XYNJ1KTYnepOI77bj5rvpsxxwHYBWQ6/JOjk0HkZqoBfnXWgcIHCDhZhQ== dependencies: web3-bzz "1.0.0-beta.37" web3-core "1.0.0-beta.37" @@ -9189,7 +8807,6 @@ web3@1.0.0-beta.37: 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" @@ -9212,7 +8829,6 @@ web3@^0.18.4: web3@^1.0.0-beta.34: version "1.2.6" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.6.tgz#c497dcb14cdd8d6d9fb6b445b3b68ff83f8ccf68" - integrity sha512-tpu9fLIComgxGrFsD8LUtA4s4aCZk7px8UfcdEy6kS2uDi/ZfR07KJqpXZMij7Jvlq+cQrTAhsPSiBVvoMaivA== dependencies: "@types/node" "^12.6.1" web3-bzz "1.2.6" @@ -9265,7 +8881,6 @@ wide-align@^1.1.0: 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" @@ -9276,7 +8891,6 @@ wordwrap@^1.0.0, wordwrap@~1.0.0: wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= wrap-ansi@^2.0.0: version "2.1.0" @@ -9288,7 +8902,6 @@ wrap-ansi@^2.0.0: wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== dependencies: ansi-styles "^3.2.0" string-width "^3.0.0" @@ -9297,12 +8910,10 @@ wrap-ansi@^5.1.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^2.0.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" @@ -9325,7 +8936,6 @@ ws@^3.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" @@ -9375,7 +8985,6 @@ xtend@^4.0.0: xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^3.2.1: version "3.2.1" @@ -9384,7 +8993,6 @@ y18n@^3.2.1: y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yaeti@^0.0.6: version "0.0.6" @@ -9401,12 +9009,10 @@ yallist@^3.0.0, yallist@^3.0.2: yallist@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yargs-parser@^13.1.0: version "13.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -9432,7 +9038,6 @@ yargs-parser@^9.0.2: 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" @@ -9516,7 +9121,6 @@ yn@^3.0.0: zos-lib@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/zos-lib/-/zos-lib-2.4.2.tgz#69a76b8df91cfdd9c8f99aa0ccc9699420182cd4" - integrity sha512-q2lgsJ3eEUNKUBwfB7cYzjaioyy5b/PDcIWMoCkPViR0G/ku50iO5mc8P/KJJOwU7EZFGfn/2JQVOeRbQzz/WQ== dependencies: "@types/cbor" "^2.0.0" "@types/web3" "^1.0.14"