From abb7a57deea783ab17f4c8295ececdf4a239bfc2 Mon Sep 17 00:00:00 2001 From: Denis Fadeev Date: Fri, 22 Sep 2023 10:43:47 +0400 Subject: [PATCH] feat(staking): add BTC support (#60) --- omnichain/staking/contracts/Staking.sol | 144 +++++-- omnichain/staking/hardhat.config.ts | 7 +- omnichain/staking/lib/convertToHexAddress.ts | 13 + omnichain/staking/package.json | 4 +- omnichain/staking/tasks/address.ts | 18 + omnichain/staking/tasks/beneficiary.ts | 33 ++ omnichain/staking/tasks/claim.ts | 5 +- omnichain/staking/tasks/deploy.ts | 29 +- omnichain/staking/tasks/rewards.ts | 16 - .../staking/tasks/{interact.ts => stake.ts} | 10 +- omnichain/staking/tasks/unstake.ts | 27 +- omnichain/staking/tasks/withdraw.ts | 27 ++ omnichain/staking/yarn.lock | 380 ++++++++++-------- 13 files changed, 442 insertions(+), 271 deletions(-) create mode 100644 omnichain/staking/lib/convertToHexAddress.ts create mode 100644 omnichain/staking/tasks/address.ts create mode 100644 omnichain/staking/tasks/beneficiary.ts delete mode 100644 omnichain/staking/tasks/rewards.ts rename omnichain/staking/tasks/{interact.ts => stake.ts} (73%) create mode 100644 omnichain/staking/tasks/withdraw.ts diff --git a/omnichain/staking/contracts/Staking.sol b/omnichain/staking/contracts/Staking.sol index 02804806..c68427bb 100644 --- a/omnichain/staking/contracts/Staking.sol +++ b/omnichain/staking/contracts/Staking.sol @@ -8,17 +8,25 @@ import "@zetachain/toolkit/contracts/BytesHelperLib.sol"; contract Staking is ERC20, zContract { error SenderNotSystemContract(); - error WrongChain(); - error NotAuthorizedToClaim(); + error WrongChain(uint256 chainID); + error UnknownAction(uint8 action); + error Overflow(); + error Underflow(); + error WrongAmount(); + error NotAuthorized(); + error NoRewardsToClaim(); SystemContract public immutable systemContract; uint256 public immutable chainID; + uint256 constant BITCOIN = 18332; - mapping(address => uint256) public stakes; - mapping(address => address) public beneficiaries; - mapping(address => uint256) public lastStakeTime; uint256 public rewardRate = 1; + mapping(address => uint256) public stake; + mapping(address => bytes) public withdraw; + mapping(address => address) public beneficiary; + mapping(address => uint256) public lastStakeTime; + constructor( string memory name_, string memory symbol_, @@ -29,74 +37,126 @@ contract Staking is ERC20, zContract { chainID = chainID_; } + modifier onlySystem() { + require( + msg.sender == address(systemContract), + "Only system contract can call this function" + ); + _; + } + + function bytesToBech32Bytes( + bytes calldata data, + uint256 offset + ) internal pure returns (bytes memory) { + bytes memory bech32Bytes = new bytes(42); + for (uint i = 0; i < 42; i++) { + bech32Bytes[i] = data[i + offset]; + } + + return bech32Bytes; + } + function onCrossChainCall( zContext calldata context, address zrc20, uint256 amount, bytes calldata message - ) external override { - if (msg.sender != address(systemContract)) { - revert SenderNotSystemContract(); + ) external override onlySystem { + if (chainID != context.chainID) { + revert WrongChain(context.chainID); } - address acceptedZRC20 = systemContract.gasCoinZRC20ByChainId(chainID); - if (zrc20 != acceptedZRC20) revert WrongChain(); - address staker = BytesHelperLib.bytesToAddress(context.origin, 0); - address beneficiary = abi.decode(message, (address)); - stakeZRC(staker, beneficiary, amount); + uint8 action = chainID == BITCOIN + ? uint8(message[0]) + : abi.decode(message, (uint8)); + + if (action == 1) { + stakeZRC(staker, amount); + } else if (action == 2) { + unstakeZRC(staker); + } else if (action == 3) { + setBeneficiary(staker, message); + } else if (action == 4) { + setWithdraw(staker, message, context.origin); + } else { + revert UnknownAction(action); + } } - function stakeZRC( - address staker, - address beneficiary, - uint256 amount - ) internal { - stakes[staker] += amount; - if (beneficiaries[staker] == address(0)) { - beneficiaries[staker] = beneficiary; - } - lastStakeTime[staker] = block.timestamp; + function stakeZRC(address staker, uint256 amount) internal { + stake[staker] += amount; + if (stake[staker] < amount) revert Overflow(); + lastStakeTime[staker] = block.timestamp; updateRewards(staker); } function updateRewards(address staker) internal { - uint256 timeDifference = block.timestamp - lastStakeTime[staker]; - uint256 rewardAmount = timeDifference * stakes[staker] * rewardRate; + uint256 rewardAmount = queryRewards(staker); - _mint(beneficiaries[staker], rewardAmount); + _mint(beneficiary[staker], rewardAmount); lastStakeTime[staker] = block.timestamp; } - function claimRewards(address staker) external { - if (beneficiaries[staker] != msg.sender) { - revert NotAuthorizedToClaim(); - } + function unstakeZRC(address staker) internal { + uint256 amount = stake[staker]; updateRewards(staker); - } - function unstakeZRC(uint256 amount) external { - updateRewards(msg.sender); + address zrc20 = systemContract.gasCoinZRC20ByChainId(chainID); + (, uint256 gasFee) = IZRC20(zrc20).withdrawGasFee(); - require(stakes[msg.sender] >= amount, "Insufficient staked balance"); + if (amount < gasFee) revert WrongAmount(); - address zrc20 = systemContract.gasCoinZRC20ByChainId(chainID); + bytes memory recipient = withdraw[staker]; - (address gasZRC20, uint256 gasFee) = IZRC20(zrc20).withdrawGasFee(); + stake[staker] = 0; IZRC20(zrc20).approve(zrc20, gasFee); - IZRC20(zrc20).withdraw(abi.encodePacked(msg.sender), amount - gasFee); + IZRC20(zrc20).withdraw(recipient, amount - gasFee); + + if (stake[staker] > amount) revert Underflow(); + + lastStakeTime[staker] = block.timestamp; + } + + function setBeneficiary(address staker, bytes calldata message) internal { + address beneficiaryAddress; + if (chainID == BITCOIN) { + beneficiaryAddress = BytesHelperLib.bytesToAddress(message, 1); + } else { + (, beneficiaryAddress) = abi.decode(message, (uint8, address)); + } + beneficiary[staker] = beneficiaryAddress; + } - stakes[msg.sender] -= amount; - lastStakeTime[msg.sender] = block.timestamp; + function setWithdraw( + address staker, + bytes calldata message, + bytes memory origin + ) internal { + bytes memory withdrawAddress; + if (chainID == BITCOIN) { + withdrawAddress = bytesToBech32Bytes(message, 1); + } else { + withdrawAddress = origin; + } + withdraw[staker] = withdrawAddress; } - function queryRewards(address account) public view returns (uint256) { - uint256 timeDifference = block.timestamp - lastStakeTime[account]; - uint256 rewardAmount = timeDifference * stakes[account] * rewardRate; + function queryRewards(address staker) public view returns (uint256) { + uint256 timeDifference = block.timestamp - lastStakeTime[staker]; + uint256 rewardAmount = timeDifference * stake[staker] * rewardRate; return rewardAmount; } + + function claimRewards(address staker) external { + if (beneficiary[staker] != msg.sender) revert NotAuthorized(); + uint256 rewardAmount = queryRewards(staker); + if (rewardAmount <= 0) revert NoRewardsToClaim(); + updateRewards(staker); + } } diff --git a/omnichain/staking/hardhat.config.ts b/omnichain/staking/hardhat.config.ts index 53d824c5..a60f3695 100644 --- a/omnichain/staking/hardhat.config.ts +++ b/omnichain/staking/hardhat.config.ts @@ -1,8 +1,11 @@ -import "./tasks/interact"; +import "./tasks/stake"; import "./tasks/deploy"; -import "./tasks/rewards"; import "./tasks/claim"; import "./tasks/unstake"; +import "./tasks/beneficiary"; +import "./tasks/withdraw"; +import "./tasks/unstake"; +import "./tasks/address"; import "@nomicfoundation/hardhat-toolbox"; import "@zetachain/toolkit/tasks"; diff --git a/omnichain/staking/lib/convertToHexAddress.ts b/omnichain/staking/lib/convertToHexAddress.ts new file mode 100644 index 00000000..f4f48bbe --- /dev/null +++ b/omnichain/staking/lib/convertToHexAddress.ts @@ -0,0 +1,13 @@ +import { ethers } from "ethers"; + +export const convertToHexAddress = (address: string): string => { + let addr: string; + try { + // Check if it's a valid hex address + addr = ethers.utils.getAddress(address); + } catch (e) { + // If not, try to convert it to an address from bech32 + addr = ("0x" + Buffer.from(address).toString("hex")).slice(0, 42); + } + return addr; +}; diff --git a/omnichain/staking/package.json b/omnichain/staking/package.json index 8675781a..491ebba7 100644 --- a/omnichain/staking/package.json +++ b/omnichain/staking/package.json @@ -26,7 +26,7 @@ "@types/node": ">=12.0.0", "@typescript-eslint/eslint-plugin": "^5.59.9", "@typescript-eslint/parser": "^5.59.9", - "@zetachain/toolkit": "^2.1.2", + "@zetachain/toolkit": "^2.2.2", "axios": "^1.3.6", "chai": "^4.2.0", "dotenv": "^16.0.3", @@ -48,4 +48,4 @@ "typechain": "^8.1.0", "typescript": ">=4.5.0" } -} +} \ No newline at end of file diff --git a/omnichain/staking/tasks/address.ts b/omnichain/staking/tasks/address.ts new file mode 100644 index 00000000..eae32c8c --- /dev/null +++ b/omnichain/staking/tasks/address.ts @@ -0,0 +1,18 @@ +import { task } from "hardhat/config"; +import { HardhatRuntimeEnvironment } from "hardhat/types"; +import { utils } from "ethers"; + +const main = async (args: any, hre: HardhatRuntimeEnvironment) => { + const dataTypes = ["bytes"]; + const values = [utils.toUtf8Bytes(args.address)]; + + const encodedData = utils.solidityPack(dataTypes, values); + console.log(`Encoded: ${encodedData}`); + console.log(`context.origin: ${encodedData.slice(0, 42)}`); +}; + +task( + "address", + "Encode a Bitcoin bech32 address to hex", + main +).addPositionalParam("address"); diff --git a/omnichain/staking/tasks/beneficiary.ts b/omnichain/staking/tasks/beneficiary.ts new file mode 100644 index 00000000..468448ed --- /dev/null +++ b/omnichain/staking/tasks/beneficiary.ts @@ -0,0 +1,33 @@ +import { task } from "hardhat/config"; +import { HardhatRuntimeEnvironment } from "hardhat/types"; +import { parseEther } from "@ethersproject/units"; +import { getAddress } from "@zetachain/protocol-contracts"; +import { prepareData, trackCCTX } from "@zetachain/toolkit/helpers"; + +const main = async (args: any, hre: HardhatRuntimeEnvironment) => { + const [signer] = await hre.ethers.getSigners(); + console.log(`🔑 Using account: ${signer.address}\n`); + + const data = prepareData( + args.contract, + ["uint8", "address"], + ["3", args.beneficiary] + ); + const to = getAddress("tss", hre.network.name); + const value = parseEther("0"); + + const tx = await signer.sendTransaction({ data, to, value }); + console.log(` +🚀 Successfully broadcasted a token transfer transaction on ${hre.network.name} network. +📝 Transaction hash: ${tx.hash} +`); + await trackCCTX(tx.hash); +}; + +task( + "set-beneficiary", + "Set the address on ZetaChain which will be allowed to claim staking rewards", + main +) + .addParam("contract", "The address of the contract on ZetaChain") + .addPositionalParam("beneficiary", "The address of the beneficiary"); diff --git a/omnichain/staking/tasks/claim.ts b/omnichain/staking/tasks/claim.ts index cb953968..499c7bcb 100644 --- a/omnichain/staking/tasks/claim.ts +++ b/omnichain/staking/tasks/claim.ts @@ -1,14 +1,17 @@ import { task } from "hardhat/config"; import { HardhatRuntimeEnvironment } from "hardhat/types"; +import { convertToHexAddress } from "../lib/convertToHexAddress"; const main = async (args: any, hre: HardhatRuntimeEnvironment) => { const [signer] = await hre.ethers.getSigners(); console.log(`🔑 Using account: ${signer.address}\n`); + const staker = convertToHexAddress(args.staker); + const factory = await hre.ethers.getContractFactory("Staking"); const contract = factory.attach(args.contract); - const tx = await contract.claimRewards(args.staker); + const tx = await contract.claimRewards(staker); const receipt = await tx.wait(); diff --git a/omnichain/staking/tasks/deploy.ts b/omnichain/staking/tasks/deploy.ts index ca121804..a2afbcd9 100644 --- a/omnichain/staking/tasks/deploy.ts +++ b/omnichain/staking/tasks/deploy.ts @@ -22,20 +22,20 @@ const main = async (args: any, hre: HardhatRuntimeEnvironment) => { const factory = await hre.ethers.getContractFactory("Staking"); - const chainID = hre.config.networks[args.chain]?.chainId; - if (chainID === undefined) { - throw new Error(`🚨 Chain ${args.chain} not found in hardhat config.`); + let symbol, chainID; + if (args.chain === "btc_testnet") { + symbol = "BTC"; + chainID = 18332; + } else { + const zrc20 = getAddress("zrc20", args.chain); + const contract = new hre.ethers.Contract(zrc20, ZRC20.abi, signer); + symbol = await contract.symbol(); + chainID = hre.config.networks[args.chain]?.chainId; + if (chainID === undefined) { + throw new Error(`🚨 Chain ${args.chain} not found in hardhat config.`); + } } - const ZRC20Address = getAddress("zrc20", args.chain); - const ZRC20Contract = new hre.ethers.Contract( - ZRC20Address, - ZRC20.abi, - signer - ); - - const symbol = await ZRC20Contract.symbol(); - const contract = await factory.deploy( `Staking rewards for ${symbol}`, `R${symbol.toUpperCase()}`, @@ -50,4 +50,7 @@ const main = async (args: any, hre: HardhatRuntimeEnvironment) => { `); }; -task("deploy", "Deploy the contract", main).addParam("chain", "Chain name"); +task("deploy", "Deploy the contract", main).addParam( + "chain", + "Chain ID (use btc_testnet for Bitcoin Testnet)" +); diff --git a/omnichain/staking/tasks/rewards.ts b/omnichain/staking/tasks/rewards.ts deleted file mode 100644 index 8feb2809..00000000 --- a/omnichain/staking/tasks/rewards.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { task } from "hardhat/config"; -import { HardhatRuntimeEnvironment } from "hardhat/types"; - -const main = async (args: any, hre: HardhatRuntimeEnvironment) => { - const [signer] = await hre.ethers.getSigners(); - console.log(`🔑 Using account: ${signer.address}\n`); - - const factory = await hre.ethers.getContractFactory("Staking"); - const contract = factory.attach(args.contract); - - console.log(await contract.queryRewards(args.staker)); -}; - -task("rewards", "Query staking rewards", main) - .addParam("contract", "The address of the contract on ZetaChain") - .addParam("staker", "Staker address"); diff --git a/omnichain/staking/tasks/interact.ts b/omnichain/staking/tasks/stake.ts similarity index 73% rename from omnichain/staking/tasks/interact.ts rename to omnichain/staking/tasks/stake.ts index d714d065..4f58c4ed 100644 --- a/omnichain/staking/tasks/interact.ts +++ b/omnichain/staking/tasks/stake.ts @@ -8,12 +8,11 @@ const main = async (args: any, hre: HardhatRuntimeEnvironment) => { const [signer] = await hre.ethers.getSigners(); console.log(`🔑 Using account: ${signer.address}\n`); - const data = prepareData(args.contract, ["address"], [args.beneficiary]); + const data = prepareData(args.contract, ["uint8"], ["1"]); const to = getAddress("tss", hre.network.name); const value = parseEther(args.amount); const tx = await signer.sendTransaction({ data, to, value }); - console.log(` 🚀 Successfully broadcasted a token transfer transaction on ${hre.network.name} network. 📝 Transaction hash: ${tx.hash} @@ -21,7 +20,6 @@ const main = async (args: any, hre: HardhatRuntimeEnvironment) => { await trackCCTX(tx.hash); }; -task("interact", "Interact with the contract", main) - .addParam("contract", "The address of the withdraw contract on ZetaChain") - .addParam("amount", "Amount of tokens to send") - .addParam("beneficiary"); +task("stake", "Deposit tokens to ZetaChain and stake them", main) + .addParam("contract", "The address of the contract on ZetaChain") + .addParam("amount", "Amount of tokens to send"); diff --git a/omnichain/staking/tasks/unstake.ts b/omnichain/staking/tasks/unstake.ts index ad66372c..5ebc2d47 100644 --- a/omnichain/staking/tasks/unstake.ts +++ b/omnichain/staking/tasks/unstake.ts @@ -1,23 +1,26 @@ import { task } from "hardhat/config"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { parseEther } from "@ethersproject/units"; +import { getAddress } from "@zetachain/protocol-contracts"; +import { prepareData, trackCCTX } from "@zetachain/toolkit/helpers"; const main = async (args: any, hre: HardhatRuntimeEnvironment) => { const [signer] = await hre.ethers.getSigners(); console.log(`🔑 Using account: ${signer.address}\n`); - const factory = await hre.ethers.getContractFactory("Staking"); - const contract = factory.attach(args.contract); + const data = prepareData(args.contract, ["uint8"], ["2"]); + const to = getAddress("tss", hre.network.name); + const value = parseEther("0"); - const amount = parseEther(args.amount); - - const tx = await contract.unstakeZRC(amount); - - const receipt = await tx.wait(); - - console.log(receipt); + const tx = await signer.sendTransaction({ data, to, value }); + console.log(` +🚀 Successfully broadcasted a token transfer transaction on ${hre.network.name} network. +📝 Transaction hash: ${tx.hash} +`); + await trackCCTX(tx.hash); }; -task("unstake", "Unstake tokens", main) - .addParam("contract", "The address of the contract on ZetaChain") - .addParam("amount", "Amount of tokens to unstake"); +task("unstake", "Unstake tokens", main).addParam( + "contract", + "The address of the contract on ZetaChain" +); diff --git a/omnichain/staking/tasks/withdraw.ts b/omnichain/staking/tasks/withdraw.ts new file mode 100644 index 00000000..c7ef8d90 --- /dev/null +++ b/omnichain/staking/tasks/withdraw.ts @@ -0,0 +1,27 @@ +import { task } from "hardhat/config"; +import { HardhatRuntimeEnvironment } from "hardhat/types"; +import { parseEther } from "@ethersproject/units"; +import { getAddress } from "@zetachain/protocol-contracts"; +import { prepareData, trackCCTX } from "@zetachain/toolkit/helpers"; + +const main = async (args: any, hre: HardhatRuntimeEnvironment) => { + const [signer] = await hre.ethers.getSigners(); + console.log(`🔑 Using account: ${signer.address}\n`); + + const data = prepareData(args.contract, ["uint8"], ["4"]); + const to = getAddress("tss", hre.network.name); + const value = parseEther("0"); + + const tx = await signer.sendTransaction({ data, to, value }); + console.log(` +🚀 Successfully broadcasted a token transfer transaction on ${hre.network.name} network. +📝 Transaction hash: ${tx.hash} +`); + await trackCCTX(tx.hash); +}; + +task( + "set-withdraw", + "Set the address on a connected chain to which unstaked tokens will be withdrawn", + main +).addParam("contract", "The address of the contract on ZetaChain"); diff --git a/omnichain/staking/yarn.lock b/omnichain/staking/yarn.lock index dbb2da56..ec446f1e 100644 --- a/omnichain/staking/yarn.lock +++ b/omnichain/staking/yarn.lock @@ -58,9 +58,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.0.tgz#11195513186f68d42fbf449f9a7136b2c0c92005" - integrity sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg== + version "4.8.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz#8c4bb756cc2aa7eaf13cfa5e69c83afb3260c20c" + integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ== "@eslint/eslintrc@^2.1.2": version "2.1.2" @@ -77,10 +77,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.48.0": - version "8.48.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.48.0.tgz#642633964e217905436033a2bd08bf322849b7fb" - integrity sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw== +"@eslint/js@8.49.0": + version "8.49.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.49.0.tgz#86f79756004a97fa4df866835093f1df3d03c333" + integrity sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w== "@ethereumjs/rlp@^4.0.1": version "4.0.1" @@ -777,7 +777,7 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" -"@humanwhocodes/config-array@^0.11.10": +"@humanwhocodes/config-array@^0.11.11": version "0.11.11" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.11.tgz#88a04c570dbbc7dd943e4712429c3df09bc32844" integrity sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA== @@ -797,23 +797,23 @@ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@inquirer/checkbox@^1.3.4": - version "1.3.9" - resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-1.3.9.tgz#7bce7835ba9a407e79a71841bfdbdf2db5b9a8ef" - integrity sha512-PQJ0XEijmoXxp7QBnUIiYvqx9YC4c/MyJY5UIDXzsyrSY56xuWyi95ggaKq4KMbcjXfxmXSwuqEYbzWu3hAFuQ== + version "1.3.11" + resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-1.3.11.tgz#3926d8def3142e54bcc621f7f61eace439bf2966" + integrity sha512-SaQBDr7niZQzoP5Mqzak5pQY7476mvf4Sj2V8VFrbFHWHsavy3nKGKEOgijNHy151bEgqDog1829g/pKa9Qcrw== dependencies: - "@inquirer/core" "^4.0.0" - "@inquirer/type" "^1.1.2" + "@inquirer/core" "^5.0.0" + "@inquirer/type" "^1.1.4" ansi-escapes "^4.3.2" chalk "^4.1.2" figures "^3.2.0" "@inquirer/confirm@^2.0.5": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-2.0.10.tgz#223b5d99e0476298a053e1f85cee83bf6d2444c2" - integrity sha512-P2B3LgCn26EfK9LeSGbi6WWNg/Q7ZTZYERZ2YRJtNaQC4dEXDWt5xDkgKEHXopBeaBXrlBpHQ7Lb3IdhvWnCfQ== + version "2.0.12" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-2.0.12.tgz#d9fe9d5ce82907f956bd1c7d297ef11fc7a94c3f" + integrity sha512-Oxz3L0ti+0nWYHPPUIrPkxA2KnQZUGBHnk56yF5RjKqPGFrwvgLZdIXNe/w4I/OtdLeOBqHCrJ+kCvNvHVdk9g== dependencies: - "@inquirer/core" "^4.0.0" - "@inquirer/type" "^1.1.2" + "@inquirer/core" "^5.0.0" + "@inquirer/type" "^1.1.4" chalk "^4.1.2" "@inquirer/core@^1.1.3": @@ -853,14 +853,14 @@ strip-ansi "^6.0.1" wrap-ansi "^6.0.1" -"@inquirer/core@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-4.0.0.tgz#d82fa2f5f180106878da239e933767d1feeadcf5" - integrity sha512-YBo2o6ijIatBU1l1ziByZeVF4YdzKQnYs8tBJ8SnysgmK3YYQz/L/w5w7QXs4OVnbzTWhXiC4mn9gQGbDihsPQ== +"@inquirer/core@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-5.0.0.tgz#0b4b4eb9c076aca7b2cf7d040fbae0eaf98321b5" + integrity sha512-q2o4BcANKFyuUI5V6ejmPs1f9SdbJxfnLmhQVb72Fj7hOudoKsJpByJZ0imv9a/rpKDogA+93vtBBMqsnS7/Fg== dependencies: - "@inquirer/type" "^1.1.2" + "@inquirer/type" "^1.1.4" "@types/mute-stream" "^0.0.1" - "@types/node" "^20.5.6" + "@types/node" "^20.6.0" "@types/wrap-ansi" "^3.0.0" ansi-escapes "^4.3.2" chalk "^4.1.2" @@ -869,45 +869,46 @@ figures "^3.2.0" mute-stream "^1.0.0" run-async "^3.0.0" + signal-exit "^4.1.0" strip-ansi "^6.0.1" wrap-ansi "^6.2.0" "@inquirer/editor@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-1.2.8.tgz#2721b4da06221727f2bace2fb62a423b6d85f11f" - integrity sha512-DzvzhtLmkVEzfphCbEQz63IuTwmgpeSyyaKrHwCsKYr/eUaMLksQz33VrHbwYbsBq4oNm14OkikrVIMC/XhhPw== + version "1.2.10" + resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-1.2.10.tgz#7792e241b4f2b0dbc373b8983a89fb2c8f4df7a5" + integrity sha512-aluYpazbxIdM54L+xNmVHzOjoXGwkliTCvHxhtPg6itmqDGMVmU1z+T2akHt6Xnx9RyrTpbumFB4xn1iI0UfnA== dependencies: - "@inquirer/core" "^4.0.0" - "@inquirer/type" "^1.1.2" + "@inquirer/core" "^5.0.0" + "@inquirer/type" "^1.1.4" chalk "^4.1.2" external-editor "^3.1.0" "@inquirer/expand@^1.1.4": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-1.1.9.tgz#0ffc1d157a981b58603ae447f561d07ffd7a9c2a" - integrity sha512-8XuyeEVAEDCuDfK4+LVsOKfIOaC/Hen5nq+yMgyoQi4DgG77uLFtzjFBgOC0+HTEOugznF66DoWskUOmIN4x5Q== + version "1.1.11" + resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-1.1.11.tgz#7ae46bb3f7e4d8611af341485e28efed871bcd90" + integrity sha512-GSZJbYKPBniyXgWeFLsqiv7TSK9QjpQqCr+i/85Yts3wwixXTrAeoqM3TVVgHO/3j+xeFcuhOm1wy/F2QY5aEg== dependencies: - "@inquirer/core" "^4.0.0" - "@inquirer/type" "^1.1.2" + "@inquirer/core" "^5.0.0" + "@inquirer/type" "^1.1.4" chalk "^4.1.2" figures "^3.2.0" -"@inquirer/input@^1.2.4", "@inquirer/input@^1.2.9": - version "1.2.9" - resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-1.2.9.tgz#66b27200df97a808e082aad26f1ee0c05e9e78f7" - integrity sha512-FC/wnXklGwUcGtlOU67T3pKHu6l1L5tIOHbZcqoLTlsdG8ukNARrX8h9Xrdgfr29t/LbvSxqdvYRmn4u2XRz0Q== +"@inquirer/input@^1.2.11", "@inquirer/input@^1.2.4": + version "1.2.11" + resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-1.2.11.tgz#7d2f1f58f69eb7dc33078b35c5ec463344b32a21" + integrity sha512-sV1nO6+RxMFTHAznmxMkbMkjGQ8NGMWr0mvXjU35YQ0OFEL+YlD+DPbNd9s3ltnswODZAcnM1yFvdko3S/Kj/w== dependencies: - "@inquirer/core" "^4.0.0" - "@inquirer/type" "^1.1.2" + "@inquirer/core" "^5.0.0" + "@inquirer/type" "^1.1.4" chalk "^4.1.2" "@inquirer/password@^1.1.4": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-1.1.9.tgz#ee691445d6c8f7f3529fc1195b0629ed7b3bf808" - integrity sha512-6L/SimCHutKVPDjkJBAkGO0POdJA3VXbdgAhCsX9katuyQSiMq5WGGa2Nqv7zXqiZxL5YuTPFqNNKKq00Q1HxA== + version "1.1.11" + resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-1.1.11.tgz#086ab3c9018a34b644922bffb5f84928afa1d41c" + integrity sha512-r2eiLMlTuY+k+yJf6XLbnAEz7EDyWdjOrgVAWjSKoEDBc3T9/rq2I+7WiY9FUFArYY/1LxmsNWavs5NuMICx8Q== dependencies: - "@inquirer/input" "^1.2.9" - "@inquirer/type" "^1.1.2" + "@inquirer/input" "^1.2.11" + "@inquirer/type" "^1.1.4" ansi-escapes "^4.3.2" chalk "^4.1.2" @@ -927,12 +928,12 @@ "@inquirer/select" "^1.2.4" "@inquirer/rawlist@^1.2.4": - version "1.2.9" - resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-1.2.9.tgz#e1167365a104940a3741c44058f17fe592f30922" - integrity sha512-HqZeTP/F0l9LE0uCSbPHUbxVjoh8TLPzy8+BJzXyS9Na+XbbMOGN7KVNkNEGY+GH7X05jdOtd4gsO9DtAJUM2Q== + version "1.2.11" + resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-1.2.11.tgz#3a75a7ab231f61be7af7d48872e995d5c65d2dba" + integrity sha512-4S2t2pCCR3VgyB3lbPKoiJ9020HHAi9g4M+DIyXHYwGE++7wURAwKkzb6v78fS0yKfCbyFt3BTcL2UffQRQ9Fg== dependencies: - "@inquirer/core" "^4.0.0" - "@inquirer/type" "^1.1.2" + "@inquirer/core" "^5.0.0" + "@inquirer/type" "^1.1.4" chalk "^4.1.2" "@inquirer/select@1.1.3": @@ -947,20 +948,20 @@ figures "^3.2.0" "@inquirer/select@^1.2.4": - version "1.2.9" - resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-1.2.9.tgz#0a4a0392e6de8b3b9ce888c782d34625ae3b662d" - integrity sha512-WXMQfUGzxrxdbDCU50xKqYCMoz+SOZnyV8sOeEJ8Ei5AjANz1fap3xA7EF8aZLJ9K1//m4OnyS/XDoi31Tqn+g== + version "1.2.11" + resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-1.2.11.tgz#4a99edadd23f398bf51838b89383d3d0cfd80a05" + integrity sha512-LH2wzAsWfu/+wcapeht07zTDefuvGTpv0+9dCAQ68QigF+4gHzpWq5+AbBLbxzuH2Wz4WlHcti85nFUPPM1t3A== dependencies: - "@inquirer/core" "^4.0.0" - "@inquirer/type" "^1.1.2" + "@inquirer/core" "^5.0.0" + "@inquirer/type" "^1.1.4" ansi-escapes "^4.3.2" chalk "^4.1.2" figures "^3.2.0" -"@inquirer/type@^1.0.3", "@inquirer/type@^1.0.5", "@inquirer/type@^1.1.1", "@inquirer/type@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.1.2.tgz#5c576904707cec5f6ee0097b0a3f355e617ae7c8" - integrity sha512-lowHTIBAE/bltg7/EchMDLfKUdT0BCyS2xzqgjsyKADybz2QZ0cLWtDXzjT1C6rdZI07Ng9jU4d2R9rDoU+6Hw== +"@inquirer/type@^1.0.3", "@inquirer/type@^1.0.5", "@inquirer/type@^1.1.1", "@inquirer/type@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.1.4.tgz#8ef3d3d638a59253fbbe4b0297035cddc227eaed" + integrity sha512-a6+RCiXBQEbiA73RT1pBfwiH2I+MPcoZoGKuuUYFkws+6ud7nb5kUQGHFGUSBim25IyVMT/mqbWIrkxetcIb/w== "@jridgewell/resolve-uri@^3.0.3": version "3.1.1" @@ -1464,9 +1465,9 @@ "@types/node" "*" "@types/bn.js@^5.1.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" - integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.2.tgz#162f5238c46f4bcbac07a98561724eca1fcf0c5e" + integrity sha512-dkpZu0szUtn9UXTmw+e0AJFd4D2XAxDnsCLdc05SfqpqzPEBft8eQr8uaFitfo/dUUOZERaLec2hHMG87A4Dxg== dependencies: "@types/node" "*" @@ -1515,14 +1516,14 @@ "@types/node" "*" "@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz#abe102d06ccda1efdf0ed98c10ccf7f36a785a41" + integrity sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw== "@types/json-schema@^7.0.9": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== "@types/json5@^0.0.29": version "0.0.29" @@ -1558,10 +1559,10 @@ dependencies: "@types/node" "*" -"@types/node@*", "@types/node@>=12.0.0", "@types/node@^20.4.2", "@types/node@^20.5.6": - version "20.5.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.9.tgz#a70ec9d8fa0180a314c3ede0e20ea56ff71aed9a" - integrity sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ== +"@types/node@*", "@types/node@>=12.0.0", "@types/node@^20.4.2", "@types/node@^20.6.0": + version "20.6.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.3.tgz#5b763b321cd3b80f6b8dde7a37e1a77ff9358dd9" + integrity sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA== "@types/node@^10.0.3": version "10.17.60" @@ -1613,9 +1614,9 @@ "@types/node" "*" "@types/semver@^7.3.12": - version "7.5.1" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.1.tgz#0480eeb7221eb9bc398ad7432c9d7e14b1a5a367" - integrity sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg== + version "7.5.2" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.2.tgz#31f6eec1ed7ec23f4f05608d3a2d381df041f564" + integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw== "@types/wrap-ansi@^3.0.0": version "3.0.0" @@ -1744,9 +1745,9 @@ zod "3.19.1" "@zetachain/networks@^2.3.0-athens3": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@zetachain/networks/-/networks-2.3.0.tgz#ef268fd318456dc2d5f19d4a8a9f9b7eabf613a4" - integrity sha512-+rP1GDA64fpyG0KKJdJFbmSaUIY2WG84J2yDsmPPgMhpXb/MkT1jZAFwlrTSmT+H0k2loIqtta6jk4pPDlSADg== + version "2.4.0" + resolved "https://registry.yarnpkg.com/@zetachain/networks/-/networks-2.4.0.tgz#c235d72d14e815e04c4a6217e60a2bca98bf536a" + integrity sha512-08rUfYhe2hx/1FmXrnjV6umKvTKyscv+GFVyLydx7UiNNmv9S0mF/0/heaDUEZZPeRnO6b1zK8rEdwQlDOR+0A== dependencies: dotenv "^16.1.4" @@ -1755,10 +1756,10 @@ resolved "https://registry.yarnpkg.com/@zetachain/protocol-contracts/-/protocol-contracts-2.1.0.tgz#775b4eee7c85d115232dece121cbfc798fde6b63" integrity sha512-xmG6p8DizIk0h7Tr8Lt6UMG0ejrfRrPx0qH9ze3enwblo7W+eGP12oQ7djanYu50B0pNhh9z7xy/IYxKa9wD0Q== -"@zetachain/toolkit@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@zetachain/toolkit/-/toolkit-2.1.2.tgz#f83b57d323eab2f54961565b8bd15279eab964e7" - integrity sha512-eKZDUKWCf/h5RRvQsP0rG2qB0kKaw9GvpSylZwetx8+NckhKwQi52sUisX7sjHVqjDziTSdsagkrl4HmiPJ0pQ== +"@zetachain/toolkit@^2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@zetachain/toolkit/-/toolkit-2.2.2.tgz#17f5957bdff6e3e508a8bdd06e4d7228de8bb888" + integrity sha512-C42kje55PEIIX3cQ9m36w4w+mL5CyFx0P/F3PdXsrOtub3hNLi0Es1j0hFqlAtUtBnyfLCE772a97j0ubyWFjQ== dependencies: "@inquirer/prompts" "^2.1.1" "@inquirer/select" "1.1.3" @@ -2016,23 +2017,23 @@ array.prototype.findlastindex@^1.2.2: get-intrinsic "^1.2.1" array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.reduce@^1.0.6: @@ -2046,14 +2047,15 @@ array.prototype.reduce@^1.0.6: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" -arraybuffer.prototype.slice@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz#9b5ea3868a6eebc30273da577eb888381c0044bb" - integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== dependencies: array-buffer-byte-length "^1.0.0" call-bind "^1.0.2" define-properties "^1.2.0" + es-abstract "^1.22.1" get-intrinsic "^1.2.1" is-array-buffer "^3.0.2" is-shared-array-buffer "^1.0.2" @@ -2173,7 +2175,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bip174@^2.1.0: +bip174@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bip174/-/bip174-2.1.1.tgz#ef3e968cf76de234a546962bcf572cc150982f9f" integrity sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ== @@ -2186,13 +2188,13 @@ bip39@^3.1.0: "@noble/hashes" "^1.2.0" bitcoinjs-lib@^6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.3.tgz#88aed5a8d052e9faa04c6402d3f0865441f928d7" - integrity sha512-TYXs/Qf+GNk2nnsB9HrXWqzFuEgCg0Gx+v3UW3B8VuceFHXVvhT+7hRnTSvwkX0i8rz2rtujeU6gFaDcFqYFDw== + version "6.1.5" + resolved "https://registry.yarnpkg.com/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz#3b03509ae7ddd80a440f10fc38c4a97f0a028d8c" + integrity sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ== dependencies: "@noble/hashes" "^1.2.0" bech32 "^2.0.0" - bip174 "^2.1.0" + bip174 "^2.1.1" bs58check "^3.0.1" typeforce "^1.11.3" varuint-bitcoin "^1.1.2" @@ -2542,9 +2544,9 @@ cli-cursor@^3.0.0, cli-cursor@^3.1.0: restore-cursor "^3.1.0" cli-spinners@^2.5.0, cli-spinners@^2.8.0, cli-spinners@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" - integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== + version "2.9.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" + integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== cli-table3@^0.5.0: version "0.5.1" @@ -2826,11 +2828,21 @@ defer-to-connect@^2.0.0: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +define-data-property@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -2978,18 +2990,18 @@ envfile@^6.18.0: resolved "https://registry.yarnpkg.com/envfile/-/envfile-6.18.0.tgz#bcb6275af19ba5c961c70c3f3b5c8baf568bdbf6" integrity sha512-IsYv64dtlNXTm4huvCBpbXsdZQurYUju9WoYCkSj+SDYpO3v4/dq346QsCnNZ3JcnWw0G3E6+saVkVtmPw98Gg== -es-abstract@^1.20.4, es-abstract@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" - integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== +es-abstract@^1.22.1: + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== dependencies: array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.1" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" + function.prototype.name "^1.1.6" get-intrinsic "^1.2.1" get-symbol-description "^1.0.0" globalthis "^1.0.3" @@ -3005,23 +3017,23 @@ es-abstract@^1.20.4, es-abstract@^1.22.1: is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-array-concat "^1.0.0" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" typed-array-buffer "^1.0.0" typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" + which-typed-array "^1.1.11" es-array-method-boxes-properly@^1.0.0: version "1.0.0" @@ -3231,15 +3243,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@^8.42.0: - version "8.48.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.48.0.tgz#bf9998ba520063907ba7bfe4c480dc8be03c2155" - integrity sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg== + version "8.49.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.49.0.tgz#09d80a89bdb4edee2efcf6964623af1054bf6d42" + integrity sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.48.0" - "@humanwhocodes/config-array" "^0.11.10" + "@eslint/js" "8.49.0" + "@humanwhocodes/config-array" "^0.11.11" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" ajv "^6.12.4" @@ -3706,14 +3718,14 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== follow-redirects@^1.12.1, follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== for-each@^0.3.3: version "0.3.3" @@ -3828,7 +3840,7 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.5: +function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== @@ -4125,9 +4137,9 @@ hardhat-gas-reporter@^1.0.8: sha1 "^1.1.1" hardhat@^2.14.0, hardhat@^2.15.0: - version "2.17.2" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.2.tgz#250a8c8e76029e9bfbfb9b9abee68d5b350b5d4a" - integrity sha512-oUv40jBeHw0dKpbyQ+iH9cmNMziweLoTW3MnkNxJ2Gc0KGLrQR/1n4vV4xY60zn2LdmRgnwPqy3CgtY0mfwIIA== + version "2.17.3" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.17.3.tgz#4cb15f2afdea5f108970ed72e5b81e6e53052cfb" + integrity sha512-SFZoYVXW1bWJZrIIKXOA+IgcctfuKXDwENywiYNT2dM3YQc4fXNaTbuk/vpPzHIF50upByx4zW5EqczKYQubsA== dependencies: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" @@ -4558,7 +4570,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -4721,9 +4733,9 @@ jsprim@^1.2.2: verror "1.10.0" keccak@^3.0.0, keccak@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" - integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== dependencies: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" @@ -5721,14 +5733,14 @@ reduce-flatten@^2.0.0: resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== -regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" req-cwd@^2.0.0: version "2.0.0" @@ -5844,9 +5856,9 @@ resolve@1.17.0: path-parse "^1.0.6" resolve@^1.1.6, resolve@^1.22.4: - version "1.22.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" - integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + version "1.22.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" @@ -5925,13 +5937,13 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -safe-array-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" - integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== +safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== dependencies: call-bind "^1.0.2" - get-intrinsic "^1.2.0" + get-intrinsic "^1.2.1" has-symbols "^1.0.3" isarray "^2.0.5" @@ -6027,6 +6039,15 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + setimmediate@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" @@ -6093,6 +6114,11 @@ signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -6255,32 +6281,32 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.1.1: version "1.3.0" @@ -6718,9 +6744,9 @@ unbox-primitive@^1.0.2: which-boxed-primitive "^1.0.2" undici@^5.14.0: - version "5.23.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.23.0.tgz#e7bdb0ed42cebe7b7aca87ced53e6eaafb8f8ca0" - integrity sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg== + version "5.24.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.24.0.tgz#6133630372894cfeb3c3dab13b4c23866bd344b5" + integrity sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ== dependencies: busboy "^1.6.0" @@ -6837,7 +6863,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.10, which-typed-array@^1.1.11: +which-typed-array@^1.1.11: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -6951,9 +6977,9 @@ ws@^7.4.6: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + version "8.14.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== xmlhttprequest@1.8.0: version "1.8.0"