diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 6d815ad..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1,10 +0,0 @@ -// This configuration only applies to the package manager root. -/** @type {import("eslint").Linter.Config} */ -module.exports = { - ignorePatterns: ["apps/**", "packages/**"], - extends: ["@repo/eslint-config/base.js"], - parser: "@typescript-eslint/parser", - parserOptions: { - project: true, - }, -}; diff --git a/.npmrc b/.npmrc deleted file mode 100644 index e69de29..0000000 diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 0b4ba4b..0000000 --- a/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "plugins": ["prettier-plugin-organize-imports"], - "tabWidth": 2, - "useTabs": false, - "trailingComma": "all", - "singleQuote": true, - "semi": true, - "printWidth": 80 -} \ No newline at end of file diff --git a/.prettierrc.mjs b/.prettierrc.mjs new file mode 100644 index 0000000..6372900 --- /dev/null +++ b/.prettierrc.mjs @@ -0,0 +1,13 @@ +// A minimal config for extensions when in languages not supported by biome. +// https://biomejs.dev/internals/language-support/ +/** @type {import("prettier").Config} */ +const config = { + tabWidth: 2, + useTabs: false, + trailingComma: "all", + singleQuote: false, + semi: true, + printWidth: 80, +}; + +export default config; diff --git a/.vscode/settings.json b/.vscode/settings.json index 8fea2fd..f0f2ef7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,22 @@ { - "cSpell.words": [ - "delvtech" - ] -} \ No newline at end of file + "biome.lspBin": "./node_modules/.bin/biome", + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[jsonc]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "cSpell.words": ["delvtech"] +} diff --git a/biome.jsonc b/biome.jsonc new file mode 100644 index 0000000..226325d --- /dev/null +++ b/biome.jsonc @@ -0,0 +1,40 @@ +// https://biomejs.dev/reference/configuration/ +{ + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true, + "defaultBranch": "main" + }, + "organizeImports": { + "enabled": true + }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "space", + "lineEnding": "lf", + "lineWidth": 80 + }, + "linter": { + "enabled": true, + + "rules": { + "style": { + "noNonNullAssertion": { + "level": "info", + "fix": "none" + } + }, + "suspicious": { + "noExplicitAny": "info" + } + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double" + } + } +} diff --git a/package.json b/package.json index b1ebd97..a697d78 100644 --- a/package.json +++ b/package.json @@ -5,18 +5,18 @@ "build:packages": "turbo build --filter=./packages/*", "build": "turbo build", "dev": "turbo dev", - "format": "prettier --write \"**/*.{ts,tsx,md}\"", - "lint": "turbo lint", + "format": "biome format --write", + "lint": "biome lint --diagnostic-level error .", + "lint:fix": "yarn lint --fix", + "lint:fix:unsafe": "yarn lint:fix --unsafe", "release": "turbo build && changeset publish", "test": "turbo test", "typecheck": "turbo typecheck" }, "devDependencies": { + "@biomejs/biome": "^1.9.1", "@changesets/cli": "^2.27.1", - "@repo/eslint-config": "*", "@repo/typescript-config": "*", - "prettier": "^3.2.5", - "prettier-plugin-organize-imports": "^3.2.4", "turbo": "latest" }, "engines": { @@ -26,8 +26,5 @@ "typescript": "^5.4.5" }, "packageManager": "yarn@1.22.21", - "workspaces": [ - "apps/*", - "packages/*" - ] + "workspaces": ["apps/*", "packages/*"] } diff --git a/packages/eslint-config/README.md b/packages/eslint-config/README.md deleted file mode 100644 index 8b42d90..0000000 --- a/packages/eslint-config/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@turbo/eslint-config` - -Collection of internal eslint configurations. diff --git a/packages/eslint-config/base.js b/packages/eslint-config/base.js deleted file mode 100644 index bb364dd..0000000 --- a/packages/eslint-config/base.js +++ /dev/null @@ -1,30 +0,0 @@ -const { resolve } = require("node:path"); - -const project = resolve(process.cwd(), "tsconfig.json"); - -/** @type {import("eslint").Linter.Config} */ -module.exports = { - extends: ["eslint:recommended", "prettier", "eslint-config-turbo"], - plugins: ["only-warn"], - env: { - node: true, - }, - settings: { - "import/resolver": { - typescript: { - project, - }, - }, - }, - ignorePatterns: [ - // Ignore dotfiles - ".*.js", - "node_modules/", - "dist/", - ], - overrides: [ - { - files: ["*.js?(x)", "*.ts?(x)"], - }, - ], -}; diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json deleted file mode 100644 index 2856f53..0000000 --- a/packages/eslint-config/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "@repo/eslint-config", - "version": "0.0.0", - "private": true, - "files": [ - "base.js" - ], - "devDependencies": { - "@vercel/style-guide": "^5.1.0", - "eslint-config-turbo": "^1.11.3", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-only-warn": "^1.1.0", - "@typescript-eslint/parser": "^6.17.0", - "@typescript-eslint/eslint-plugin": "^6.17.0", - "typescript": "^5.3.3" - } -} diff --git a/packages/evm-client-ethers/.eslintrc b/packages/evm-client-ethers/.eslintrc deleted file mode 100644 index 801fd67..0000000 --- a/packages/evm-client-ethers/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import("eslint").Linter.Config} */ -{ - "root": true, - "extends": ["@repo/eslint-config/base.js"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": true, - }, -} diff --git a/packages/evm-client-ethers/integration-tests/artifacts/CoreVoting.ts b/packages/evm-client-ethers/integration-tests/artifacts/CoreVoting.ts index dd13ddd..c23ea3b 100644 --- a/packages/evm-client-ethers/integration-tests/artifacts/CoreVoting.ts +++ b/packages/evm-client-ethers/integration-tests/artifacts/CoreVoting.ts @@ -1,614 +1,616 @@ export const CoreVoting = { - "_format": "hh-sol-artifact-1", - "contractName": "CoreVoting", - "sourceName": "contracts/CoreVoting.sol", - "abi": [ + _format: "hh-sol-artifact-1", + contractName: "CoreVoting", + sourceName: "contracts/CoreVoting.sol", + abi: [ { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "_timelock", - "type": "address" + internalType: "address", + name: "_timelock", + type: "address", }, { - "internalType": "uint256", - "name": "_baseQuorum", - "type": "uint256" + internalType: "uint256", + name: "_baseQuorum", + type: "uint256", }, { - "internalType": "uint256", - "name": "_minProposalPower", - "type": "uint256" + internalType: "uint256", + name: "_minProposalPower", + type: "uint256", }, { - "internalType": "address", - "name": "_gsc", - "type": "address" + internalType: "address", + name: "_gsc", + type: "address", }, { - "internalType": "address[]", - "name": "votingVaults", - "type": "address[]" - } + internalType: "address[]", + name: "votingVaults", + type: "address[]", + }, ], - "stateMutability": "nonpayable", - "type": "constructor" + stateMutability: "nonpayable", + type: "constructor", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": false, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" + indexed: false, + internalType: "uint256", + name: "proposalId", + type: "uint256", }, { - "indexed": false, - "internalType": "uint256", - "name": "created", - "type": "uint256" + indexed: false, + internalType: "uint256", + name: "created", + type: "uint256", }, { - "indexed": false, - "internalType": "uint256", - "name": "execution", - "type": "uint256" + indexed: false, + internalType: "uint256", + name: "execution", + type: "uint256", }, { - "indexed": false, - "internalType": "uint256", - "name": "expiration", - "type": "uint256" - } + indexed: false, + internalType: "uint256", + name: "expiration", + type: "uint256", + }, ], - "name": "ProposalCreated", - "type": "event" + name: "ProposalCreated", + type: "event", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": false, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } + indexed: false, + internalType: "uint256", + name: "proposalId", + type: "uint256", + }, ], - "name": "ProposalExecuted", - "type": "event" + name: "ProposalExecuted", + type: "event", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": true, - "internalType": "address", - "name": "voter", - "type": "address" + indexed: true, + internalType: "address", + name: "voter", + type: "address", }, { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" + indexed: true, + internalType: "uint256", + name: "proposalId", + type: "uint256", }, { - "components": [ + components: [ { - "internalType": "uint128", - "name": "votingPower", - "type": "uint128" + internalType: "uint128", + name: "votingPower", + type: "uint128", }, { - "internalType": "enum CoreVoting.Ballot", - "name": "castBallot", - "type": "uint8" - } + internalType: "enum CoreVoting.Ballot", + name: "castBallot", + type: "uint8", + }, ], - "indexed": false, - "internalType": "struct CoreVoting.Vote", - "name": "vote", - "type": "tuple" - } - ], - "name": "Voted", - "type": "event" + indexed: false, + internalType: "struct CoreVoting.Vote", + name: "vote", + type: "tuple", + }, + ], + name: "Voted", + type: "event", }, { - "inputs": [], - "name": "DAY_IN_BLOCKS", - "outputs": [ + inputs: [], + name: "DAY_IN_BLOCKS", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "", - "type": "address" - } + internalType: "address", + name: "", + type: "address", + }, ], - "name": "approvedVaults", - "outputs": [ + name: "approvedVaults", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "who", - "type": "address" - } + internalType: "address", + name: "who", + type: "address", + }, ], - "name": "authorize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "authorize", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "", - "type": "address" - } + internalType: "address", + name: "", + type: "address", + }, ], - "name": "authorized", - "outputs": [ + name: "authorized", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "baseQuorum", - "outputs": [ + inputs: [], + name: "baseQuorum", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "_extraVoteTime", - "type": "uint256" - } + internalType: "uint256", + name: "_extraVoteTime", + type: "uint256", + }, ], - "name": "changeExtraVotingTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "changeExtraVotingTime", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "vault", - "type": "address" + internalType: "address", + name: "vault", + type: "address", }, { - "internalType": "bool", - "name": "isValid", - "type": "bool" - } + internalType: "bool", + name: "isValid", + type: "bool", + }, ], - "name": "changeVaultStatus", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "changeVaultStatus", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "who", - "type": "address" - } + internalType: "address", + name: "who", + type: "address", + }, ], - "name": "deauthorize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "deauthorize", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" + internalType: "uint256", + name: "proposalId", + type: "uint256", }, { - "internalType": "address[]", - "name": "targets", - "type": "address[]" + internalType: "address[]", + name: "targets", + type: "address[]", }, { - "internalType": "bytes[]", - "name": "calldatas", - "type": "bytes[]" - } + internalType: "bytes[]", + name: "calldatas", + type: "bytes[]", + }, ], - "name": "execute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "execute", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [], - "name": "extraVoteTime", - "outputs": [ + inputs: [], + name: "extraVoteTime", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } + internalType: "uint256", + name: "proposalId", + type: "uint256", + }, ], - "name": "getProposalVotingPower", - "outputs": [ + name: "getProposalVotingPower", + outputs: [ { - "internalType": "uint128[3]", - "name": "", - "type": "uint128[3]" - } + internalType: "uint128[3]", + name: "", + type: "uint128[3]", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "who", - "type": "address" - } + internalType: "address", + name: "who", + type: "address", + }, ], - "name": "isAuthorized", - "outputs": [ + name: "isAuthorized", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "lockDuration", - "outputs": [ + inputs: [], + name: "lockDuration", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "minProposalPower", - "outputs": [ + inputs: [], + name: "minProposalPower", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "owner", - "outputs": [ + inputs: [], + name: "owner", + outputs: [ { - "internalType": "address", - "name": "", - "type": "address" - } + internalType: "address", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address[]", - "name": "votingVaults", - "type": "address[]" + internalType: "address[]", + name: "votingVaults", + type: "address[]", }, { - "internalType": "bytes[]", - "name": "extraVaultData", - "type": "bytes[]" + internalType: "bytes[]", + name: "extraVaultData", + type: "bytes[]", }, { - "internalType": "address[]", - "name": "targets", - "type": "address[]" + internalType: "address[]", + name: "targets", + type: "address[]", }, { - "internalType": "bytes[]", - "name": "calldatas", - "type": "bytes[]" + internalType: "bytes[]", + name: "calldatas", + type: "bytes[]", }, { - "internalType": "uint256", - "name": "lastCall", - "type": "uint256" + internalType: "uint256", + name: "lastCall", + type: "uint256", }, { - "internalType": "enum CoreVoting.Ballot", - "name": "ballot", - "type": "uint8" - } + internalType: "enum CoreVoting.Ballot", + name: "ballot", + type: "uint8", + }, ], - "name": "proposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "proposal", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [], - "name": "proposalCount", - "outputs": [ + inputs: [], + name: "proposalCount", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "name": "proposals", - "outputs": [ + name: "proposals", + outputs: [ { - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" + internalType: "bytes32", + name: "proposalHash", + type: "bytes32", }, { - "internalType": "uint128", - "name": "created", - "type": "uint128" + internalType: "uint128", + name: "created", + type: "uint128", }, { - "internalType": "uint128", - "name": "unlock", - "type": "uint128" + internalType: "uint128", + name: "unlock", + type: "uint128", }, { - "internalType": "uint128", - "name": "expiration", - "type": "uint128" + internalType: "uint128", + name: "expiration", + type: "uint128", }, { - "internalType": "uint128", - "name": "quorum", - "type": "uint128" + internalType: "uint128", + name: "quorum", + type: "uint128", }, { - "internalType": "uint128", - "name": "lastCall", - "type": "uint128" - } + internalType: "uint128", + name: "lastCall", + type: "uint128", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "target", - "type": "address" + internalType: "address", + name: "target", + type: "address", }, { - "internalType": "bytes4", - "name": "functionSelector", - "type": "bytes4" - } + internalType: "bytes4", + name: "functionSelector", + type: "bytes4", + }, ], - "name": "quorums", - "outputs": [ + name: "quorums", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "target", - "type": "address" + internalType: "address", + name: "target", + type: "address", }, { - "internalType": "bytes4", - "name": "selector", - "type": "bytes4" + internalType: "bytes4", + name: "selector", + type: "bytes4", }, { - "internalType": "uint256", - "name": "quorum", - "type": "uint256" - } + internalType: "uint256", + name: "quorum", + type: "uint256", + }, ], - "name": "setCustomQuorum", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setCustomQuorum", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "quorum", - "type": "uint256" - } + internalType: "uint256", + name: "quorum", + type: "uint256", + }, ], - "name": "setDefaultQuorum", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setDefaultQuorum", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "_lockDuration", - "type": "uint256" - } + internalType: "uint256", + name: "_lockDuration", + type: "uint256", + }, ], - "name": "setLockDuration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setLockDuration", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "_minProposalPower", - "type": "uint256" - } + internalType: "uint256", + name: "_minProposalPower", + type: "uint256", + }, ], - "name": "setMinProposalPower", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setMinProposalPower", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "who", - "type": "address" - } + internalType: "address", + name: "who", + type: "address", + }, ], - "name": "setOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setOwner", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address[]", - "name": "votingVaults", - "type": "address[]" + internalType: "address[]", + name: "votingVaults", + type: "address[]", }, { - "internalType": "bytes[]", - "name": "extraVaultData", - "type": "bytes[]" + internalType: "bytes[]", + name: "extraVaultData", + type: "bytes[]", }, { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" + internalType: "uint256", + name: "proposalId", + type: "uint256", }, { - "internalType": "enum CoreVoting.Ballot", - "name": "ballot", - "type": "uint8" - } + internalType: "enum CoreVoting.Ballot", + name: "ballot", + type: "uint8", + }, ], - "name": "vote", - "outputs": [ + name: "vote", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "nonpayable", - "type": "function" + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "", - "type": "address" + internalType: "address", + name: "", + type: "address", }, { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "name": "votes", - "outputs": [ + name: "votes", + outputs: [ { - "internalType": "uint128", - "name": "votingPower", - "type": "uint128" + internalType: "uint128", + name: "votingPower", + type: "uint128", }, { - "internalType": "enum CoreVoting.Ballot", - "name": "castBallot", - "type": "uint8" - } + internalType: "enum CoreVoting.Ballot", + name: "castBallot", + type: "uint8", + }, ], - "stateMutability": "view", - "type": "function" - } + stateMutability: "view", + type: "function", + }, ], - "bytecode": "0x6080604052620000136119606003620002d1565b600455620000256119606005620002d1565b6005553480156200003557600080fd5b5060405162002c2538038062002c258339810160408190526200005891620001c1565b600080546001600160a01b03191633178155600385905560068490555b8151811015620000ed57600160096000848481518110620000a657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e481620002f3565b91505062000075565b50620000f98562000130565b62000125826001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b50505050506200033d565b6000546001600160a01b03163314620001825760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620001bc57600080fd5b919050565b600080600080600060a08688031215620001d9578081fd5b620001e486620001a4565b94506020808701519450604087015193506200020360608801620001a4565b60808801519093506001600160401b038082111562000220578384fd5b818901915089601f83011262000234578384fd5b81518181111562000249576200024962000327565b8060051b604051601f19603f8301168101818110858211171562000271576200027162000327565b604052828152858101935084860182860187018e101562000290578788fd5b8795505b83861015620002bd57620002a881620001a4565b85526001959095019493860193860162000294565b508096505050505050509295509295909350565b6000816000190483118215151615620002ee57620002ee62000311565b500290565b60006000198214156200030a576200030a62000311565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6128d8806200034d6000396000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", - "linkReferences": {}, - "deployedLinkReferences": {} + bytecode: + "0x6080604052620000136119606003620002d1565b600455620000256119606005620002d1565b6005553480156200003557600080fd5b5060405162002c2538038062002c258339810160408190526200005891620001c1565b600080546001600160a01b03191633178155600385905560068490555b8151811015620000ed57600160096000848481518110620000a657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e481620002f3565b91505062000075565b50620000f98562000130565b62000125826001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b50505050506200033d565b6000546001600160a01b03163314620001825760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620001bc57600080fd5b919050565b600080600080600060a08688031215620001d9578081fd5b620001e486620001a4565b94506020808701519450604087015193506200020360608801620001a4565b60808801519093506001600160401b038082111562000220578384fd5b818901915089601f83011262000234578384fd5b81518181111562000249576200024962000327565b8060051b604051601f19603f8301168101818110858211171562000271576200027162000327565b604052828152858101935084860182860187018e101562000290578788fd5b8795505b83861015620002bd57620002a881620001a4565b85526001959095019493860193860162000294565b508096505050505050509295509295909350565b6000816000190483118215151615620002ee57620002ee62000311565b500290565b60006000198214156200030a576200030a62000311565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6128d8806200034d6000396000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", + deployedBytecode: + "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", + linkReferences: {}, + deployedLinkReferences: {}, } as const; diff --git a/packages/evm-client-ethers/integration-tests/createReadContract.test.ts b/packages/evm-client-ethers/integration-tests/createReadContract.test.ts index f81c879..3fff069 100644 --- a/packages/evm-client-ethers/integration-tests/createReadContract.test.ts +++ b/packages/evm-client-ethers/integration-tests/createReadContract.test.ts @@ -1,19 +1,19 @@ -import { getDefaultProvider } from 'ethers'; -import { CoreVoting } from 'integration-tests/artifacts/CoreVoting'; -import { createCachedReadContract } from 'src/contract/createCachedReadContract'; -import { describe, it } from 'vitest'; +import { getDefaultProvider } from "ethers"; +import { CoreVoting } from "integration-tests/artifacts/CoreVoting"; +import { createCachedReadContract } from "src/contract/createCachedReadContract"; +import { describe, it } from "vitest"; -describe.todo('integration', () => { - it('It fetches events', async () => { - const provider = getDefaultProvider('http://localhost:8545'); +describe.todo("integration", () => { + it("It fetches events", async () => { + const provider = getDefaultProvider("http://localhost:8545"); const coreVotingContract = createCachedReadContract({ abi: CoreVoting.abi, - address: '0xe7f1725e7734ce288f8367e1bb143e90bb3f0512', + address: "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", provider, }); - const result = await coreVotingContract.getEvents('ProposalCreated'); - console.log('result:', result); + const result = await coreVotingContract.getEvents("ProposalCreated"); + console.log("result:", result); }); }); diff --git a/packages/evm-client-ethers/package.json b/packages/evm-client-ethers/package.json index 21595a4..6da7e0d 100644 --- a/packages/evm-client-ethers/package.json +++ b/packages/evm-client-ethers/package.json @@ -18,14 +18,11 @@ }, "typesVersions": { "*": { - "stubs": [ - "./dist/stubs.d.ts" - ] + "stubs": ["./dist/stubs.d.ts"] } }, "scripts": { "build": "tsup", - "lint": "eslint .", "test:watch": "vitest", "test": "vitest run", "test:integration": "vitest run integration", @@ -39,7 +36,6 @@ "@delvtech/evm-client": "0.5.1" }, "devDependencies": { - "@repo/eslint-config": "*", "@repo/typescript-config": "*", "abitype": "^1.0.0", "ethers": "^6.11.0", diff --git a/packages/evm-client-ethers/src/contract/createCachedReadContract.ts b/packages/evm-client-ethers/src/contract/createCachedReadContract.ts index 73b8b49..5e4d1e5 100644 --- a/packages/evm-client-ethers/src/contract/createCachedReadContract.ts +++ b/packages/evm-client-ethers/src/contract/createCachedReadContract.ts @@ -1,13 +1,13 @@ import { - CachedReadContract, - SimpleCache, + type CachedReadContract, + type SimpleCache, createCachedReadContract as baseFactory, -} from '@delvtech/evm-client'; -import { Abi } from 'abitype'; +} from "@delvtech/evm-client"; +import type { Abi } from "abitype"; import { - CreateReadContractOptions, + type CreateReadContractOptions, createReadContract, -} from 'src/contract/createReadContract'; +} from "src/contract/createReadContract"; export interface CreateCachedReadContractOptions extends CreateReadContractOptions { diff --git a/packages/evm-client-ethers/src/contract/createCachedReadWriteContract.ts b/packages/evm-client-ethers/src/contract/createCachedReadWriteContract.ts index ceeeee4..2f13720 100644 --- a/packages/evm-client-ethers/src/contract/createCachedReadWriteContract.ts +++ b/packages/evm-client-ethers/src/contract/createCachedReadWriteContract.ts @@ -1,13 +1,13 @@ import { - CachedReadWriteContract, - SimpleCache, + type CachedReadWriteContract, + type SimpleCache, createCachedReadWriteContract as baseFactory, -} from '@delvtech/evm-client'; -import { Abi } from 'abitype'; +} from "@delvtech/evm-client"; +import type { Abi } from "abitype"; import { - ReadWriteContractOptions, + type ReadWriteContractOptions, createReadWriteContract, -} from 'src/contract/createReadWriteContract'; +} from "src/contract/createReadWriteContract"; export interface CreateCachedReadWriteContractOptions extends ReadWriteContractOptions { diff --git a/packages/evm-client-ethers/src/contract/createReadContract.ts b/packages/evm-client-ethers/src/contract/createReadContract.ts index 38323cb..058919c 100644 --- a/packages/evm-client-ethers/src/contract/createReadContract.ts +++ b/packages/evm-client-ethers/src/contract/createReadContract.ts @@ -1,16 +1,16 @@ import { AbiEntryNotFoundError, - DecodedFunctionData, - FunctionName, - ReadContract, - ReadWriteContract, + type DecodedFunctionData, + type FunctionName, + type ReadContract, + type ReadWriteContract, arrayToFriendly, arrayToObject, objectToArray, -} from '@delvtech/evm-client'; -import { Abi } from 'abitype'; -import { Contract, EventLog, InterfaceAbi, Provider, Signer } from 'ethers'; -import { createReadWriteContract } from 'src/contract/createReadWriteContract'; +} from "@delvtech/evm-client"; +import type { Abi } from "abitype"; +import { Contract, type EventLog, type InterfaceAbi, type Provider, type Signer } from "ethers"; +import { createReadWriteContract } from "src/contract/createReadWriteContract"; export interface CreateReadContractOptions { address: `0x${string}`; @@ -55,9 +55,9 @@ export function createReadContract({ async read(functionName, args, options) { const argsArray: any[] = objectToArray({ abi: abi as Abi, - type: 'function', + type: "function", name: functionName, - kind: 'inputs', + kind: "inputs", value: args, }); @@ -74,9 +74,9 @@ export function createReadContract({ return arrayToFriendly({ abi: abi as Abi, - type: 'function', + type: "function", name: functionName, - kind: 'outputs', + kind: "outputs", values: output, }); }, @@ -84,9 +84,9 @@ export function createReadContract({ async simulateWrite(functionName, args, options) { const argsArray: any[] = objectToArray({ abi: abi as Abi, - type: 'function', + type: "function", name: functionName, - kind: 'inputs', + kind: "inputs", value: args, }); @@ -103,9 +103,9 @@ export function createReadContract({ return arrayToFriendly({ abi: abi as Abi, - type: 'function', + type: "function", name: functionName, - kind: 'outputs', + kind: "outputs", values: output, }); }, @@ -114,9 +114,9 @@ export function createReadContract({ const filterValues = objectToArray({ // Cast to allow any array type for values abi: abi as Abi, - type: 'event', + type: "event", name: eventName, - kind: 'inputs', + kind: "inputs", value: options?.filter, }); @@ -131,9 +131,9 @@ export function createReadContract({ const objectArgs = arrayToObject({ // Cast to allow any array type for values abi: abi as Abi, - type: 'event', + type: "event", name: eventName, - kind: 'inputs', + kind: "inputs", values: args, }); @@ -151,9 +151,9 @@ export function createReadContract({ const arrayArgs = objectToArray({ // Cast to allow any array type for values abi: abi as Abi, - type: 'function', + type: "function", name: functionName, - kind: 'inputs', + kind: "inputs", value: args, }); @@ -161,7 +161,7 @@ export function createReadContract({ if (!abiFragment) { throw new AbiEntryNotFoundError({ - type: 'function', + type: "function", name: functionName, }); } @@ -186,9 +186,9 @@ export function createReadContract({ return { args: arrayToObject({ abi: abi as Abi, - type: 'function', + type: "function", name: parsed.name, - kind: 'inputs', + kind: "inputs", values: parsed.args, }), functionName: parsed.name, diff --git a/packages/evm-client-ethers/src/contract/createReadWriteContract.ts b/packages/evm-client-ethers/src/contract/createReadWriteContract.ts index 29528e3..3ad329b 100644 --- a/packages/evm-client-ethers/src/contract/createReadWriteContract.ts +++ b/packages/evm-client-ethers/src/contract/createReadWriteContract.ts @@ -1,11 +1,11 @@ import { objectToArray, - ReadContract, - ReadWriteContract, -} from '@delvtech/evm-client'; -import { Abi } from 'abitype'; -import { Contract, InterfaceAbi, Provider, Signer } from 'ethers'; -import { createReadContract } from 'src/contract/createReadContract'; + type ReadContract, + type ReadWriteContract, +} from "@delvtech/evm-client"; +import type { Abi } from "abitype"; +import { Contract, type InterfaceAbi, type Provider, type Signer } from "ethers"; +import { createReadContract } from "src/contract/createReadContract"; export interface ReadWriteContractOptions { address: `0x${string}`; @@ -43,9 +43,9 @@ export function createReadWriteContract({ async write(functionName, args, options) { const argsArray = objectToArray({ abi: abi as Abi, - type: 'function', + type: "function", name: functionName, - kind: 'inputs', + kind: "inputs", value: args, }); diff --git a/packages/evm-client-ethers/src/index.ts b/packages/evm-client-ethers/src/index.ts index 711e5d4..7775a6c 100644 --- a/packages/evm-client-ethers/src/index.ts +++ b/packages/evm-client-ethers/src/index.ts @@ -2,33 +2,33 @@ export { createCachedReadContract, type CreateCachedReadContractOptions, -} from 'src/contract/createCachedReadContract'; +} from "src/contract/createCachedReadContract"; export { createCachedReadWriteContract, type CreateCachedReadWriteContractOptions, -} from 'src/contract/createCachedReadWriteContract'; +} from "src/contract/createCachedReadWriteContract"; export { createReadContract, type CreateReadContractOptions, type EthersReadContract, -} from 'src/contract/createReadContract'; +} from "src/contract/createReadContract"; export { createReadWriteContract, type ReadWriteContractOptions, -} from 'src/contract/createReadWriteContract'; +} from "src/contract/createReadWriteContract"; // Network -export { createNetwork } from 'src/network/createNetwork'; +export { createNetwork } from "src/network/createNetwork"; // Re-exports -export * from '@delvtech/evm-client/cache'; +export * from "@delvtech/evm-client/cache"; export { arrayToFriendly, arrayToObject, getAbiEntry, objectToArray, -} from '@delvtech/evm-client/contract'; +} from "@delvtech/evm-client/contract"; export type { AbiArrayType, AbiEntry, @@ -57,7 +57,7 @@ export type { FunctionReturn, ReadContract, ReadWriteContract, -} from '@delvtech/evm-client/contract'; +} from "@delvtech/evm-client/contract"; -export * from '@delvtech/evm-client/errors'; -export * from '@delvtech/evm-client/network'; +export * from "@delvtech/evm-client/errors"; +export * from "@delvtech/evm-client/network"; diff --git a/packages/evm-client-ethers/src/network/createNetwork.ts b/packages/evm-client-ethers/src/network/createNetwork.ts index 5d312e1..2c51c90 100644 --- a/packages/evm-client-ethers/src/network/createNetwork.ts +++ b/packages/evm-client-ethers/src/network/createNetwork.ts @@ -1,5 +1,5 @@ -import { Network } from '@delvtech/evm-client'; -import { Provider } from 'ethers'; +import type { Network } from "@delvtech/evm-client"; +import type { Provider } from "ethers"; export function createNetwork(provider: Provider): Network { return { @@ -8,7 +8,7 @@ export function createNetwork(provider: Provider): Network { return provider.getBalance( account, - blockHash || blockNumber || blockTag || 'latest', + blockHash || blockNumber || blockTag || "latest", ); }, @@ -16,7 +16,7 @@ export function createNetwork(provider: Provider): Network { const { blockHash, blockNumber, blockTag } = options; const block = await provider.getBlock( - blockHash || blockNumber || blockTag || 'latest', + blockHash || blockNumber || blockTag || "latest", ); if (!block) { @@ -66,7 +66,7 @@ export function createNetwork(provider: Provider): Network { gasPrice: BigInt(gasPrice), input: data as `0x${string}`, nonce, - to: typeof to === 'string' ? (to as `0x${string}`) : to, + to: typeof to === "string" ? (to as `0x${string}`) : to, value: BigInt(value), type: type.toString(16) as `0x${number}`, chainId: Number(chainId), @@ -87,7 +87,7 @@ export function createNetwork(provider: Provider): Network { } // status is either 0 (reverted) or 1 (success) - const status = !transaction.status ? 'reverted' : 'success'; + const status = !transaction.status ? "reverted" : "success"; return { blockHash: transaction.blockHash as `0x${string}`, diff --git a/packages/evm-client-ethers/src/stubs.ts b/packages/evm-client-ethers/src/stubs.ts index e8e8ca1..363f08f 100644 --- a/packages/evm-client-ethers/src/stubs.ts +++ b/packages/evm-client-ethers/src/stubs.ts @@ -1 +1 @@ -export * from '@delvtech/evm-client/stubs'; +export * from "@delvtech/evm-client/stubs"; diff --git a/packages/evm-client-ethers/tsup.config.ts b/packages/evm-client-ethers/tsup.config.ts index 5da7988..cfe2fee 100644 --- a/packages/evm-client-ethers/tsup.config.ts +++ b/packages/evm-client-ethers/tsup.config.ts @@ -1,8 +1,8 @@ -import { defineConfig } from 'tsup'; +import { defineConfig } from "tsup"; export default defineConfig({ - entry: ['src/index.ts', 'src/stubs.ts'], - format: ['esm'], + entry: ["src/index.ts", "src/stubs.ts"], + format: ["esm"], sourcemap: true, dts: true, clean: true, diff --git a/packages/evm-client-ethers/vite.config.ts b/packages/evm-client-ethers/vite.config.ts index cc40ce7..3b5ea6b 100644 --- a/packages/evm-client-ethers/vite.config.ts +++ b/packages/evm-client-ethers/vite.config.ts @@ -1,5 +1,5 @@ -import tsconfigPaths from 'vite-tsconfig-paths'; -import { defineConfig } from 'vitest/config'; +import tsconfigPaths from "vite-tsconfig-paths"; +import { defineConfig } from "vitest/config"; export default defineConfig({ plugins: [tsconfigPaths() as any], diff --git a/packages/evm-client-viem/.eslintrc b/packages/evm-client-viem/.eslintrc deleted file mode 100644 index 801fd67..0000000 --- a/packages/evm-client-viem/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import("eslint").Linter.Config} */ -{ - "root": true, - "extends": ["@repo/eslint-config/base.js"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": true, - }, -} diff --git a/packages/evm-client-viem/integration-tests/artifacts/CoreVoting.ts b/packages/evm-client-viem/integration-tests/artifacts/CoreVoting.ts index dd13ddd..c23ea3b 100644 --- a/packages/evm-client-viem/integration-tests/artifacts/CoreVoting.ts +++ b/packages/evm-client-viem/integration-tests/artifacts/CoreVoting.ts @@ -1,614 +1,616 @@ export const CoreVoting = { - "_format": "hh-sol-artifact-1", - "contractName": "CoreVoting", - "sourceName": "contracts/CoreVoting.sol", - "abi": [ + _format: "hh-sol-artifact-1", + contractName: "CoreVoting", + sourceName: "contracts/CoreVoting.sol", + abi: [ { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "_timelock", - "type": "address" + internalType: "address", + name: "_timelock", + type: "address", }, { - "internalType": "uint256", - "name": "_baseQuorum", - "type": "uint256" + internalType: "uint256", + name: "_baseQuorum", + type: "uint256", }, { - "internalType": "uint256", - "name": "_minProposalPower", - "type": "uint256" + internalType: "uint256", + name: "_minProposalPower", + type: "uint256", }, { - "internalType": "address", - "name": "_gsc", - "type": "address" + internalType: "address", + name: "_gsc", + type: "address", }, { - "internalType": "address[]", - "name": "votingVaults", - "type": "address[]" - } + internalType: "address[]", + name: "votingVaults", + type: "address[]", + }, ], - "stateMutability": "nonpayable", - "type": "constructor" + stateMutability: "nonpayable", + type: "constructor", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": false, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" + indexed: false, + internalType: "uint256", + name: "proposalId", + type: "uint256", }, { - "indexed": false, - "internalType": "uint256", - "name": "created", - "type": "uint256" + indexed: false, + internalType: "uint256", + name: "created", + type: "uint256", }, { - "indexed": false, - "internalType": "uint256", - "name": "execution", - "type": "uint256" + indexed: false, + internalType: "uint256", + name: "execution", + type: "uint256", }, { - "indexed": false, - "internalType": "uint256", - "name": "expiration", - "type": "uint256" - } + indexed: false, + internalType: "uint256", + name: "expiration", + type: "uint256", + }, ], - "name": "ProposalCreated", - "type": "event" + name: "ProposalCreated", + type: "event", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": false, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } + indexed: false, + internalType: "uint256", + name: "proposalId", + type: "uint256", + }, ], - "name": "ProposalExecuted", - "type": "event" + name: "ProposalExecuted", + type: "event", }, { - "anonymous": false, - "inputs": [ + anonymous: false, + inputs: [ { - "indexed": true, - "internalType": "address", - "name": "voter", - "type": "address" + indexed: true, + internalType: "address", + name: "voter", + type: "address", }, { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" + indexed: true, + internalType: "uint256", + name: "proposalId", + type: "uint256", }, { - "components": [ + components: [ { - "internalType": "uint128", - "name": "votingPower", - "type": "uint128" + internalType: "uint128", + name: "votingPower", + type: "uint128", }, { - "internalType": "enum CoreVoting.Ballot", - "name": "castBallot", - "type": "uint8" - } + internalType: "enum CoreVoting.Ballot", + name: "castBallot", + type: "uint8", + }, ], - "indexed": false, - "internalType": "struct CoreVoting.Vote", - "name": "vote", - "type": "tuple" - } - ], - "name": "Voted", - "type": "event" + indexed: false, + internalType: "struct CoreVoting.Vote", + name: "vote", + type: "tuple", + }, + ], + name: "Voted", + type: "event", }, { - "inputs": [], - "name": "DAY_IN_BLOCKS", - "outputs": [ + inputs: [], + name: "DAY_IN_BLOCKS", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "", - "type": "address" - } + internalType: "address", + name: "", + type: "address", + }, ], - "name": "approvedVaults", - "outputs": [ + name: "approvedVaults", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "who", - "type": "address" - } + internalType: "address", + name: "who", + type: "address", + }, ], - "name": "authorize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "authorize", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "", - "type": "address" - } + internalType: "address", + name: "", + type: "address", + }, ], - "name": "authorized", - "outputs": [ + name: "authorized", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "baseQuorum", - "outputs": [ + inputs: [], + name: "baseQuorum", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "_extraVoteTime", - "type": "uint256" - } + internalType: "uint256", + name: "_extraVoteTime", + type: "uint256", + }, ], - "name": "changeExtraVotingTime", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "changeExtraVotingTime", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "vault", - "type": "address" + internalType: "address", + name: "vault", + type: "address", }, { - "internalType": "bool", - "name": "isValid", - "type": "bool" - } + internalType: "bool", + name: "isValid", + type: "bool", + }, ], - "name": "changeVaultStatus", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "changeVaultStatus", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "who", - "type": "address" - } + internalType: "address", + name: "who", + type: "address", + }, ], - "name": "deauthorize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "deauthorize", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" + internalType: "uint256", + name: "proposalId", + type: "uint256", }, { - "internalType": "address[]", - "name": "targets", - "type": "address[]" + internalType: "address[]", + name: "targets", + type: "address[]", }, { - "internalType": "bytes[]", - "name": "calldatas", - "type": "bytes[]" - } + internalType: "bytes[]", + name: "calldatas", + type: "bytes[]", + }, ], - "name": "execute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "execute", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [], - "name": "extraVoteTime", - "outputs": [ + inputs: [], + name: "extraVoteTime", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - } + internalType: "uint256", + name: "proposalId", + type: "uint256", + }, ], - "name": "getProposalVotingPower", - "outputs": [ + name: "getProposalVotingPower", + outputs: [ { - "internalType": "uint128[3]", - "name": "", - "type": "uint128[3]" - } + internalType: "uint128[3]", + name: "", + type: "uint128[3]", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "who", - "type": "address" - } + internalType: "address", + name: "who", + type: "address", + }, ], - "name": "isAuthorized", - "outputs": [ + name: "isAuthorized", + outputs: [ { - "internalType": "bool", - "name": "", - "type": "bool" - } + internalType: "bool", + name: "", + type: "bool", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "lockDuration", - "outputs": [ + inputs: [], + name: "lockDuration", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "minProposalPower", - "outputs": [ + inputs: [], + name: "minProposalPower", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [], - "name": "owner", - "outputs": [ + inputs: [], + name: "owner", + outputs: [ { - "internalType": "address", - "name": "", - "type": "address" - } + internalType: "address", + name: "", + type: "address", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address[]", - "name": "votingVaults", - "type": "address[]" + internalType: "address[]", + name: "votingVaults", + type: "address[]", }, { - "internalType": "bytes[]", - "name": "extraVaultData", - "type": "bytes[]" + internalType: "bytes[]", + name: "extraVaultData", + type: "bytes[]", }, { - "internalType": "address[]", - "name": "targets", - "type": "address[]" + internalType: "address[]", + name: "targets", + type: "address[]", }, { - "internalType": "bytes[]", - "name": "calldatas", - "type": "bytes[]" + internalType: "bytes[]", + name: "calldatas", + type: "bytes[]", }, { - "internalType": "uint256", - "name": "lastCall", - "type": "uint256" + internalType: "uint256", + name: "lastCall", + type: "uint256", }, { - "internalType": "enum CoreVoting.Ballot", - "name": "ballot", - "type": "uint8" - } + internalType: "enum CoreVoting.Ballot", + name: "ballot", + type: "uint8", + }, ], - "name": "proposal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "proposal", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [], - "name": "proposalCount", - "outputs": [ + inputs: [], + name: "proposalCount", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "name": "proposals", - "outputs": [ + name: "proposals", + outputs: [ { - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" + internalType: "bytes32", + name: "proposalHash", + type: "bytes32", }, { - "internalType": "uint128", - "name": "created", - "type": "uint128" + internalType: "uint128", + name: "created", + type: "uint128", }, { - "internalType": "uint128", - "name": "unlock", - "type": "uint128" + internalType: "uint128", + name: "unlock", + type: "uint128", }, { - "internalType": "uint128", - "name": "expiration", - "type": "uint128" + internalType: "uint128", + name: "expiration", + type: "uint128", }, { - "internalType": "uint128", - "name": "quorum", - "type": "uint128" + internalType: "uint128", + name: "quorum", + type: "uint128", }, { - "internalType": "uint128", - "name": "lastCall", - "type": "uint128" - } + internalType: "uint128", + name: "lastCall", + type: "uint128", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "target", - "type": "address" + internalType: "address", + name: "target", + type: "address", }, { - "internalType": "bytes4", - "name": "functionSelector", - "type": "bytes4" - } + internalType: "bytes4", + name: "functionSelector", + type: "bytes4", + }, ], - "name": "quorums", - "outputs": [ + name: "quorums", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "view", - "type": "function" + stateMutability: "view", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "target", - "type": "address" + internalType: "address", + name: "target", + type: "address", }, { - "internalType": "bytes4", - "name": "selector", - "type": "bytes4" + internalType: "bytes4", + name: "selector", + type: "bytes4", }, { - "internalType": "uint256", - "name": "quorum", - "type": "uint256" - } + internalType: "uint256", + name: "quorum", + type: "uint256", + }, ], - "name": "setCustomQuorum", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setCustomQuorum", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "quorum", - "type": "uint256" - } + internalType: "uint256", + name: "quorum", + type: "uint256", + }, ], - "name": "setDefaultQuorum", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setDefaultQuorum", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "_lockDuration", - "type": "uint256" - } + internalType: "uint256", + name: "_lockDuration", + type: "uint256", + }, ], - "name": "setLockDuration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setLockDuration", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "uint256", - "name": "_minProposalPower", - "type": "uint256" - } + internalType: "uint256", + name: "_minProposalPower", + type: "uint256", + }, ], - "name": "setMinProposalPower", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setMinProposalPower", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "who", - "type": "address" - } + internalType: "address", + name: "who", + type: "address", + }, ], - "name": "setOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" + name: "setOwner", + outputs: [], + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address[]", - "name": "votingVaults", - "type": "address[]" + internalType: "address[]", + name: "votingVaults", + type: "address[]", }, { - "internalType": "bytes[]", - "name": "extraVaultData", - "type": "bytes[]" + internalType: "bytes[]", + name: "extraVaultData", + type: "bytes[]", }, { - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" + internalType: "uint256", + name: "proposalId", + type: "uint256", }, { - "internalType": "enum CoreVoting.Ballot", - "name": "ballot", - "type": "uint8" - } + internalType: "enum CoreVoting.Ballot", + name: "ballot", + type: "uint8", + }, ], - "name": "vote", - "outputs": [ + name: "vote", + outputs: [ { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "stateMutability": "nonpayable", - "type": "function" + stateMutability: "nonpayable", + type: "function", }, { - "inputs": [ + inputs: [ { - "internalType": "address", - "name": "", - "type": "address" + internalType: "address", + name: "", + type: "address", }, { - "internalType": "uint256", - "name": "", - "type": "uint256" - } + internalType: "uint256", + name: "", + type: "uint256", + }, ], - "name": "votes", - "outputs": [ + name: "votes", + outputs: [ { - "internalType": "uint128", - "name": "votingPower", - "type": "uint128" + internalType: "uint128", + name: "votingPower", + type: "uint128", }, { - "internalType": "enum CoreVoting.Ballot", - "name": "castBallot", - "type": "uint8" - } + internalType: "enum CoreVoting.Ballot", + name: "castBallot", + type: "uint8", + }, ], - "stateMutability": "view", - "type": "function" - } + stateMutability: "view", + type: "function", + }, ], - "bytecode": "0x6080604052620000136119606003620002d1565b600455620000256119606005620002d1565b6005553480156200003557600080fd5b5060405162002c2538038062002c258339810160408190526200005891620001c1565b600080546001600160a01b03191633178155600385905560068490555b8151811015620000ed57600160096000848481518110620000a657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e481620002f3565b91505062000075565b50620000f98562000130565b62000125826001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b50505050506200033d565b6000546001600160a01b03163314620001825760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620001bc57600080fd5b919050565b600080600080600060a08688031215620001d9578081fd5b620001e486620001a4565b94506020808701519450604087015193506200020360608801620001a4565b60808801519093506001600160401b038082111562000220578384fd5b818901915089601f83011262000234578384fd5b81518181111562000249576200024962000327565b8060051b604051601f19603f8301168101818110858211171562000271576200027162000327565b604052828152858101935084860182860187018e101562000290578788fd5b8795505b83861015620002bd57620002a881620001a4565b85526001959095019493860193860162000294565b508096505050505050509295509295909350565b6000816000190483118215151615620002ee57620002ee62000311565b500290565b60006000198214156200030a576200030a62000311565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6128d8806200034d6000396000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", - "linkReferences": {}, - "deployedLinkReferences": {} + bytecode: + "0x6080604052620000136119606003620002d1565b600455620000256119606005620002d1565b6005553480156200003557600080fd5b5060405162002c2538038062002c258339810160408190526200005891620001c1565b600080546001600160a01b03191633178155600385905560068490555b8151811015620000ed57600160096000848481518110620000a657634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e481620002f3565b91505062000075565b50620000f98562000130565b62000125826001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b50505050506200033d565b6000546001600160a01b03163314620001825760405162461bcd60e51b815260206004820152601060248201526f29b2b73232b9103737ba1037bbb732b960811b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b80516001600160a01b0381168114620001bc57600080fd5b919050565b600080600080600060a08688031215620001d9578081fd5b620001e486620001a4565b94506020808701519450604087015193506200020360608801620001a4565b60808801519093506001600160401b038082111562000220578384fd5b818901915089601f83011262000234578384fd5b81518181111562000249576200024962000327565b8060051b604051601f19603f8301168101818110858211171562000271576200027162000327565b604052828152858101935084860182860187018e101562000290578788fd5b8795505b83861015620002bd57620002a881620001a4565b85526001959095019493860193860162000294565b508096505050505050509295509295909350565b6000816000190483118215151615620002ee57620002ee62000311565b500290565b60006000198214156200030a576200030a62000311565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6128d8806200034d6000396000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", + deployedBytecode: + "0x608060405234801561001057600080fd5b50600436106101ad5760003560e01c80639f2524ee116100ee578063bd9c75a511610097578063d4b8756711610071578063d4b87567146104a9578063da35c664146104b2578063f131e5eb146104bb578063fe9fbb80146104c4576101ad565b8063bd9c75a514610463578063c52ea3db14610476578063d1b6762714610496576101ad565b8063af7a060c116100c8578063af7a060c146103fa578063b6a5d7de1461042d578063b918161114610440576101ad565b80639f2524ee1461037a578063a4c95077146103de578063aa35fb51146103e7576101ad565b806327c97fa51161015b5780634eb665af116101355780634eb665af146102fc578063771a53231461030f5780637d5709eb146103225780638da5cb5b14610335576101ad565b806327c97fa5146102c3578063341a7b42146102d65780634392b99c146102e9576101ad565b806313af40351161018c57806313af40351461029457806315126a3d146102a75780631c39c96c146102ba576101ad565b806214d11d146101b2578063013cf08b146101c7578063045544431461027d575b600080fd5b6101c56101c03660046122de565b6104fd565b005b6102316101d53660046122de565b600a60205260009081526040902080546001820154600283015460059093015491926fffffffffffffffffffffffffffffffff808316937001000000000000000000000000000000009384900482169383831693048216911686565b604080519687526fffffffffffffffffffffffffffffffff9586166020880152938516938601939093529083166060850152821660808401521660a082015260c0015b60405180910390f35b61028660045481565b604051908152602001610274565b6101c56102a23660046120a1565b61056e565b6101c56102b536600461230e565b61061c565b61028660035481565b6101c56102d13660046120a1565b610bc6565b6101c56102e43660046120bb565b610c5b565b6101c56102f7366004612127565b610cfa565b6101c561030a3660046122de565b610db7565b61028661031d3660046120f5565b610e23565b6101c56103303660046122de565b610e94565b6000546103559073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d0610388366004612162565b600b6020908152600092835260408084209091529082529020546fffffffffffffffffffffffffffffffff811690700100000000000000000000000000000000900460ff1682565b60405161027492919061268e565b61028660055481565b6102866103f5366004612263565b610f00565b61041d6104083660046120a1565b60096020526000908152604090205460ff1681565b6040519015158152602001610274565b6101c561043b3660046120a1565b61160e565b61041d61044e3660046120a1565b60016020526000908152604090205460ff1681565b6101c561047136600461218b565b6116b0565b6104896104843660046122de565b611c9a565b604051610274919061261b565b6101c56104a43660046122de565b611d28565b61028660065481565b61028660075481565b61028661196081565b61041d6104d23660046120a1565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105695760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e65720000000000000000000000000000000060448201526064015b60405180910390fd5b600555565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d55760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60025460ff161561066f5760405162461bcd60e51b815260206004820152600a60248201527f5265656e7472616e6379000000000000000000000000000000000000000000006044820152606401610560565b6002805460ff191660019081179091556000848152600a6020526040902001546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000909104164310156107055760405162461bcd60e51b815260206004820152600c60248201527f6e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610560565b6000838152600a602052604090206001015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166107895760405162461bcd60e51b815260206004820152601360248201527f50726576696f75736c79206578656375746564000000000000000000000000006044820152606401610560565b6000838152600a60205260409020600501546fffffffffffffffffffffffffffffffff1643106107fb5760405162461bcd60e51b815260206004820152601860248201527f70617374206c6173742063616c6c2074696d657374616d7000000000000000006044820152606401610560565b6000838152600a602090815260409182902054915161081e91859185910161256c565b60405160208183030381529060405280519060200120146108815760405162461bcd60e51b815260206004820152600d60248201527f68617368206d69736d61746368000000000000000000000000000000000000006044820152606401610560565b6000838152600a60205260408082208151606081019283905291600391820191908285855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f010492830192600103820291508084116108a6575050506000888152600a60209081526040808320600201549087015191870151875197985092967001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff169550909350610955925061276c565b61095f919061276c565b6fffffffffffffffffffffffffffffffff1610159050600082600160200201516fffffffffffffffffffffffffffffffff1683600060200201516fffffffffffffffffffffffffffffffff161190508180156109b85750805b610a045760405162461bcd60e51b815260206004820152600e60248201527f43616e6e6f7420657865637574650000000000000000000000000000000000006044820152606401610560565b60005b8551811015610b2b576000868281518110610a3257634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16868381518110610a7057634e487b7160e01b600052603260045260246000fd5b6020026020010151604051610a8591906123f0565b6000604051808303816000865af19150503d8060008114610ac2576040519150601f19603f3d011682016040523d82523d6000602084013e610ac7565b606091505b5050905080610b185760405162461bcd60e51b815260206004820152600b60248201527f43616c6c206661696c65640000000000000000000000000000000000000000006044820152606401610560565b5080610b238161283d565b915050610a07565b506040518681527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f9060200160405180910390a150505060009283525050600a6020526040812081815560018101829055600280820183905560038201839055600482019290925560050180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169055805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2d5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160205260409020805460ff19169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cc25760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff919091166000908152600960205260409020805460ff1916911515919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d615760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526008602090815260408083207fffffffff0000000000000000000000000000000000000000000000000000000090941683529290522055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e1e5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600455565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000008516845290915281205480610e85575050600354610e8e565b9050610e8e565b505b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610efb5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600355565b6000828152600a60205260408120600101546fffffffffffffffffffffffffffffffff16610f705760405162461bcd60e51b815260206004820152601760248201527f70726f706f73616c20646f6573206e6f742065786973740000000000000000006044820152606401610560565b6000838152600a60205260409020600201546fffffffffffffffffffffffffffffffff16431115610fe35760405162461bcd60e51b815260206004820152600760248201527f45787069726564000000000000000000000000000000000000000000000000006044820152606401610560565b6000805b86518110156112b7576000610ffd8260016127a0565b90505b87518110156110e55787818151811061102957634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1688838151811061106757634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614156110d35760405162461bcd60e51b815260206004820152600f60248201527f6475706c6963617465207661756c7400000000000000000000000000000000006044820152606401610560565b806110dd8161283d565b915050611000565b506009600088838151811061110a57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040016000205460ff1661118a5760405162461bcd60e51b815260206004820152601060248201527f756e7665726966696564207661756c74000000000000000000000000000000006044820152606401610560565b8681815181106111aa57634e487b7160e01b600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e91f323533600a600089815260200190815260200160002060010160009054906101000a90046fffffffffffffffffffffffffffffffff1689858151811061122157634e487b7160e01b600052603260045260246000fd5b60200260200101516040518463ffffffff1660e01b81526004016112479392919061240c565b602060405180830381600087803b15801561126157600080fd5b505af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129991906122f6565b6112a3908361276c565b9150806112af8161283d565b915050610fe7565b50336000908152600b602090815260408083208784529091529020546fffffffffffffffffffffffffffffffff16156113ea57336000908152600b6020908152604080832087845280835281842054600a845291909320929091526fffffffffffffffffffffffffffffffff81169160030190700100000000000000000000000000000000900460ff16600281111561136057634e487b7160e01b600052602160045260246000fd5b6003811061137e57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff166113b391906127b8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b6040518060400160405280826fffffffffffffffffffffffffffffffff16815260200184600281111561142d57634e487b7160e01b600052602160045260246000fd5b9052336000908152600b602090815260408083208884528252909120825181546fffffffffffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffff0000000000000000000000000000000082168117835592840151919283917fffffffffffffffffffffffffffffff000000000000000000000000000000000016177001000000000000000000000000000000008360028111156114e557634e487b7160e01b600052602160045260246000fd5b021790555050506000848152600a60205260409020819060030184600281111561151f57634e487b7160e01b600052602160045260246000fd5b6003811061153d57634e487b7160e01b600052603260045260246000fd5b600291828204019190066010028282829054906101000a90046fffffffffffffffffffffffffffffffff16611572919061276c565b82546fffffffffffffffffffffffffffffffff9182166101009390930a928302919092021990911617905550336000818152600b602090815260408083208884529091529081902090518692917f79597d31752b5a254be8f219c055ebfefe925e085d99c7b04b0883298b356951916115eb919061265e565b60405180910390a36fffffffffffffffffffffffffffffffff1695945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146116755760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b6116ad8173ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120805460ff19169091179055565b50565b8483146116ff5760405162461bcd60e51b815260206004820152601560248201527f6172726179206c656e677468206d69736d6174636800000000000000000000006044820152606401610560565b8461174c5760405162461bcd60e51b815260206004820152600e60248201527f656d7074792070726f706f73616c0000000000000000000000000000000000006044820152606401610560565b600086868686604051602001611765949392919061245c565b60408051601f19818403018152919052805160209091012090506000805b878110156118c45760006117fc8888848181106117b057634e487b7160e01b600052603260045260246000fd5b90506020028101906117c291906126b4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d9492505050565b90506000600860008c8c8681811061182457634e487b7160e01b600052603260045260246000fd5b905060200201602081019061183991906120a1565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081207fffffffff00000000000000000000000000000000000000000000000000000000861682529092529020549050801561189d57806118a1565b6003545b9050838111156118af578093505b505080806118bc9061283d565b915050611783565b506005546004546118d590436127a0565b6118df91906127a0565b841161192d5760405162461bcd60e51b815260206004820152601a60248201527f65787069726573206265666f726520766f74696e6720656e64730000000000006044820152606401610560565b6040518060e0016040528083815260200160014361194b91906127e9565b6fffffffffffffffffffffffffffffffff1681526020016004544361197091906127a0565b6fffffffffffffffffffffffffffffffff1681526020016005546004544361199891906127a0565b6119a291906127a0565b6fffffffffffffffffffffffffffffffff168152602001826fffffffffffffffffffffffffffffffff168152602001600a60006007548152602001908152602001600020600301600380602002604051908101604052809291908260038015611a64576020028201916000905b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611a0f5790505b50505091835250506fffffffffffffffffffffffffffffffff8681166020928301526007546000908152600a835260409081902084518155928401519084015190821670010000000000000000000000000000000091831682021760018401556060840151608085015190831692160217600282015560a0820151611aef9060038084019190611dbd565b5060c08201518160050160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509050506000611b808d8d80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7792508e91508f9050612800565b60075487610f00565b90506000600654831115611b9657600654611b98565b825b3360009081526001602052604090205490915060ff16611c025780821015611c025760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e7420766f74696e6720706f776572000000000000006044820152606401610560565b7fafbd5d299242bf861d198949ad835672e2e35b2e1838cee606a0b5aec2b4fa426007544360045443611c3591906127a0565b600554600454611c4590436127a0565b611c4f91906127a0565b60408051948552602085019390935291830152606082015260800160405180910390a1600160076000828254611c8591906127a0565b90915550505050505050505050505050505050565b611ca2611e7d565b6000828152600a60205260408082208151606081019283905292600391820192908390855b82829054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020019060100190602082600f01049283019260010382029150808411611cc7579050505050505090505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8f5760405162461bcd60e51b815260206004820152601060248201527f53656e646572206e6f74206f776e6572000000000000000000000000000000006044820152606401610560565b600655565b602001517ffffffffff00000000000000000000000000000000000000000000000000000001690565b600283019183908215611e6d5791602002820160005b83821115611e2f57835183826101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055509260200192601001602081600f01049283019260010302611dd3565b8015611e6b5782816101000a8154906fffffffffffffffffffffffffffffffff0219169055601001602081600f01049283019260010302611e2f565b505b50611e79929150611e9b565b5090565b60405180606001604052806003906020820280368337509192915050565b5b80821115611e795760008155600101611e9c565b6000611ec3611ebe84612748565b612717565b83815290506020808201908360005b86811015611f525781358601601f8981830112611eee57600080fd5b813567ffffffffffffffff811115611f0857611f0861288c565b611f1986601f198484011601612717565b91508082528a86828501011115611f2f57600080fd5b808684018784013760009082018601528552509282019290820190600101611ed2565b505050509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611d2357600080fd5b60008083601f840112611f92578182fd5b50813567ffffffffffffffff811115611fa9578182fd5b6020830191508360208260051b8501011115611fc457600080fd5b9250929050565b600082601f830112611fdb578081fd5b81356020611feb611ebe83612748565b80838252828201915082860187848660051b890101111561200a578586fd5b855b8581101561202f5761201d82611f5d565b8452928401929084019060010161200c565b5090979650505050505050565b600082601f83011261204c578081fd5b61205b83833560208501611eb0565b9392505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2357600080fd5b803560038110611d2357600080fd5b6000602082840312156120b2578081fd5b61205b82611f5d565b600080604083850312156120cd578081fd5b6120d683611f5d565b9150602083013580151581146120ea578182fd5b809150509250929050565b60008060408385031215612107578182fd5b61211083611f5d565b915061211e60208401612062565b90509250929050565b60008060006060848603121561213b578081fd5b61214484611f5d565b925061215260208501612062565b9150604084013590509250925092565b60008060408385031215612174578182fd5b61217d83611f5d565b946020939093013593505050565b60008060008060008060008060008060c08b8d0312156121a9578586fd5b8a3567ffffffffffffffff808211156121c0578788fd5b6121cc8e838f01611f81565b909c509a5060208d01359150808211156121e4578788fd5b6121f08e838f01611f81565b909a50985060408d0135915080821115612208578788fd5b6122148e838f01611f81565b909850965060608d013591508082111561222c578586fd5b506122398d828e01611f81565b90955093505060808b0135915061225260a08c01612092565b90509295989b9194979a5092959850565b60008060008060808587031215612278578384fd5b843567ffffffffffffffff8082111561228f578586fd5b61229b88838901611fcb565b955060208701359150808211156122b0578485fd5b506122bd8782880161203c565b935050604085013591506122d360608601612092565b905092959194509250565b6000602082840312156122ef578081fd5b5035919050565b600060208284031215612307578081fd5b5051919050565b600080600060608486031215612322578081fd5b83359250602084013567ffffffffffffffff80821115612340578283fd5b61234c87838801611fcb565b93506040860135915080821115612361578283fd5b5061236e8682870161203c565b9150509250925092565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526123ba81602086016020860161280d565b601f01601f19169290920160200192915050565b600381106123ec57634e487b7160e01b600052602160045260246000fd5b9052565b6000825161240281846020870161280d565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff851682526fffffffffffffffffffffffffffffffff841660208301526060604083015261245360608301846123a2565b95945050505050565b6040808252810184905260008560608301825b878110156124b3576124a28261248485611f5d565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b60209390930192915060010161246f565b506020915083810382850152808582528282019050828660051b83010187855b8881101561255c57601f1985840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18b3603018112612515578788fd5b8a01803567ffffffffffffffff81111561252d578889fd5b8036038c131561253b578889fd5b61254885828a8501612378565b9588019594505050908501906001016124d3565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b828110156125bd57815173ffffffffffffffffffffffffffffffffffffffff16845260208401935090840190600101612589565b50505083810382850152845180825282820190600581901b83018401878501865b8381101561260c57601f198684030185526125fa8383516123a2565b948701949250908601906001016125de565b50909998505050505050505050565b60608101818360005b60038110156126555781516fffffffffffffffffffffffffffffffff16835260209283019290910190600101612624565b50505092915050565b81546fffffffffffffffffffffffffffffffff811682526040820190610e8c60208401608083901c60ff166123ce565b6fffffffffffffffffffffffffffffffff831681526040810161205b60208301846123ce565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126126e8578283fd5b83018035915067ffffffffffffffff821115612702578283fd5b602001915036819003821315611fc457600080fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156127405761274061288c565b604052919050565b600067ffffffffffffffff8211156127625761276261288c565b5060051b60200190565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561279757612797612876565b01949350505050565b600082198211156127b3576127b3612876565b500190565b60006fffffffffffffffffffffffffffffffff838116908316818110156127e1576127e1612876565b039392505050565b6000828210156127fb576127fb612876565b500390565b600061205b368484611eb0565b60005b83811015612828578181015183820152602001612810565b83811115612837576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561286f5761286f612876565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220919e974d6b897854e24ebd54b43598638fad3d71fe942e39a565ca6fd02871c764736f6c63430008030033", + linkReferences: {}, + deployedLinkReferences: {}, } as const; diff --git a/packages/evm-client-viem/integration-tests/createReadContract.test.ts b/packages/evm-client-viem/integration-tests/createReadContract.test.ts index 7308961..4deae4d 100644 --- a/packages/evm-client-viem/integration-tests/createReadContract.test.ts +++ b/packages/evm-client-viem/integration-tests/createReadContract.test.ts @@ -1,21 +1,21 @@ -import { CoreVoting } from 'integration-tests/artifacts/CoreVoting'; -import { createCachedReadContract } from 'src/contract/createCachedReadContract'; -import { createPublicClient, http } from 'viem'; -import { describe, it } from 'vitest'; +import { CoreVoting } from "integration-tests/artifacts/CoreVoting"; +import { createCachedReadContract } from "src/contract/createCachedReadContract"; +import { createPublicClient, http } from "viem"; +import { describe, it } from "vitest"; -describe.todo('integration', () => { - it('It fetches events', async () => { +describe.todo("integration", () => { + it("It fetches events", async () => { const client = createPublicClient({ - transport: http('http://localhost:8545'), + transport: http("http://localhost:8545"), }); const coreVotingContract = createCachedReadContract({ abi: CoreVoting.abi, - address: '0xe7f1725e7734ce288f8367e1bb143e90bb3f0512', + address: "0xe7f1725e7734ce288f8367e1bb143e90bb3f0512", publicClient: client, }); - const result = await coreVotingContract.getEvents('ProposalCreated'); - console.log('result:', result); + const result = await coreVotingContract.getEvents("ProposalCreated"); + console.log("result:", result); }); }); diff --git a/packages/evm-client-viem/package.json b/packages/evm-client-viem/package.json index cce5b9d..600ce54 100644 --- a/packages/evm-client-viem/package.json +++ b/packages/evm-client-viem/package.json @@ -18,14 +18,11 @@ }, "typesVersions": { "*": { - "stubs": [ - "./dist/stubs.d.ts" - ] + "stubs": ["./dist/stubs.d.ts"] } }, "scripts": { "build": "tsup", - "lint": "eslint .", "test:watch": "vitest", "test": "vitest run", "test:integration": "vitest run integration", @@ -45,7 +42,6 @@ "@delvtech/evm-client": "0.5.1" }, "devDependencies": { - "@repo/eslint-config": "*", "@repo/typescript-config": "*", "sinon": "^17.0.1", "tsconfig-paths": "^4.2.0", @@ -58,7 +54,5 @@ "publishConfig": { "access": "public" }, - "files": [ - "dist" - ] + "files": ["dist"] } diff --git a/packages/evm-client-viem/src/contract/createCachedReadContract.ts b/packages/evm-client-viem/src/contract/createCachedReadContract.ts index 9528d25..2fba9c7 100644 --- a/packages/evm-client-viem/src/contract/createCachedReadContract.ts +++ b/packages/evm-client-viem/src/contract/createCachedReadContract.ts @@ -1,13 +1,13 @@ import { - CachedReadContract, - SimpleCache, + type CachedReadContract, + type SimpleCache, createCachedReadContract as baseFactory, -} from '@delvtech/evm-client'; +} from "@delvtech/evm-client"; import { - CreateReadContractOptions, + type CreateReadContractOptions, createReadContract, -} from 'src/contract/createReadContract'; -import { Abi } from 'viem'; +} from "src/contract/createReadContract"; +import type { Abi } from "viem"; export interface CreateCachedReadContractOptions extends CreateReadContractOptions { diff --git a/packages/evm-client-viem/src/contract/createCachedReadWriteContract.ts b/packages/evm-client-viem/src/contract/createCachedReadWriteContract.ts index e88b1da..5da447d 100644 --- a/packages/evm-client-viem/src/contract/createCachedReadWriteContract.ts +++ b/packages/evm-client-viem/src/contract/createCachedReadWriteContract.ts @@ -1,13 +1,13 @@ import { - CachedReadWriteContract, - SimpleCache, + type CachedReadWriteContract, + type SimpleCache, createCachedReadWriteContract as baseFactory, -} from '@delvtech/evm-client'; +} from "@delvtech/evm-client"; import { - ReadWriteContractOptions, + type ReadWriteContractOptions, createReadWriteContract, -} from 'src/contract/createReadWriteContract'; -import { Abi } from 'viem'; +} from "src/contract/createReadWriteContract"; +import type { Abi } from "viem"; export interface CreateCachedReadWriteContractOptions extends ReadWriteContractOptions { diff --git a/packages/evm-client-viem/src/contract/createReadContract.ts b/packages/evm-client-viem/src/contract/createReadContract.ts index 7cc7258..6cd0b3e 100644 --- a/packages/evm-client-viem/src/contract/createReadContract.ts +++ b/packages/evm-client-viem/src/contract/createReadContract.ts @@ -1,24 +1,24 @@ import { - AbiObjectType, - DecodedFunctionData, - FunctionName, - FunctionReturn, - ReadContract, - ReadWriteContract, + type AbiObjectType, + type DecodedFunctionData, + type FunctionName, + type FunctionReturn, + type ReadContract, + type ReadWriteContract, arrayToObject, objectToArray, -} from '@delvtech/evm-client'; -import { createSimulateContractParameters } from 'src/contract/utils/createSimulateContractParameters'; +} from "@delvtech/evm-client"; +import { createSimulateContractParameters } from "src/contract/utils/createSimulateContractParameters"; import { - Abi, - Address, - PublicClient, - WalletClient, + type Abi, + type Address, + type PublicClient, + type WalletClient, decodeFunctionData, encodeFunctionData, -} from 'viem'; -import { createReadWriteContract } from './createReadWriteContract'; -import { outputToFriendly } from './utils/outputToFriendly'; +} from "viem"; +import { createReadWriteContract } from "./createReadWriteContract"; +import { outputToFriendly } from "./utils/outputToFriendly"; export interface CreateReadContractOptions { abi: TAbi; @@ -28,6 +28,9 @@ export interface CreateReadContractOptions { export interface ViemReadContract extends ReadContract { + /** + * Connect a signer to upgrade the contract to a read-write contract. + */ connectWallet(walletClient: WalletClient): ReadWriteContract; } @@ -44,9 +47,6 @@ export function createReadContract({ abi, address, - /** - * Connect a signer to upgrade the contract to a read-write contract. - */ connectWallet(walletClient: WalletClient) { return createReadWriteContract({ address, @@ -60,9 +60,9 @@ export function createReadContract({ async read(functionName, args, options) { const argsArray = objectToArray({ abi, - type: 'function', + type: "function", name: functionName, - kind: 'inputs', + kind: "inputs", value: args, }); @@ -84,9 +84,9 @@ export function createReadContract({ async simulateWrite(functionName, args, options) { const argsArray = objectToArray({ abi, - type: 'function', + type: "function", name: functionName, - kind: 'inputs', + kind: "inputs", value: args, }); @@ -110,8 +110,8 @@ export function createReadContract({ address, abi: abi as Abi, eventName: eventName as string, - fromBlock: options?.fromBlock ?? 'earliest', - toBlock: options?.toBlock ?? 'latest', + fromBlock: options?.fromBlock ?? "earliest", + toBlock: options?.toBlock ?? "latest", args: options?.filter, }); @@ -119,12 +119,12 @@ export function createReadContract({ const objectArgs = Array.isArray(args) ? arrayToObject({ abi: abi as Abi, - type: 'event', + type: "event", name: eventName, - kind: 'inputs', + kind: "inputs", values: args, }) - : (args as AbiObjectType); + : (args as AbiObjectType); return { args: objectArgs, @@ -139,9 +139,9 @@ export function createReadContract({ encodeFunctionData(functionName, args) { const arrayArgs = objectToArray({ abi: abi, - type: 'function', + type: "function", name: functionName, - kind: 'inputs', + kind: "inputs", value: args, }); @@ -166,9 +166,9 @@ export function createReadContract({ args: arrayToObject({ // Cast to allow any array type for values abi: abi as Abi, - type: 'function', + type: "function", name: functionName, - kind: 'inputs', + kind: "inputs", values: arrayArgs, }), functionName, diff --git a/packages/evm-client-viem/src/contract/createReadWriteContract.ts b/packages/evm-client-viem/src/contract/createReadWriteContract.ts index 995e108..03c69ef 100644 --- a/packages/evm-client-viem/src/contract/createReadWriteContract.ts +++ b/packages/evm-client-viem/src/contract/createReadWriteContract.ts @@ -1,14 +1,14 @@ import { objectToArray, - ReadContract, - ReadWriteContract, -} from '@delvtech/evm-client'; + type ReadContract, + type ReadWriteContract, +} from "@delvtech/evm-client"; import { createReadContract, - CreateReadContractOptions, -} from 'src/contract/createReadContract'; -import { createSimulateContractParameters } from 'src/contract/utils/createSimulateContractParameters'; -import { Abi, WalletClient } from 'viem'; + type CreateReadContractOptions, +} from "src/contract/createReadContract"; +import { createSimulateContractParameters } from "src/contract/utils/createSimulateContractParameters"; +import type { Abi, WalletClient } from "viem"; export interface ReadWriteContractOptions extends CreateReadContractOptions { @@ -52,9 +52,9 @@ export function createReadWriteContract({ const arrayArgs = objectToArray({ abi: abi, - type: 'function', + type: "function", name: functionName, - kind: 'inputs', + kind: "inputs", value: args, }); diff --git a/packages/evm-client-viem/src/contract/utils/createSimulateContractParameters.ts b/packages/evm-client-viem/src/contract/utils/createSimulateContractParameters.ts index 0c2a19f..3ae91c9 100644 --- a/packages/evm-client-viem/src/contract/utils/createSimulateContractParameters.ts +++ b/packages/evm-client-viem/src/contract/utils/createSimulateContractParameters.ts @@ -1,4 +1,4 @@ -import { ContractWriteOptions } from '@delvtech/evm-client'; +import type { ContractWriteOptions } from "@delvtech/evm-client"; /** * Get parameters for `simulateContract` from `ContractWriteOptions` @@ -14,7 +14,7 @@ export function createSimulateContractParameters( maxFeePerGas, maxPriorityFeePerGas, nonce, - value + value, } = options || {}; const gasPriceOptions = @@ -33,7 +33,7 @@ export function createSimulateContractParameters( } type SimulateContractParameters = { - accessList?: ContractWriteOptions['accessList']; + accessList?: ContractWriteOptions["accessList"]; account?: `0x${string}`; gas?: bigint; nonce?: number; diff --git a/packages/evm-client-viem/src/contract/utils/outputToFriendly.ts b/packages/evm-client-viem/src/contract/utils/outputToFriendly.ts index 34fa6de..ea06b06 100644 --- a/packages/evm-client-viem/src/contract/utils/outputToFriendly.ts +++ b/packages/evm-client-viem/src/contract/utils/outputToFriendly.ts @@ -1,9 +1,9 @@ import { - FunctionReturn, + type FunctionReturn, arrayToFriendly, getAbiEntry, -} from '@delvtech/evm-client'; -import { Abi } from 'viem'; +} from "@delvtech/evm-client"; +import type { Abi } from "viem"; export function outputToFriendly({ abi, @@ -21,7 +21,7 @@ export function outputToFriendly({ // (tuple) parameter. const abiEntry = getAbiEntry({ abi, - type: 'function', + type: "function", name: functionName, }); if (abiEntry.outputs.length === 1) { @@ -30,9 +30,9 @@ export function outputToFriendly({ return arrayToFriendly({ abi: abi as Abi, - type: 'function', + type: "function", name: functionName, - kind: 'outputs', + kind: "outputs", values: output as unknown[], }) as FunctionReturn; } diff --git a/packages/evm-client-viem/src/index.ts b/packages/evm-client-viem/src/index.ts index 6de2a8a..27bb04b 100644 --- a/packages/evm-client-viem/src/index.ts +++ b/packages/evm-client-viem/src/index.ts @@ -2,33 +2,33 @@ export { createCachedReadContract, type CreateCachedReadContractOptions, -} from 'src/contract/createCachedReadContract'; +} from "src/contract/createCachedReadContract"; export { createCachedReadWriteContract, type CreateCachedReadWriteContractOptions, -} from 'src/contract/createCachedReadWriteContract'; +} from "src/contract/createCachedReadWriteContract"; export { createReadContract, type CreateReadContractOptions, type ViemReadContract, -} from 'src/contract/createReadContract'; +} from "src/contract/createReadContract"; export { createReadWriteContract, type ReadWriteContractOptions, -} from 'src/contract/createReadWriteContract'; +} from "src/contract/createReadWriteContract"; // Network -export { createNetwork } from 'src/network/createNetwork'; +export { createNetwork } from "src/network/createNetwork"; // Re-exports -export * from '@delvtech/evm-client/cache'; +export * from "@delvtech/evm-client/cache"; export { arrayToFriendly, arrayToObject, getAbiEntry, objectToArray, -} from '@delvtech/evm-client/contract'; +} from "@delvtech/evm-client/contract"; export type { AbiArrayType, AbiEntry, @@ -57,7 +57,7 @@ export type { FunctionReturn, ReadContract, ReadWriteContract, -} from '@delvtech/evm-client/contract'; +} from "@delvtech/evm-client/contract"; -export * from '@delvtech/evm-client/errors'; -export * from '@delvtech/evm-client/network'; +export * from "@delvtech/evm-client/errors"; +export * from "@delvtech/evm-client/network"; diff --git a/packages/evm-client-viem/src/network/createNetwork.ts b/packages/evm-client-viem/src/network/createNetwork.ts index 60068fb..672fc39 100644 --- a/packages/evm-client-viem/src/network/createNetwork.ts +++ b/packages/evm-client-viem/src/network/createNetwork.ts @@ -1,10 +1,10 @@ -import { Network } from '@delvtech/evm-client'; +import type { Network } from "@delvtech/evm-client"; import { - GetBalanceParameters, - PublicClient, - TransactionLegacy, + type GetBalanceParameters, + type PublicClient, + type TransactionLegacy, rpcTransactionType, -} from 'viem'; +} from "viem"; export function createNetwork(publicClient: PublicClient): Network { return { diff --git a/packages/evm-client-viem/src/stubs.ts b/packages/evm-client-viem/src/stubs.ts index e8e8ca1..363f08f 100644 --- a/packages/evm-client-viem/src/stubs.ts +++ b/packages/evm-client-viem/src/stubs.ts @@ -1 +1 @@ -export * from '@delvtech/evm-client/stubs'; +export * from "@delvtech/evm-client/stubs"; diff --git a/packages/evm-client-viem/tsup.config.ts b/packages/evm-client-viem/tsup.config.ts index 5da7988..cfe2fee 100644 --- a/packages/evm-client-viem/tsup.config.ts +++ b/packages/evm-client-viem/tsup.config.ts @@ -1,8 +1,8 @@ -import { defineConfig } from 'tsup'; +import { defineConfig } from "tsup"; export default defineConfig({ - entry: ['src/index.ts', 'src/stubs.ts'], - format: ['esm'], + entry: ["src/index.ts", "src/stubs.ts"], + format: ["esm"], sourcemap: true, dts: true, clean: true, diff --git a/packages/evm-client-viem/vite.config.ts b/packages/evm-client-viem/vite.config.ts index cc40ce7..3b5ea6b 100644 --- a/packages/evm-client-viem/vite.config.ts +++ b/packages/evm-client-viem/vite.config.ts @@ -1,5 +1,5 @@ -import tsconfigPaths from 'vite-tsconfig-paths'; -import { defineConfig } from 'vitest/config'; +import tsconfigPaths from "vite-tsconfig-paths"; +import { defineConfig } from "vitest/config"; export default defineConfig({ plugins: [tsconfigPaths() as any], diff --git a/packages/evm-client/.eslintrc b/packages/evm-client/.eslintrc deleted file mode 100644 index 801fd67..0000000 --- a/packages/evm-client/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import("eslint").Linter.Config} */ -{ - "root": true, - "extends": ["@repo/eslint-config/base.js"], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": true, - }, -} diff --git a/packages/evm-client/package.json b/packages/evm-client/package.json index 09ca1db..5ab65ef 100644 --- a/packages/evm-client/package.json +++ b/packages/evm-client/package.json @@ -32,26 +32,15 @@ }, "typesVersions": { "*": { - "cache": [ - "./dist/cache.d.ts" - ], - "contract": [ - "./dist/contract.d.ts" - ], - "errors": [ - "./dist/errors.d.ts" - ], - "network": [ - "./dist/network.d.ts" - ], - "stubs": [ - "./dist/stubs.d.ts" - ] + "cache": ["./dist/cache.d.ts"], + "contract": ["./dist/contract.d.ts"], + "errors": ["./dist/errors.d.ts"], + "network": ["./dist/network.d.ts"], + "stubs": ["./dist/stubs.d.ts"] } }, "scripts": { "build": "tsup", - "lint": "eslint .", "test:watch": "vitest --reporter=verbose", "test": "vitest run", "typecheck": "tsc --noEmit", @@ -72,12 +61,11 @@ "lru-cache": "^10.0.1" }, "devDependencies": { - "@repo/eslint-config": "*", "@repo/typescript-config": "*", "@types/sinon": "^17.0.3", "abitype": "^1.0.0", "dotenv": "^16.4.2", - "eslint": "^8.56.0", + "fast-json-stable-stringify": "^2.1.0", "sinon": "^17.0.1", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", @@ -89,7 +77,5 @@ "publishConfig": { "access": "public" }, - "files": [ - "dist" - ] + "files": ["dist"] } diff --git a/packages/evm-client/src/base/testing/IERC20.ts b/packages/evm-client/src/base/testing/IERC20.ts index 2aad6b8..ba42814 100644 --- a/packages/evm-client/src/base/testing/IERC20.ts +++ b/packages/evm-client/src/base/testing/IERC20.ts @@ -3,222 +3,222 @@ export const IERC20 = { { constant: true, inputs: [], - name: 'name', + name: "name", outputs: [ { - name: '', - type: 'string', + name: "", + type: "string", }, ], payable: false, - stateMutability: 'view', - type: 'function', + stateMutability: "view", + type: "function", }, { constant: false, inputs: [ { - name: 'spender', - type: 'address', + name: "spender", + type: "address", }, { - name: 'value', - type: 'uint256', + name: "value", + type: "uint256", }, ], - name: 'approve', + name: "approve", outputs: [ { - name: '', - type: 'bool', + name: "", + type: "bool", }, ], payable: false, - stateMutability: 'nonpayable', - type: 'function', + stateMutability: "nonpayable", + type: "function", }, { constant: true, inputs: [], - name: 'totalSupply', + name: "totalSupply", outputs: [ { - name: '', - type: 'uint256', + name: "", + type: "uint256", }, ], payable: false, - stateMutability: 'view', - type: 'function', + stateMutability: "view", + type: "function", }, { constant: false, inputs: [ { - name: 'from', - type: 'address', + name: "from", + type: "address", }, { - name: 'to', - type: 'address', + name: "to", + type: "address", }, { - name: 'value', - type: 'uint256', + name: "value", + type: "uint256", }, ], - name: 'transferFrom', + name: "transferFrom", outputs: [ { - name: '', - type: 'bool', + name: "", + type: "bool", }, ], payable: false, - stateMutability: 'nonpayable', - type: 'function', + stateMutability: "nonpayable", + type: "function", }, { constant: true, inputs: [], - name: 'decimals', + name: "decimals", outputs: [ { - name: '', - type: 'uint8', + name: "", + type: "uint8", }, ], payable: false, - stateMutability: 'view', - type: 'function', + stateMutability: "view", + type: "function", }, { constant: true, inputs: [ { - name: 'owner', - type: 'address', + name: "owner", + type: "address", }, ], - name: 'balanceOf', + name: "balanceOf", outputs: [ { - name: 'balance', - type: 'uint256', + name: "balance", + type: "uint256", }, ], payable: false, - stateMutability: 'view', - type: 'function', + stateMutability: "view", + type: "function", }, { constant: true, inputs: [], - name: 'symbol', + name: "symbol", outputs: [ { - name: '', - type: 'string', + name: "", + type: "string", }, ], payable: false, - stateMutability: 'view', - type: 'function', + stateMutability: "view", + type: "function", }, { constant: false, inputs: [ { - name: 'to', - type: 'address', + name: "to", + type: "address", }, { - name: 'value', - type: 'uint256', + name: "value", + type: "uint256", }, ], - name: 'transfer', + name: "transfer", outputs: [ { - name: '', - type: 'bool', + name: "", + type: "bool", }, ], payable: false, - stateMutability: 'nonpayable', - type: 'function', + stateMutability: "nonpayable", + type: "function", }, { constant: true, inputs: [ { - name: 'owner', - type: 'address', + name: "owner", + type: "address", }, { - name: 'spender', - type: 'address', + name: "spender", + type: "address", }, ], - name: 'allowance', + name: "allowance", outputs: [ { - name: '', - type: 'uint256', + name: "", + type: "uint256", }, ], payable: false, - stateMutability: 'view', - type: 'function', + stateMutability: "view", + type: "function", }, { payable: true, - stateMutability: 'payable', - type: 'fallback', + stateMutability: "payable", + type: "fallback", }, { anonymous: false, inputs: [ { indexed: true, - name: 'owner', - type: 'address', + name: "owner", + type: "address", }, { indexed: true, - name: 'spender', - type: 'address', + name: "spender", + type: "address", }, { indexed: false, - name: 'value', - type: 'uint256', + name: "value", + type: "uint256", }, ], - name: 'Approval', - type: 'event', + name: "Approval", + type: "event", }, { anonymous: false, inputs: [ { indexed: true, - name: 'from', - type: 'address', + name: "from", + type: "address", }, { indexed: true, - name: 'to', - type: 'address', + name: "to", + type: "address", }, { indexed: false, - name: 'value', - type: 'uint256', + name: "value", + type: "uint256", }, ], - name: 'Transfer', - type: 'event', + name: "Transfer", + type: "event", }, ], } as const; diff --git a/packages/evm-client/src/base/testing/accounts.ts b/packages/evm-client/src/base/testing/accounts.ts index 596e449..f04008e 100644 --- a/packages/evm-client/src/base/testing/accounts.ts +++ b/packages/evm-client/src/base/testing/accounts.ts @@ -1,3 +1,3 @@ -export const BOB = '0xBob'; -export const ALICE = '0xAlice'; -export const NANCY = '0xNancy'; +export const BOB = "0xBob"; +export const ALICE = "0xAlice"; +export const NANCY = "0xNancy"; diff --git a/packages/evm-client/src/cache/factories/createLruSimpleCache.ts b/packages/evm-client/src/cache/factories/createLruSimpleCache.ts index 8ef659a..70db363 100644 --- a/packages/evm-client/src/cache/factories/createLruSimpleCache.ts +++ b/packages/evm-client/src/cache/factories/createLruSimpleCache.ts @@ -1,6 +1,6 @@ -import stringify from 'fast-json-stable-stringify'; -import { LRUCache } from 'lru-cache'; -import { SimpleCache, SimpleCacheKey } from 'src/cache/types/SimpleCache'; +import stringify from "fast-json-stable-stringify"; +import { LRUCache } from "lru-cache"; +import type { SimpleCache, SimpleCacheKey } from "src/cache/types/SimpleCache"; /** * An LRU (Least Recently Used) implementation of the `SimpleCache` interface. diff --git a/packages/evm-client/src/cache/utils/createSimpleCacheKey.ts b/packages/evm-client/src/cache/utils/createSimpleCacheKey.ts index 9ea9618..76a57be 100644 --- a/packages/evm-client/src/cache/utils/createSimpleCacheKey.ts +++ b/packages/evm-client/src/cache/utils/createSimpleCacheKey.ts @@ -1,4 +1,4 @@ -import { SimpleCacheKey } from 'src/cache/types/SimpleCache'; +import type { SimpleCacheKey } from "src/cache/types/SimpleCache"; type DefinedValue = NonNullable< Record | string | number | boolean | symbol @@ -22,12 +22,12 @@ type DefinedValue = NonNullable< */ export function createSimpleCacheKey(rawKey: DefinedValue): SimpleCacheKey { switch (typeof rawKey) { - case 'string': - case 'number': - case 'boolean': + case "string": + case "number": + case "boolean": return rawKey; - case 'object': { + case "object": { if (Array.isArray(rawKey)) { return rawKey.map((value) => // undefined or null values are converted to null to follow the diff --git a/packages/evm-client/src/contract/factories/CachedReadContract.test.ts b/packages/evm-client/src/contract/factories/CachedReadContract.test.ts deleted file mode 100644 index 3ccc2d5..0000000 --- a/packages/evm-client/src/contract/factories/CachedReadContract.test.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { IERC20 } from 'src/base/testing/IERC20'; -import { ALICE, BOB } from 'src/base/testing/accounts'; -import { ReadContractStub } from 'src/contract/stubs/ReadContractStub'; -import { Event } from 'src/contract/types/Event'; -import { describe, expect, it } from 'vitest'; -import { createCachedReadContract } from './createCachedReadContract'; - -const ERC20ABI = IERC20.abi; - -describe('createCachedReadContract', () => { - it('caches the read function', async () => { - const contract = new ReadContractStub(ERC20ABI); - const cachedContract = createCachedReadContract({ contract }); - - const stubbedValue = '0x123abc'; - contract.stubRead({ - functionName: 'name', - value: stubbedValue, - }); - - const value = await cachedContract.read('name'); - expect(value).toBe(stubbedValue); - - const value2 = await cachedContract.read('name'); - expect(value2).toBe(stubbedValue); - - const stub = contract.getReadStub('name'); - expect(stub?.callCount).toBe(1); - }); - - it('caches the getEvents function', async () => { - const contract = new ReadContractStub(ERC20ABI); - const cachedContract = createCachedReadContract({ contract }); - - const stubbedEvents: Event[] = [ - { - eventName: 'Transfer', - args: { - from: ALICE, - to: BOB, - value: 100n, - }, - blockNumber: 1n, - data: '0x123abc', - transactionHash: '0x123abc', - }, - ]; - contract.stubEvents('Transfer', undefined, stubbedEvents); - - const events = await cachedContract.getEvents('Transfer'); - expect(events).toBe(stubbedEvents); - - const events2 = await cachedContract.getEvents('Transfer'); - expect(events2).toBe(stubbedEvents); - - const stub = contract.getEventsStub('Transfer'); - expect(stub?.callCount).toBe(1); - }); - - it('deletes cached reads', async () => { - const contract = new ReadContractStub(ERC20ABI); - const cachedContract = createCachedReadContract({ contract }); - - const stubbedValue = 100n; - contract.stubRead({ functionName: 'balanceOf', value: stubbedValue }); - - const value = await cachedContract.read('balanceOf', { owner: '0x123abc' }); - expect(value).toBe(stubbedValue); - - cachedContract.deleteRead('balanceOf', { owner: '0x123abc' }); - - const value2 = await cachedContract.read('balanceOf', { - owner: '0x123abc', - }); - expect(value2).toBe(stubbedValue); - - const stub = contract.getReadStub('balanceOf'); - expect(stub?.callCount).toBe(2); - }); - - it('deletes cached reads from function name only', async () => { - const contract = new ReadContractStub(ERC20ABI); - const cachedContract = createCachedReadContract({ contract }); - - contract.stubRead({ - functionName: 'balanceOf', - value: 100n, - args: { owner: ALICE }, - }); - contract.stubRead({ - functionName: 'balanceOf', - value: 200n, - args: { owner: BOB }, - }); - - // Get both alice and bob's balance - const aliceValue = await cachedContract.read('balanceOf', { owner: ALICE }); - expect(aliceValue).toBe(100n); - - const bobValue = await cachedContract.read('balanceOf', { owner: BOB }); - expect(bobValue).toBe(200n); - - // Deleting anything that matches a balanceOf call - cachedContract.deleteReadsMatching('balanceOf'); - - // Request bob and alice's balance again - const aliceValue2 = await cachedContract.read('balanceOf', { - owner: ALICE, - }); - expect(aliceValue2).toBe(100n); - const bobValue2 = await cachedContract.read('balanceOf', { owner: BOB }); - expect(bobValue2).toBe(200n); - - const stub = contract.getReadStub('balanceOf'); - expect(stub?.callCount).toBe(4); - }); - - it('deletes cached reads with partial args', async () => { - const contract = new ReadContractStub(ERC20ABI); - const cachedContract = createCachedReadContract({ contract }); - - const aliceArgs = { owner: ALICE, spender: BOB } as const; - contract.stubRead({ - functionName: 'allowance', - value: 100n, - args: aliceArgs, - }); - - const bobArgs = { owner: BOB, spender: ALICE } as const; - contract.stubRead({ - functionName: 'allowance', - value: 200n, - args: bobArgs, - }); - - // Get both alice and bob's allowance - await cachedContract.read('allowance', aliceArgs); - await cachedContract.read('allowance', bobArgs); - - // Deleting any allowance calls where BOB is the spender - cachedContract.deleteReadsMatching('allowance', { spender: BOB }); - - // Request bob and alice's allowance again - await cachedContract.read('allowance', aliceArgs); - await cachedContract.read('allowance', bobArgs); - - const stub = contract.getReadStub('allowance'); - expect(stub?.callCount).toBe(3); - }); - - it('clears the cache', async () => { - const contract = new ReadContractStub(ERC20ABI); - const cachedContract = createCachedReadContract({ contract }); - - contract.stubRead({ functionName: 'balanceOf', value: 100n }); - contract.stubRead({ - functionName: 'name', - value: 'Base Token', - }); - - await cachedContract.read('balanceOf', { owner: '0x123abc' }); - await cachedContract.read('name'); - - cachedContract.clearCache(); - - await cachedContract.read('balanceOf', { owner: '0x123abc' }); - await cachedContract.read('name'); - - const stubA = contract.getReadStub('balanceOf'); - const stubB = contract.getReadStub('name'); - expect(stubA?.callCount).toBe(2); - expect(stubB?.callCount).toBe(2); - }); -}); diff --git a/packages/evm-client/src/contract/factories/createCachedReadContract.test.ts b/packages/evm-client/src/contract/factories/createCachedReadContract.test.ts new file mode 100644 index 0000000..06e2680 --- /dev/null +++ b/packages/evm-client/src/contract/factories/createCachedReadContract.test.ts @@ -0,0 +1,174 @@ +import { IERC20 } from "src/base/testing/IERC20"; +import { ALICE, BOB } from "src/base/testing/accounts"; +import { ReadContractStub } from "src/contract/stubs/ReadContractStub"; +import type { Event } from "src/contract/types/Event"; +import { describe, expect, it } from "vitest"; +import { createCachedReadContract } from "./createCachedReadContract"; + +const ERC20ABI = IERC20.abi; + +describe("createCachedReadContract", () => { + it("caches the read function", async () => { + const contract = new ReadContractStub(ERC20ABI); + const cachedContract = createCachedReadContract({ contract }); + + const stubbedValue = "0x123abc"; + contract.stubRead({ + functionName: "name", + value: stubbedValue, + }); + + const value = await cachedContract.read("name"); + expect(value).toBe(stubbedValue); + + const value2 = await cachedContract.read("name"); + expect(value2).toBe(stubbedValue); + + const stub = contract.getReadStub("name"); + expect(stub?.callCount).toBe(1); + }); + + it("caches the getEvents function", async () => { + const contract = new ReadContractStub(ERC20ABI); + const cachedContract = createCachedReadContract({ contract }); + + const stubbedEvents: Event[] = [ + { + eventName: "Transfer", + args: { + from: ALICE, + to: BOB, + value: 100n, + }, + blockNumber: 1n, + data: "0x123abc", + transactionHash: "0x123abc", + }, + ]; + contract.stubEvents("Transfer", undefined, stubbedEvents); + + const events = await cachedContract.getEvents("Transfer"); + expect(events).toBe(stubbedEvents); + + const events2 = await cachedContract.getEvents("Transfer"); + expect(events2).toBe(stubbedEvents); + + const stub = contract.getEventsStub("Transfer"); + expect(stub?.callCount).toBe(1); + }); + + it("deletes cached reads", async () => { + const contract = new ReadContractStub(ERC20ABI); + const cachedContract = createCachedReadContract({ contract }); + + const stubbedValue = 100n; + contract.stubRead({ functionName: "balanceOf", value: stubbedValue }); + + const value = await cachedContract.read("balanceOf", { owner: "0x123abc" }); + expect(value).toBe(stubbedValue); + + cachedContract.deleteRead("balanceOf", { owner: "0x123abc" }); + + const value2 = await cachedContract.read("balanceOf", { + owner: "0x123abc", + }); + expect(value2).toBe(stubbedValue); + + const stub = contract.getReadStub("balanceOf"); + expect(stub?.callCount).toBe(2); + }); + + it("deletes cached reads from function name only", async () => { + const contract = new ReadContractStub(ERC20ABI); + const cachedContract = createCachedReadContract({ contract }); + + contract.stubRead({ + functionName: "balanceOf", + value: 100n, + args: { owner: ALICE }, + }); + contract.stubRead({ + functionName: "balanceOf", + value: 200n, + args: { owner: BOB }, + }); + + // Get both alice and bob's balance + const aliceValue = await cachedContract.read("balanceOf", { owner: ALICE }); + expect(aliceValue).toBe(100n); + + const bobValue = await cachedContract.read("balanceOf", { owner: BOB }); + expect(bobValue).toBe(200n); + + // Deleting anything that matches a balanceOf call + cachedContract.deleteReadsMatching("balanceOf"); + + // Request bob and alice's balance again + const aliceValue2 = await cachedContract.read("balanceOf", { + owner: ALICE, + }); + expect(aliceValue2).toBe(100n); + const bobValue2 = await cachedContract.read("balanceOf", { owner: BOB }); + expect(bobValue2).toBe(200n); + + const stub = contract.getReadStub("balanceOf"); + expect(stub?.callCount).toBe(4); + }); + + it("deletes cached reads with partial args", async () => { + const contract = new ReadContractStub(ERC20ABI); + const cachedContract = createCachedReadContract({ contract }); + + const aliceArgs = { owner: ALICE, spender: BOB } as const; + contract.stubRead({ + functionName: "allowance", + value: 100n, + args: aliceArgs, + }); + + const bobArgs = { owner: BOB, spender: ALICE } as const; + contract.stubRead({ + functionName: "allowance", + value: 200n, + args: bobArgs, + }); + + // Get both alice and bob's allowance + await cachedContract.read("allowance", aliceArgs); + await cachedContract.read("allowance", bobArgs); + + // Deleting any allowance calls where BOB is the spender + cachedContract.deleteReadsMatching("allowance", { spender: BOB }); + + // Request bob and alice's allowance again + await cachedContract.read("allowance", aliceArgs); + await cachedContract.read("allowance", bobArgs); + + const stub = contract.getReadStub("allowance"); + expect(stub?.callCount).toBe(3); + }); + + it("clears the cache", async () => { + const contract = new ReadContractStub(ERC20ABI); + const cachedContract = createCachedReadContract({ contract }); + + contract.stubRead({ functionName: "balanceOf", value: 100n }); + contract.stubRead({ + functionName: "name", + value: "Base Token", + }); + + await cachedContract.read("balanceOf", { owner: "0x123abc" }); + await cachedContract.read("name"); + + cachedContract.clearCache(); + + await cachedContract.read("balanceOf", { owner: "0x123abc" }); + await cachedContract.read("name"); + + const stubA = contract.getReadStub("balanceOf"); + const stubB = contract.getReadStub("name"); + expect(stubA?.callCount).toBe(2); + expect(stubB?.callCount).toBe(2); + }); +}); diff --git a/packages/evm-client/src/contract/factories/createCachedReadContract.ts b/packages/evm-client/src/contract/factories/createCachedReadContract.ts index 48be026..ae51e5e 100644 --- a/packages/evm-client/src/contract/factories/createCachedReadContract.ts +++ b/packages/evm-client/src/contract/factories/createCachedReadContract.ts @@ -1,10 +1,10 @@ -import { Abi } from 'abitype'; -import isMatch from 'lodash.ismatch'; -import { createLruSimpleCache } from 'src/cache/factories/createLruSimpleCache'; -import { SimpleCache, SimpleCacheKey } from 'src/cache/types/SimpleCache'; -import { createSimpleCacheKey } from 'src/cache/utils/createSimpleCacheKey'; -import { CachedReadContract } from 'src/contract/types/CachedContract'; -import { ReadContract } from 'src/contract/types/Contract'; +import type { Abi } from "abitype"; +import isMatch from "lodash.ismatch"; +import { createLruSimpleCache } from "src/cache/factories/createLruSimpleCache"; +import type { SimpleCache, SimpleCacheKey } from "src/cache/types/SimpleCache"; +import { createSimpleCacheKey } from "src/cache/utils/createSimpleCacheKey"; +import type { CachedReadContract } from "src/contract/types/CachedContract"; +import type { ReadContract } from "src/contract/types/Contract"; // TODO: Figure out a good default cache size const DEFAULT_CACHE_SIZE = 100; @@ -54,7 +54,7 @@ export function createCachedReadContract({ cache, key: createSimpleCacheKey([ namespace, - 'read', + "read", { address: contract.address, functionName, @@ -80,7 +80,7 @@ export function createCachedReadContract({ deleteRead(functionName, args, options) { const key = createSimpleCacheKey([ namespace, - 'read', + "read", { address: contract.address, functionName, @@ -97,7 +97,7 @@ export function createCachedReadContract({ const sourceKey = createSimpleCacheKey([ namespace, - 'read', + "read", { address: contract.address, functionName, @@ -108,7 +108,7 @@ export function createCachedReadContract({ for (const [key] of cache.entries) { if ( - typeof key === 'object' && + typeof key === "object" && isMatch(key, sourceKey as SimpleCacheKey[]) ) { cache.delete(key); @@ -125,7 +125,7 @@ export function createCachedReadContract({ cache, key: createSimpleCacheKey([ namespace, - 'getEvents', + "getEvents", { address: contract.address, eventName, @@ -157,7 +157,7 @@ async function getOrSet({ callback: () => Promise | TValue; }): Promise { let value = cache.get(key); - if (typeof value !== 'undefined') { + if (typeof value !== "undefined") { return value; } diff --git a/packages/evm-client/src/contract/factories/createCachedReadWriteContract.ts b/packages/evm-client/src/contract/factories/createCachedReadWriteContract.ts index dde1692..4f4a936 100644 --- a/packages/evm-client/src/contract/factories/createCachedReadWriteContract.ts +++ b/packages/evm-client/src/contract/factories/createCachedReadWriteContract.ts @@ -1,10 +1,10 @@ -import { Abi } from 'abitype'; +import type { Abi } from "abitype"; import { - CreateCachedReadContractOptions, + type CreateCachedReadContractOptions, createCachedReadContract, -} from 'src/contract/factories/createCachedReadContract'; -import { CachedReadWriteContract } from 'src/contract/types/CachedContract'; -import { ReadWriteContract } from 'src/contract/types/Contract'; +} from "src/contract/factories/createCachedReadContract"; +import type { CachedReadWriteContract } from "src/contract/types/CachedContract"; +import type { ReadWriteContract } from "src/contract/types/Contract"; export interface CreateCachedReadWriteContractOptions extends CreateCachedReadContractOptions { @@ -42,5 +42,5 @@ export function createCachedReadWriteContract({ function isCached( contract: ReadWriteContract, ): contract is CachedReadWriteContract { - return 'clearCache' in contract; + return "clearCache" in contract; } diff --git a/packages/evm-client/src/contract/stubs/ReadContractStub.test.ts b/packages/evm-client/src/contract/stubs/ReadContractStub.test.ts index a190b36..89f6ced 100644 --- a/packages/evm-client/src/contract/stubs/ReadContractStub.test.ts +++ b/packages/evm-client/src/contract/stubs/ReadContractStub.test.ts @@ -1,56 +1,56 @@ -import { IERC20 } from 'src/base/testing/IERC20'; -import { ALICE, BOB, NANCY } from 'src/base/testing/accounts'; -import { ReadContractStub } from 'src/contract/stubs/ReadContractStub'; -import { Event } from 'src/contract/types/Event'; -import { describe, expect, it } from 'vitest'; +import { IERC20 } from "src/base/testing/IERC20"; +import { ALICE, BOB, NANCY } from "src/base/testing/accounts"; +import { ReadContractStub } from "src/contract/stubs/ReadContractStub"; +import type { Event } from "src/contract/types/Event"; +import { describe, expect, it } from "vitest"; const ERC20ABI = IERC20.abi; -describe('ReadContractStub', () => { - it('stubs the read function without args, but with options', async () => { +describe("ReadContractStub", () => { + it("stubs the read function without args, but with options", async () => { const contract = new ReadContractStub(IERC20.abi); // stub total supply contract.stubRead({ - functionName: 'totalSupply', + functionName: "totalSupply", value: 30n, // options can be specfied as well options: { blockNumber: 12n }, }); contract.stubRead({ - functionName: 'totalSupply', + functionName: "totalSupply", value: 40n, // options can be specfied as well options: { blockNumber: 16n }, }); // Now try and read them based on their args - const totalSupplyAtBlock12 = await contract.read('totalSupply', undefined, { + const totalSupplyAtBlock12 = await contract.read("totalSupply", undefined, { blockNumber: 12n, }); expect(totalSupplyAtBlock12).toBe(30n); - const totalSupplyAtBlock16 = await contract.read('totalSupply', undefined, { + const totalSupplyAtBlock16 = await contract.read("totalSupply", undefined, { blockNumber: 16n, }); expect(totalSupplyAtBlock16).toBe(40n); }); - it('stubs the read function', async () => { + it("stubs the read function", async () => { const contract = new ReadContractStub(IERC20.abi); - expect(contract.read('balanceOf', { owner: NANCY })).rejects.toThrowError(); + expect(contract.read("balanceOf", { owner: NANCY })).rejects.toThrowError(); // Stub bob and alice's balances first const bobValue = 10n; contract.stubRead({ - functionName: 'balanceOf', + functionName: "balanceOf", args: { owner: BOB }, value: bobValue, }); const aliceValue = 20n; contract.stubRead({ - functionName: 'balanceOf', + functionName: "balanceOf", args: { owner: ALICE }, value: aliceValue, // options can be specfied as well @@ -58,9 +58,9 @@ describe('ReadContractStub', () => { }); // Now try and read them based on their args - const bobResult = await contract.read('balanceOf', { owner: BOB }); + const bobResult = await contract.read("balanceOf", { owner: BOB }); const aliceResult = await contract.read( - 'balanceOf', + "balanceOf", { owner: ALICE }, { blockNumber: 10n }, ); @@ -70,21 +70,21 @@ describe('ReadContractStub', () => { // Now stub w/out any args and see if we get the default value back const defaultValue = 30n; contract.stubRead({ - functionName: 'balanceOf', + functionName: "balanceOf", value: defaultValue, }); - const defaultResult = await contract.read('balanceOf', { owner: NANCY }); + const defaultResult = await contract.read("balanceOf", { owner: NANCY }); expect(defaultResult).toBe(defaultValue); - const stub = contract.getReadStub('balanceOf'); + const stub = contract.getReadStub("balanceOf"); expect(stub?.callCount).toBe(3); }); - it('stubs the simulateWrite function', async () => { + it("stubs the simulateWrite function", async () => { const contract = new ReadContractStub(ERC20ABI); expect( - contract.simulateWrite('transferFrom', { + contract.simulateWrite("transferFrom", { from: ALICE, to: BOB, value: 100n, @@ -92,9 +92,9 @@ describe('ReadContractStub', () => { ).rejects.toThrowError(); const stubbedResult = true; - contract.stubSimulateWrite('transferFrom', stubbedResult); + contract.stubSimulateWrite("transferFrom", stubbedResult); - const result = await contract.simulateWrite('transferFrom', { + const result = await contract.simulateWrite("transferFrom", { from: ALICE, to: BOB, value: 100n, @@ -102,77 +102,77 @@ describe('ReadContractStub', () => { expect(result).toStrictEqual(stubbedResult); - const stub = contract.getSimulateWriteStub('transferFrom'); + const stub = contract.getSimulateWriteStub("transferFrom"); expect(stub?.callCount).toBe(1); }); - it('stubs the getEvents function', async () => { + it("stubs the getEvents function", async () => { const contract = new ReadContractStub(ERC20ABI); // throws an error if you forget to stub the event your requesting - expect(contract.getEvents('Transfer')).rejects.toThrowError(); + expect(contract.getEvents("Transfer")).rejects.toThrowError(); // Stub out the events when calling `getEvents` without any filter args - const stubbedAllEvents: Event[] = [ + const stubbedAllEvents: Event[] = [ { - eventName: 'Transfer', + eventName: "Transfer", args: { to: ALICE, from: BOB, value: 100n, }, blockNumber: 1n, - data: '0x123abc', - transactionHash: '0x123abc', + data: "0x123abc", + transactionHash: "0x123abc", }, { - eventName: 'Transfer', + eventName: "Transfer", args: { from: ALICE, to: BOB, value: 100n, }, blockNumber: 1n, - data: '0x123abc', - transactionHash: '0x123abc', + data: "0x123abc", + transactionHash: "0x123abc", }, ]; - contract.stubEvents('Transfer', undefined, stubbedAllEvents); + contract.stubEvents("Transfer", undefined, stubbedAllEvents); // Stub out the events when calling `getEvents` *with* filter args - const stubbedFilteredEvents: Event[] = [ + const stubbedFilteredEvents: Event[] = [ { - eventName: 'Transfer', + eventName: "Transfer", args: { to: ALICE, from: BOB, value: 100n, }, blockNumber: 1n, - data: '0x123abc', - transactionHash: '0x123abc', + data: "0x123abc", + transactionHash: "0x123abc", }, ]; contract.stubEvents( - 'Transfer', + "Transfer", { filter: { from: BOB } }, stubbedFilteredEvents, ); // getting events without any filter args should return the stub that was // specified without any filter args - const events = await contract.getEvents('Transfer'); + const events = await contract.getEvents("Transfer"); expect(events).toBe(stubbedAllEvents); - const stub = contract.getEventsStub('Transfer'); + const stub = contract.getEventsStub("Transfer"); expect(stub?.callCount).toBe(1); // getting events with filter args should return the stub that was specified // *with* filter args - const filteredEvents = await contract.getEvents('Transfer', { + const filteredEvents = await contract.getEvents("Transfer", { filter: { from: BOB }, }); expect(filteredEvents).toBe(stubbedFilteredEvents); - const filteredStub = contract.getEventsStub('Transfer', { + const filteredStub = contract.getEventsStub("Transfer", { filter: { from: BOB }, }); expect(filteredStub?.callCount).toBe(1); diff --git a/packages/evm-client/src/contract/stubs/ReadContractStub.ts b/packages/evm-client/src/contract/stubs/ReadContractStub.ts index 07143f7..813428b 100644 --- a/packages/evm-client/src/contract/stubs/ReadContractStub.ts +++ b/packages/evm-client/src/contract/stubs/ReadContractStub.ts @@ -1,7 +1,7 @@ -import { Abi } from 'abitype'; -import stringify from 'fast-safe-stringify'; -import { SinonStub, stub } from 'sinon'; -import { +import type { Abi } from "abitype"; +import stringify from "fast-safe-stringify"; +import { type SinonStub, stub } from "sinon"; +import type { ContractDecodeFunctionDataArgs, ContractEncodeFunctionDataArgs, ContractGetEventsArgs, @@ -11,14 +11,14 @@ import { ContractWriteArgs, ContractWriteOptions, ReadContract, -} from 'src/contract/types/Contract'; -import { Event, EventName } from 'src/contract/types/Event'; -import { +} from "src/contract/types/Contract"; +import type { Event, EventName } from "src/contract/types/Event"; +import type { DecodedFunctionData, FunctionArgs, FunctionName, FunctionReturn, -} from 'src/contract/types/Function'; +} from "src/contract/types/Function"; /** * A mock implementation of a `ReadContract` designed to facilitate unit @@ -37,7 +37,7 @@ export class ReadContractStub implements ReadContract { abi; - address = '0x0000000000000000000000000000000000000000' as const; + address = "0x0000000000000000000000000000000000000000" as const; // Maps to store stubs for different contract methods based on their name. protected readStubMap = new Map< @@ -49,8 +49,8 @@ export class ReadContractStub EventsStub> >(); protected simulateWriteStubMap = new Map< - FunctionName, - SimulateWriteStub> + FunctionName, + SimulateWriteStub> >(); constructor(abi: TAbi = [] as any) { @@ -78,7 +78,7 @@ export class ReadContractStub * is not previously stubbed using `stubWrite`, an error will be thrown. */ async simulateWrite< - TFunctionName extends FunctionName, + TFunctionName extends FunctionName, >( ...[functionName, args, options]: ContractWriteArgs ): Promise> { @@ -152,7 +152,7 @@ export class ReadContractStub * arguments/options.* */ stubSimulateWrite< - TFunctionName extends FunctionName, + TFunctionName extends FunctionName, >( functionName: TFunctionName, value: FunctionReturn, @@ -200,7 +200,7 @@ export class ReadContractStub * Useful for assertions in testing, such as checking call counts. */ getSimulateWriteStub< - TFunctionName extends FunctionName, + TFunctionName extends FunctionName, >( functionName: TFunctionName, ): SimulateWriteStub | undefined { @@ -229,7 +229,7 @@ export class ReadContractStub >( ...args: ContractDecodeFunctionDataArgs ): DecodedFunctionData { - throw new Error('Method not implemented.'); + throw new Error("Method not implemented."); } // TODO: @@ -238,7 +238,7 @@ export class ReadContractStub >( ...args: ContractEncodeFunctionDataArgs ): `0x${string}` { - throw new Error('Method not implemented.'); + throw new Error("Method not implemented."); } } @@ -270,7 +270,7 @@ type EventsStub< */ type SimulateWriteStub< TAbi extends Abi, - TFunctionName extends FunctionName, + TFunctionName extends FunctionName, > = SinonStub< [ args?: FunctionArgs | undefined, @@ -282,7 +282,7 @@ type SimulateWriteStub< function stableStringify(obj: Record) { // simple non-recursive stringify replacer for bigints function replacer(_: any, v: any) { - return typeof v === 'bigint' ? v.toString() : v; + return typeof v === "bigint" ? v.toString() : v; } return stringify.stableStringify(obj, replacer); diff --git a/packages/evm-client/src/contract/stubs/ReadWriteContractStub.test.ts b/packages/evm-client/src/contract/stubs/ReadWriteContractStub.test.ts index 295cef3..73589b2 100644 --- a/packages/evm-client/src/contract/stubs/ReadWriteContractStub.test.ts +++ b/packages/evm-client/src/contract/stubs/ReadWriteContractStub.test.ts @@ -1,23 +1,23 @@ -import { IERC20 } from 'src/base/testing/IERC20'; -import { ReadWriteContractStub } from 'src/contract/stubs/ReadWriteContractStub'; -import { describe, expect, it } from 'vitest'; +import { IERC20 } from "src/base/testing/IERC20"; +import { ReadWriteContractStub } from "src/contract/stubs/ReadWriteContractStub"; +import { describe, expect, it } from "vitest"; const ERC20ABI = IERC20.abi; -describe('ReadWriteContractStub', () => { - it('stubs the write function', async () => { +describe("ReadWriteContractStub", () => { + it("stubs the write function", async () => { const contract = new ReadWriteContractStub(ERC20ABI); - const stubbedValue = '0x01234'; - contract.stubWrite('transfer', stubbedValue); + const stubbedValue = "0x01234"; + contract.stubWrite("transfer", stubbedValue); - const value = await contract.write('transfer', { - to: '0x123abc', + const value = await contract.write("transfer", { + to: "0x123abc", value: 100n, }); expect(value).toBe(stubbedValue); - const stub = contract.getWriteStub('transfer'); + const stub = contract.getWriteStub("transfer"); expect(stub?.callCount).toBe(1); }); }); diff --git a/packages/evm-client/src/contract/stubs/ReadWriteContractStub.ts b/packages/evm-client/src/contract/stubs/ReadWriteContractStub.ts index a7c942f..a2cae13 100644 --- a/packages/evm-client/src/contract/stubs/ReadWriteContractStub.ts +++ b/packages/evm-client/src/contract/stubs/ReadWriteContractStub.ts @@ -1,13 +1,13 @@ -import { Abi } from 'abitype'; -import { SinonStub, stub } from 'sinon'; -import { BOB } from 'src/base/testing/accounts'; -import { ReadContractStub } from 'src/contract/stubs/ReadContractStub'; -import { +import type { Abi } from "abitype"; +import { type SinonStub, stub } from "sinon"; +import { BOB } from "src/base/testing/accounts"; +import { ReadContractStub } from "src/contract/stubs/ReadContractStub"; +import type { ContractWriteArgs, ContractWriteOptions, ReadWriteContract, -} from 'src/contract/types/Contract'; -import { FunctionArgs, FunctionName } from 'src/contract/types/Function'; +} from "src/contract/types/Contract"; +import type { FunctionArgs, FunctionName } from "src/contract/types/Function"; /** * A mock implementation of a writable Ethereum contract designed for unit @@ -30,8 +30,8 @@ export class ReadWriteContractStub implements ReadWriteContract { protected writeStubMap = new Map< - FunctionName, - WriteStub> + FunctionName, + WriteStub> >(); getSignerAddress = stub().resolves(BOB); @@ -42,7 +42,7 @@ export class ReadWriteContractStub * will be thrown. */ async write< - TFunctionName extends FunctionName, + TFunctionName extends FunctionName, >( ...[functionName, args, options]: ContractWriteArgs ): Promise<`0x${string}`> { @@ -63,7 +63,7 @@ export class ReadWriteContractStub * *Note: The stub doesn't account for dynamic values based on provided * arguments/options.* */ - stubWrite>( + stubWrite>( functionName: TFunctionName, value: `0x${string}`, ): void { @@ -80,7 +80,7 @@ export class ReadWriteContractStub * Useful for assertions in testing, such as checking call counts. */ getWriteStub< - TFunctionName extends FunctionName, + TFunctionName extends FunctionName, >(functionName: TFunctionName): WriteStub | undefined { return this.writeStubMap.get(functionName) as WriteStub< TAbi, @@ -95,7 +95,7 @@ export class ReadWriteContractStub */ type WriteStub< TAbi extends Abi, - TFunctionName extends FunctionName, + TFunctionName extends FunctionName, > = SinonStub< [args?: FunctionArgs, options?: ContractWriteOptions], `0x${string}` diff --git a/packages/evm-client/src/contract/types/AbiEntry.ts b/packages/evm-client/src/contract/types/AbiEntry.ts index 7c66e37..f1698b1 100644 --- a/packages/evm-client/src/contract/types/AbiEntry.ts +++ b/packages/evm-client/src/contract/types/AbiEntry.ts @@ -1,4 +1,4 @@ -import { +import type { Abi, AbiItemType, AbiParameter, @@ -6,8 +6,8 @@ import { AbiParametersToPrimitiveTypes, AbiParameterToPrimitiveType, AbiStateMutability, -} from 'abitype'; -import { EmptyObject, Prettify } from 'src/base/types'; +} from "abitype"; +import type { EmptyObject, Prettify } from "src/base/types"; // https://docs.soliditylang.org/en/latest/abi-spec.html#json @@ -25,7 +25,7 @@ export type NamedAbiParameter = AbiParameter & { name: string }; export type AbiEntryName< TAbi extends Abi, TItemType extends AbiItemType = AbiItemType, -> = Extract['name']; +> = Extract["name"]; /** * Get the ABI entry for a specific type, name, and state mutability. @@ -67,12 +67,11 @@ export type AbiParameters< TItemType extends AbiItemType = AbiItemType, TName extends AbiEntryName = AbiEntryName, TParameterKind extends AbiParameterKind = AbiParameterKind, -> = - AbiEntry extends infer TAbiEntry - ? TParameterKind extends keyof TAbiEntry - ? TAbiEntry[TParameterKind] - : [] - : []; +> = AbiEntry extends infer TAbiEntry + ? TParameterKind extends keyof TAbiEntry + ? TAbiEntry[TParameterKind] + : [] + : []; /** * Add default names to any ABI parameters that are missing a name. The default @@ -112,8 +111,8 @@ type NamedParametersToObject< // For every parameter name, excluding empty names, add a key to the object // for the parameter name [TName in Exclude< - TParameters[number]['name'], - '' + TParameters[number]["name"], + "" >]: AbiParameterToPrimitiveType< Extract, TParameterKind @@ -125,7 +124,7 @@ type NamedParametersToObject< // For every key on the parameters type, if it's value is a parameter // and the parameter's name is empty (""), then add a key for the index [K in keyof TParameters as TParameters[K] extends NamedAbiParameter - ? TParameters[K]['name'] extends '' + ? TParameters[K]["name"] extends "" ? // Exclude `number` to ensure only the specific index keys are // included and not `number` itself Exclude @@ -137,12 +136,12 @@ type NamedParametersToObject< : // If the parameters are not in a Tuple, then we can't use the index as a // key, so we have to use `number` as the key for any parameters that have // empty names ("") in arrays - Extract extends never + Extract extends never ? unknown // <- No parameters with empty names : { [index: number]: AbiParameterToPrimitiveType< - Extract, - 'inputs' + Extract, + "inputs" >; }) >; @@ -185,17 +184,16 @@ export type AbiArrayType< TItemType extends AbiItemType = AbiItemType, TName extends AbiEntryName = AbiEntryName, TParameterKind extends AbiParameterKind = AbiParameterKind, -> = - AbiParameters< - TAbi, - TItemType, - TName, - TParameterKind - > extends infer TParameters - ? TParameters extends readonly AbiParameter[] - ? AbiParametersToPrimitiveTypes - : [] - : []; +> = AbiParameters< + TAbi, + TItemType, + TName, + TParameterKind +> extends infer TParameters + ? TParameters extends readonly AbiParameter[] + ? AbiParametersToPrimitiveTypes + : [] + : []; /** * Get an object of primitive types for any ABI parameters. @@ -245,19 +243,18 @@ export type AbiFriendlyType< TName extends AbiEntryName = AbiEntryName, TParameterKind extends AbiParameterKind = AbiParameterKind, TStateMutability extends AbiStateMutability = AbiStateMutability, -> = - AbiEntry extends infer TAbiEntry - ? TParameterKind extends keyof TAbiEntry & AbiParameterKind // Check if the ABI entry includes the parameter kind (inputs/outputs) - ? TAbiEntry[TParameterKind] extends readonly [AbiParameter] // Check if it's a single parameter - ? AbiParameterToPrimitiveType< - TAbiEntry[TParameterKind][0], - TParameterKind - > // Single parameter type - : TAbiEntry[TParameterKind] extends readonly [ - AbiParameter, - ...AbiParameter[], - ] // Check if it's multiple parameters - ? AbiParametersToObject // Multiple parameters type - : undefined // Empty parameters - : undefined // ABI entry doesn't include the parameter kind (inputs/outputs) - : undefined; // ABI entry not found +> = AbiEntry extends infer TAbiEntry + ? TParameterKind extends keyof TAbiEntry & AbiParameterKind // Check if the ABI entry includes the parameter kind (inputs/outputs) + ? TAbiEntry[TParameterKind] extends readonly [AbiParameter] // Check if it's a single parameter + ? AbiParameterToPrimitiveType< + TAbiEntry[TParameterKind][0], + TParameterKind + > // Single parameter type + : TAbiEntry[TParameterKind] extends readonly [ + AbiParameter, + ...AbiParameter[], + ] // Check if it's multiple parameters + ? AbiParametersToObject // Multiple parameters type + : undefined // Empty parameters + : undefined // ABI entry doesn't include the parameter kind (inputs/outputs) + : undefined; // ABI entry not found diff --git a/packages/evm-client/src/contract/types/CachedContract.ts b/packages/evm-client/src/contract/types/CachedContract.ts index f1db9aa..8f11693 100644 --- a/packages/evm-client/src/contract/types/CachedContract.ts +++ b/packages/evm-client/src/contract/types/CachedContract.ts @@ -1,11 +1,11 @@ -import { Abi } from 'abitype'; -import { +import type { Abi } from "abitype"; +import type { ContractReadArgs, ReadContract, ReadWriteContract, -} from 'src/contract/types/Contract'; -import { FunctionName } from 'src/contract/types/Function'; -import { SimpleCache } from 'src/exports'; +} from "src/contract/types/Contract"; +import type { FunctionName } from "src/contract/types/Function"; +import type { SimpleCache } from "src/exports"; export interface CachedReadContract extends ReadContract { @@ -27,6 +27,6 @@ export interface CachedReadWriteContract ReadWriteContract {} /** Recursively make all properties in T partial. */ -type DeepPartial = Partial<{ - [K in keyof T]: DeepPartial; -}>; +type DeepPartial = { + [K in keyof T]?: DeepPartial; +}; diff --git a/packages/evm-client/src/contract/types/Contract.ts b/packages/evm-client/src/contract/types/Contract.ts index 4618dd8..f485217 100644 --- a/packages/evm-client/src/contract/types/Contract.ts +++ b/packages/evm-client/src/contract/types/Contract.ts @@ -1,13 +1,13 @@ -import { Abi } from 'abitype'; -import { EmptyObject } from 'src/base/types'; -import { Event, EventFilter, EventName } from 'src/contract/types/Event'; -import { +import type { Abi } from "abitype"; +import type { EmptyObject } from "src/base/types"; +import type { Event, EventFilter, EventName } from "src/contract/types/Event"; +import type { DecodedFunctionData, FunctionArgs, FunctionName, FunctionReturn, -} from 'src/contract/types/Function'; -import { BlockTag } from 'src/network/types/Block'; +} from "src/contract/types/Function"; +import type { BlockTag } from "src/network/types/Block"; // https://ethereum.github.io/execution-apis/api-documentation/ @@ -22,7 +22,7 @@ export interface ReadContract { /** * Reads a specified function from the contract. */ - read>( + read>( ...args: ContractReadArgs ): Promise>; @@ -30,7 +30,7 @@ export interface ReadContract { * Simulates a write operation on a specified function of the contract. */ simulateWrite< - TFunctionName extends FunctionName, + TFunctionName extends FunctionName, >( ...args: ContractWriteArgs ): Promise>; @@ -75,7 +75,7 @@ export interface ReadWriteContract * Writes to a specified function on the contract. * @returns The transaction hash of the submitted transaction. */ - write>( + write>( ...args: ContractWriteArgs ): Promise<`0x${string}`>; } @@ -97,18 +97,17 @@ export type ContractReadOptions = export type ContractReadArgs< TAbi extends Abi, TFunctionName extends FunctionName, -> = - FunctionArgs extends EmptyObject - ? [ - functionName: TFunctionName, - args?: FunctionArgs, - options?: ContractReadOptions, - ] - : [ - functionName: TFunctionName, - args: FunctionArgs, - options?: ContractReadOptions, - ]; +> = FunctionArgs extends EmptyObject + ? [ + functionName: TFunctionName, + args?: FunctionArgs, + options?: ContractReadOptions, + ] + : [ + functionName: TFunctionName, + args: FunctionArgs, + options?: ContractReadOptions, + ]; export interface ContractGetEventsOptions< TAbi extends Abi, @@ -167,26 +166,24 @@ export interface ContractWriteOptions { export type ContractWriteArgs< TAbi extends Abi, - TFunctionName extends FunctionName, -> = - FunctionArgs extends EmptyObject - ? [ - functionName: TFunctionName, - args?: FunctionArgs, - options?: ContractWriteOptions, - ] - : [ - functionName: TFunctionName, - args: FunctionArgs, - options?: ContractWriteOptions, - ]; + TFunctionName extends FunctionName, +> = FunctionArgs extends EmptyObject + ? [ + functionName: TFunctionName, + args?: FunctionArgs, + options?: ContractWriteOptions, + ] + : [ + functionName: TFunctionName, + args: FunctionArgs, + options?: ContractWriteOptions, + ]; export type ContractEncodeFunctionDataArgs< TAbi extends Abi, TFunctionName extends FunctionName, -> = - FunctionArgs extends EmptyObject - ? [functionName: TFunctionName, args?: FunctionArgs] - : [functionName: TFunctionName, args: FunctionArgs]; +> = FunctionArgs extends EmptyObject + ? [functionName: TFunctionName, args?: FunctionArgs] + : [functionName: TFunctionName, args: FunctionArgs]; export type ContractDecodeFunctionDataArgs = [data: `0x${string}`]; diff --git a/packages/evm-client/src/contract/types/Event.ts b/packages/evm-client/src/contract/types/Event.ts index 28e51a6..a4070be 100644 --- a/packages/evm-client/src/contract/types/Event.ts +++ b/packages/evm-client/src/contract/types/Event.ts @@ -1,16 +1,16 @@ -import { Abi } from 'abitype'; -import { +import type { Abi } from "abitype"; +import type { AbiEntry, AbiObjectType, AbiParameters, AbiParametersToObject, NamedAbiParameter, -} from 'src/contract/types/AbiEntry'; +} from "src/contract/types/AbiEntry"; /** * Get a union of event names from an abi */ -export type EventName = AbiEntry['name']; +export type EventName = AbiEntry["name"]; /** * Get a union of named input parameters for an event from an abi @@ -19,7 +19,7 @@ type NamedEventInput< TAbi extends Abi, TEventName extends EventName, > = Extract< - AbiParameters[number], + AbiParameters[number], NamedAbiParameter >; @@ -29,7 +29,7 @@ type NamedEventInput< export type EventArgs< TAbi extends Abi, TEventName extends EventName, -> = AbiObjectType; +> = AbiObjectType; /** * Get a union of indexed input objects for an event from an abi @@ -46,7 +46,7 @@ export type EventFilter< TAbi extends Abi, TEventName extends EventName, > = Partial< - AbiParametersToObject[], 'inputs'> + AbiParametersToObject[], "inputs"> >; /** diff --git a/packages/evm-client/src/contract/types/Function.ts b/packages/evm-client/src/contract/types/Function.ts index ce8309d..f0e5a0c 100644 --- a/packages/evm-client/src/contract/types/Function.ts +++ b/packages/evm-client/src/contract/types/Function.ts @@ -1,5 +1,5 @@ -import { Abi, AbiStateMutability } from 'abitype'; -import { AbiFriendlyType, AbiObjectType } from 'src/contract/types/AbiEntry'; +import type { Abi, AbiStateMutability } from "abitype"; +import type { AbiFriendlyType, AbiObjectType } from "src/contract/types/AbiEntry"; /** * Get a union of function names from an abi @@ -9,8 +9,8 @@ export type FunctionName< TAbiStateMutability extends AbiStateMutability = AbiStateMutability, > = Extract< TAbi[number], - { type: 'function'; stateMutability: TAbiStateMutability } ->['name']; + { type: "function"; stateMutability: TAbiStateMutability } +>["name"]; /** * Get an object type for an abi function's arguments. @@ -18,16 +18,16 @@ export type FunctionName< export type FunctionArgs< TAbi extends Abi, TFunctionName extends FunctionName = FunctionName, -> = AbiObjectType; +> = AbiObjectType; /** * Get an object type for an abi's constructor arguments. */ export type ConstructorArgs = AbiObjectType< TAbi, - 'constructor', + "constructor", any, - 'inputs' + "inputs" >; /** @@ -41,7 +41,7 @@ export type ConstructorArgs = AbiObjectType< export type FunctionReturn< TAbi extends Abi, TFunctionName extends FunctionName, -> = AbiFriendlyType; +> = AbiFriendlyType; /** * Get an object representing decoded function or constructor data from an ABI. diff --git a/packages/evm-client/src/contract/utils/arrayToFriendly.test.ts b/packages/evm-client/src/contract/utils/arrayToFriendly.test.ts index 52ac187..1b00fbe 100644 --- a/packages/evm-client/src/contract/utils/arrayToFriendly.test.ts +++ b/packages/evm-client/src/contract/utils/arrayToFriendly.test.ts @@ -1,67 +1,67 @@ -import { IERC20 } from 'src/base/testing/IERC20'; -import { arrayToFriendly } from 'src/contract/utils/arrayToFriendly'; -import { describe, expect, it } from 'vitest'; +import { IERC20 } from "src/base/testing/IERC20"; +import { arrayToFriendly } from "src/contract/utils/arrayToFriendly"; +import { describe, expect, it } from "vitest"; -describe('arrayToFriendly', () => { - it('correctly converts arrays with multiple items into objects', async () => { +describe("arrayToFriendly", () => { + it("correctly converts arrays with multiple items into objects", async () => { const transferArgsObject = arrayToFriendly({ abi: IERC20.abi, - type: 'function', - name: 'transfer', - kind: 'inputs', - values: ['0x123', 123n], + type: "function", + name: "transfer", + kind: "inputs", + values: ["0x123", 123n], }); expect(transferArgsObject).toEqual({ - to: '0x123', + to: "0x123", value: 123n, }); // empty parameter names (index keys) const votesArgsObject = arrayToFriendly({ abi: exampleAbi, - type: 'function', - name: 'votes', - kind: 'inputs', - values: ['0x123', 0n], + type: "function", + name: "votes", + kind: "inputs", + values: ["0x123", 0n], }); expect(votesArgsObject).toEqual({ - '0': '0x123', - '1': 0n, + "0": "0x123", + "1": 0n, }); }); - it('returns the item from arrays with a single item', async () => { + it("returns the item from arrays with a single item", async () => { const balanceInput = arrayToFriendly({ abi: IERC20.abi, - type: 'function', - name: 'balanceOf', - kind: 'inputs', - values: ['0x123'], + type: "function", + name: "balanceOf", + kind: "inputs", + values: ["0x123"], }); - expect(balanceInput).toEqual('0x123'); + expect(balanceInput).toEqual("0x123"); }); - it('Converts an empty arrays into undefined', async () => { + it("Converts an empty arrays into undefined", async () => { const notDefined = arrayToFriendly({ abi: IERC20.abi, - type: 'function', - name: 'symbol', - kind: 'inputs', + type: "function", + name: "symbol", + kind: "inputs", values: [], }); expect(notDefined).toBeUndefined(); }); }); -export const exampleAbi = [ +const exampleAbi = [ { inputs: [ - { name: '', type: 'address' }, - { name: '', type: 'uint256' }, + { name: "", type: "address" }, + { name: "", type: "uint256" }, ], - name: 'votes', + name: "votes", outputs: [], - stateMutability: 'view', - type: 'function', + stateMutability: "view", + type: "function", }, ] as const; diff --git a/packages/evm-client/src/contract/utils/arrayToFriendly.ts b/packages/evm-client/src/contract/utils/arrayToFriendly.ts index 82c0f73..a4c99b2 100644 --- a/packages/evm-client/src/contract/utils/arrayToFriendly.ts +++ b/packages/evm-client/src/contract/utils/arrayToFriendly.ts @@ -1,10 +1,10 @@ -import { Abi, AbiItemType, AbiParameter, AbiParameterKind } from 'abitype'; -import { +import type { Abi, AbiItemType, AbiParameter, AbiParameterKind } from "abitype"; +import type { AbiArrayType, AbiEntryName, AbiFriendlyType, -} from 'src/contract/types/AbiEntry'; -import { getAbiEntry } from 'src/contract/utils/getAbiEntry'; +} from "src/contract/types/AbiEntry"; +import { getAbiEntry } from "src/contract/utils/getAbiEntry"; /** * Converts an array of input or output values into an diff --git a/packages/evm-client/src/contract/utils/arrayToObject.test.ts b/packages/evm-client/src/contract/utils/arrayToObject.test.ts index 7d5f2de..732a811 100644 --- a/packages/evm-client/src/contract/utils/arrayToObject.test.ts +++ b/packages/evm-client/src/contract/utils/arrayToObject.test.ts @@ -1,54 +1,54 @@ -import { IERC20 } from 'src/base/testing/IERC20'; -import { arrayToObject } from 'src/contract/utils/arrayToObject'; -import { describe, expect, it } from 'vitest'; +import { IERC20 } from "src/base/testing/IERC20"; +import { arrayToObject } from "src/contract/utils/arrayToObject"; +import { describe, expect, it } from "vitest"; -describe('arrayToObject', () => { - it('correctly converts arrays into objects', async () => { +describe("arrayToObject", () => { + it("correctly converts arrays into objects", async () => { const transferArgsObject = arrayToObject({ abi: IERC20.abi, - type: 'function', - name: 'transfer', - kind: 'inputs', - values: ['0x123', 123n], + type: "function", + name: "transfer", + kind: "inputs", + values: ["0x123", 123n], }); expect(transferArgsObject).toEqual({ - to: '0x123', + to: "0x123", value: 123n, }); // empty parameter names (index keys) const votesArgsObject = arrayToObject({ abi: exampleAbi, - type: 'function', - name: 'votes', - kind: 'inputs', - values: ['0x123', 0n], + type: "function", + name: "votes", + kind: "inputs", + values: ["0x123", 0n], }); expect(votesArgsObject).toEqual({ - '0': '0x123', - '1': 0n, + "0": "0x123", + "1": 0n, }); const balanceInput = arrayToObject({ abi: IERC20.abi, - type: 'function', - name: 'balanceOf', - kind: 'inputs', - values: ['0x123'], + type: "function", + name: "balanceOf", + kind: "inputs", + values: ["0x123"], }); - expect(balanceInput).toEqual({ owner: '0x123' }); + expect(balanceInput).toEqual({ owner: "0x123" }); }); }); -export const exampleAbi = [ +const exampleAbi = [ { inputs: [ - { name: '', type: 'address' }, - { name: '', type: 'uint256' }, + { name: "", type: "address" }, + { name: "", type: "uint256" }, ], - name: 'votes', + name: "votes", outputs: [], - stateMutability: 'view', - type: 'function', + stateMutability: "view", + type: "function", }, ] as const; diff --git a/packages/evm-client/src/contract/utils/arrayToObject.ts b/packages/evm-client/src/contract/utils/arrayToObject.ts index 6e511df..d9399b9 100644 --- a/packages/evm-client/src/contract/utils/arrayToObject.ts +++ b/packages/evm-client/src/contract/utils/arrayToObject.ts @@ -1,10 +1,10 @@ -import { Abi, AbiItemType, AbiParameter, AbiParameterKind } from 'abitype'; -import { +import type { Abi, AbiItemType, AbiParameter, AbiParameterKind } from "abitype"; +import type { AbiArrayType, AbiEntryName, AbiObjectType, -} from 'src/contract/types/AbiEntry'; -import { getAbiEntry } from 'src/contract/utils/getAbiEntry'; +} from "src/contract/types/AbiEntry"; +import { getAbiEntry } from "src/contract/utils/getAbiEntry"; /** * Converts an array of input or output values into an object typ, ensuring the diff --git a/packages/evm-client/src/contract/utils/getAbiEntry.ts b/packages/evm-client/src/contract/utils/getAbiEntry.ts index 75ec8a4..d9ae2fc 100644 --- a/packages/evm-client/src/contract/utils/getAbiEntry.ts +++ b/packages/evm-client/src/contract/utils/getAbiEntry.ts @@ -1,6 +1,6 @@ -import { Abi, AbiItemType } from 'abitype'; -import { AbiEntry, AbiEntryName } from 'src/contract/types/AbiEntry'; -import { AbiEntryNotFoundError } from 'src/errors/AbiEntryNotFound'; +import type { Abi, AbiItemType } from "abitype"; +import type { AbiEntry, AbiEntryName } from "src/contract/types/AbiEntry"; +import { AbiEntryNotFoundError } from "src/errors/AbiEntryNotFound"; /** * Get an entry from an ABI by type and name. @@ -22,7 +22,7 @@ export function getAbiEntry< const abiItem = abi.find( (item) => item.type === type && - (type === 'constructor' || (item as any).name === name), + (type === "constructor" || (item as any).name === name), ) as AbiEntry | undefined; if (!abiItem) { diff --git a/packages/evm-client/src/contract/utils/objectToArray.test.ts b/packages/evm-client/src/contract/utils/objectToArray.test.ts index 298b47b..bcaaa8b 100644 --- a/packages/evm-client/src/contract/utils/objectToArray.test.ts +++ b/packages/evm-client/src/contract/utils/objectToArray.test.ts @@ -1,62 +1,62 @@ -import { IERC20 } from 'src/base/testing/IERC20'; -import { objectToArray } from 'src/contract/utils/objectToArray'; -import { describe, expect, it } from 'vitest'; +import { IERC20 } from "src/base/testing/IERC20"; +import { objectToArray } from "src/contract/utils/objectToArray"; +import { describe, expect, it } from "vitest"; -describe('objectToArray', () => { - it('correctly converts objects into arrays', async () => { +describe("objectToArray", () => { + it("correctly converts objects into arrays", async () => { const transferArgsArray = objectToArray({ abi: IERC20.abi, - type: 'function', - name: 'transfer', - kind: 'inputs', + type: "function", + name: "transfer", + kind: "inputs", value: { - to: '0x123', + to: "0x123", value: 123n, }, }); - expect(transferArgsArray).toEqual(['0x123', 123n]); + expect(transferArgsArray).toEqual(["0x123", 123n]); // empty parameter names (index keys) const votesArgsArray = objectToArray({ abi: exampleAbi, - type: 'function', - name: 'votes', - kind: 'inputs', + type: "function", + name: "votes", + kind: "inputs", value: { - '0': '0x123', - '1': 0n, + "0": "0x123", + "1": 0n, }, }); - expect(votesArgsArray).toEqual(['0x123', 0n]); + expect(votesArgsArray).toEqual(["0x123", 0n]); }); const emptyArray = objectToArray({ abi: IERC20.abi, - type: 'function', - name: 'symbol', - kind: 'inputs', + type: "function", + name: "symbol", + kind: "inputs", value: {}, }); expect(emptyArray).toEqual([]); const emptyArrayFromUndefined = objectToArray({ abi: IERC20.abi, - type: 'function', - name: 'symbol', - kind: 'inputs', + type: "function", + name: "symbol", + kind: "inputs", }); expect(emptyArrayFromUndefined).toEqual([]); }); -export const exampleAbi = [ +const exampleAbi = [ { inputs: [ - { name: '', type: 'address' }, - { name: '', type: 'uint256' }, + { name: "", type: "address" }, + { name: "", type: "uint256" }, ], - name: 'votes', + name: "votes", outputs: [], - stateMutability: 'view', - type: 'function', + stateMutability: "view", + type: "function", }, ] as const; diff --git a/packages/evm-client/src/contract/utils/objectToArray.ts b/packages/evm-client/src/contract/utils/objectToArray.ts index 5766a0f..bce6eda 100644 --- a/packages/evm-client/src/contract/utils/objectToArray.ts +++ b/packages/evm-client/src/contract/utils/objectToArray.ts @@ -1,10 +1,10 @@ -import { Abi, AbiItemType, AbiParameter, AbiParameterKind } from 'abitype'; -import { +import type { Abi, AbiItemType, AbiParameter, AbiParameterKind } from "abitype"; +import type { AbiArrayType, AbiEntryName, AbiObjectType, -} from 'src/contract/types/AbiEntry'; -import { getAbiEntry } from 'src/contract/utils/getAbiEntry'; +} from "src/contract/types/AbiEntry"; +import { getAbiEntry } from "src/contract/utils/getAbiEntry"; /** * Converts an object into an array of input or output values, ensuring the the @@ -81,7 +81,7 @@ export function objectToArray< } const valueObject: Record = - value && typeof value === 'object' ? value : {}; + value && typeof value === "object" ? value : {}; const array = parameters.map(({ name }, i) => valueObject[name || i]); diff --git a/packages/evm-client/src/errors/AbiEntryNotFound.ts b/packages/evm-client/src/errors/AbiEntryNotFound.ts index 6e50dc4..df9ead4 100644 --- a/packages/evm-client/src/errors/AbiEntryNotFound.ts +++ b/packages/evm-client/src/errors/AbiEntryNotFound.ts @@ -1,7 +1,7 @@ -import { AbiItemType } from 'abitype'; +import type { AbiItemType } from "abitype"; export class AbiEntryNotFoundError extends Error { constructor({ type, name }: { type: AbiItemType; name?: string }) { - super(`No ${type}${name ? ` with name ${name}` : ''} found in ABI.`); + super(`No ${type}${name ? ` with name ${name}` : ""} found in ABI.`); } } diff --git a/packages/evm-client/src/exports/cache.ts b/packages/evm-client/src/exports/cache.ts index 84a4f39..e4ea412 100644 --- a/packages/evm-client/src/exports/cache.ts +++ b/packages/evm-client/src/exports/cache.ts @@ -1,3 +1,3 @@ -export { createLruSimpleCache } from 'src/cache/factories/createLruSimpleCache'; -export type { SimpleCache, SimpleCacheKey } from 'src/cache/types/SimpleCache'; -export { createSimpleCacheKey } from 'src/cache/utils/createSimpleCacheKey'; +export { createLruSimpleCache } from "src/cache/factories/createLruSimpleCache"; +export type { SimpleCache, SimpleCacheKey } from "src/cache/types/SimpleCache"; +export { createSimpleCacheKey } from "src/cache/utils/createSimpleCacheKey"; diff --git a/packages/evm-client/src/exports/contract.ts b/packages/evm-client/src/exports/contract.ts index 5fb3411..6986752 100644 --- a/packages/evm-client/src/exports/contract.ts +++ b/packages/evm-client/src/exports/contract.ts @@ -2,11 +2,11 @@ export { createCachedReadContract, type CreateCachedReadContractOptions, -} from 'src/contract/factories/createCachedReadContract'; +} from "src/contract/factories/createCachedReadContract"; export { createCachedReadWriteContract, type CreateCachedReadWriteContractOptions, -} from 'src/contract/factories/createCachedReadWriteContract'; +} from "src/contract/factories/createCachedReadWriteContract"; // Types export type { @@ -16,11 +16,11 @@ export type { AbiFriendlyType, AbiObjectType, AbiParameters, -} from 'src/contract/types/AbiEntry'; +} from "src/contract/types/AbiEntry"; export type { CachedReadContract, CachedReadWriteContract, -} from 'src/contract/types/CachedContract'; +} from "src/contract/types/CachedContract"; export type { ContractDecodeFunctionDataArgs, ContractEncodeFunctionDataArgs, @@ -32,23 +32,23 @@ export type { ContractWriteOptions, ReadContract, ReadWriteContract, -} from 'src/contract/types/Contract'; +} from "src/contract/types/Contract"; export type { Event, EventArgs, EventFilter, EventName, -} from 'src/contract/types/Event'; +} from "src/contract/types/Event"; export type { ConstructorArgs, DecodedFunctionData, FunctionArgs, FunctionName, FunctionReturn, -} from 'src/contract/types/Function'; +} from "src/contract/types/Function"; // Utils -export { arrayToFriendly } from 'src/contract/utils/arrayToFriendly'; -export { arrayToObject } from 'src/contract/utils/arrayToObject'; -export { getAbiEntry } from 'src/contract/utils/getAbiEntry'; -export { objectToArray } from 'src/contract/utils/objectToArray'; +export { arrayToFriendly } from "src/contract/utils/arrayToFriendly"; +export { arrayToObject } from "src/contract/utils/arrayToObject"; +export { getAbiEntry } from "src/contract/utils/getAbiEntry"; +export { objectToArray } from "src/contract/utils/objectToArray"; diff --git a/packages/evm-client/src/exports/errors.ts b/packages/evm-client/src/exports/errors.ts index 093dfde..4e681a8 100644 --- a/packages/evm-client/src/exports/errors.ts +++ b/packages/evm-client/src/exports/errors.ts @@ -1 +1 @@ -export { AbiEntryNotFoundError } from 'src/errors/AbiEntryNotFound'; +export { AbiEntryNotFoundError } from "src/errors/AbiEntryNotFound"; diff --git a/packages/evm-client/src/exports/index.ts b/packages/evm-client/src/exports/index.ts index f890252..ef10a96 100644 --- a/packages/evm-client/src/exports/index.ts +++ b/packages/evm-client/src/exports/index.ts @@ -1,4 +1,4 @@ -export * from 'src/exports/cache'; -export * from 'src/exports/contract'; -export * from 'src/exports/errors'; -export * from 'src/exports/network'; +export * from "src/exports/cache"; +export * from "src/exports/contract"; +export * from "src/exports/errors"; +export * from "src/exports/network"; diff --git a/packages/evm-client/src/exports/network.ts b/packages/evm-client/src/exports/network.ts index fc44395..2c82241 100644 --- a/packages/evm-client/src/exports/network.ts +++ b/packages/evm-client/src/exports/network.ts @@ -1,4 +1,4 @@ -export type { Block, BlockTag } from 'src/network/types/Block'; +export type { Block, BlockTag } from "src/network/types/Block"; export type { Network, NetworkGetBalanceArgs, @@ -6,10 +6,10 @@ export type { NetworkGetBlockOptions, NetworkGetTransactionArgs, NetworkWaitForTransactionArgs, -} from 'src/network/types/Network'; +} from "src/network/types/Network"; export type { MinedTransaction, Transaction, TransactionInfo, TransactionReceipt, -} from 'src/network/types/Transaction'; +} from "src/network/types/Transaction"; diff --git a/packages/evm-client/src/exports/stubs.ts b/packages/evm-client/src/exports/stubs.ts index c956628..f31d75d 100644 --- a/packages/evm-client/src/exports/stubs.ts +++ b/packages/evm-client/src/exports/stubs.ts @@ -1,6 +1,6 @@ // Contract -export { ReadContractStub } from 'src/contract/stubs/ReadContractStub'; -export { ReadWriteContractStub } from 'src/contract/stubs/ReadWriteContractStub'; +export { ReadContractStub } from "src/contract/stubs/ReadContractStub"; +export { ReadWriteContractStub } from "src/contract/stubs/ReadWriteContractStub"; // Network -export { NetworkStub } from 'src/network/stubs/NetworkStub'; +export { NetworkStub } from "src/network/stubs/NetworkStub"; diff --git a/packages/evm-client/src/network/stubs/NetworkStub.test.ts b/packages/evm-client/src/network/stubs/NetworkStub.test.ts index d8e62e2..2613579 100644 --- a/packages/evm-client/src/network/stubs/NetworkStub.test.ts +++ b/packages/evm-client/src/network/stubs/NetworkStub.test.ts @@ -1,13 +1,13 @@ -import { ALICE } from 'src/base/testing/accounts'; +import { ALICE } from "src/base/testing/accounts"; import { NetworkStub, transactionToReceipt, -} from 'src/network/stubs/NetworkStub'; -import { describe, expect, it } from 'vitest'; -import { Transaction } from '../types/Transaction'; +} from "src/network/stubs/NetworkStub"; +import { describe, expect, it } from "vitest"; +import type { Transaction } from "../types/Transaction"; -describe('NetworkStub', () => { - it('stubs getBalance', async () => { +describe("NetworkStub", () => { + it("stubs getBalance", async () => { const network = new NetworkStub(); network.stubGetBalance({ @@ -20,7 +20,7 @@ describe('NetworkStub', () => { expect(balance).toEqual(100n); }); - it('stubs getBlock', async () => { + it("stubs getBlock", async () => { const network = new NetworkStub(); const block = { @@ -37,7 +37,7 @@ describe('NetworkStub', () => { expect(blockResponse).toEqual(block); }); - it('stubs getChainId', async () => { + it("stubs getChainId", async () => { const network = new NetworkStub(); network.stubGetChainId(42069); @@ -47,16 +47,16 @@ describe('NetworkStub', () => { expect(chainId).toEqual(42069); }); - it('stubs getTransaction', async () => { + it("stubs getTransaction", async () => { const network = new NetworkStub(); - const txHash = '0x123abc'; + const txHash = "0x123abc"; const tx: Transaction = { gas: 100n, gasPrice: 100n, - input: '0x456def', + input: "0x456def", nonce: 0, - type: '0x0', + type: "0x0", value: 0n, }; @@ -70,16 +70,16 @@ describe('NetworkStub', () => { expect(transaction).toEqual(tx); }); - it('waits for stubbed transactions', async () => { + it("waits for stubbed transactions", async () => { const network = new NetworkStub(); - const txHash = '0x123abc'; + const txHash = "0x123abc"; const stubbedTx = { gas: 100n, gasPrice: 100n, - input: '0x456def', + input: "0x456def", nonce: 0, - type: '0x0', + type: "0x0", value: 0n, } as const; @@ -100,10 +100,10 @@ describe('NetworkStub', () => { expect(tx).toEqual(transactionToReceipt(stubbedTx)); }); - it('reaches timeout when waiting for transactions that are never stubbed', async () => { + it("reaches timeout when waiting for transactions that are never stubbed", async () => { const network = new NetworkStub(); - const waitPromise = await network.waitForTransaction('0x123abc', { + const waitPromise = await network.waitForTransaction("0x123abc", { timeout: 1000, }); diff --git a/packages/evm-client/src/network/stubs/NetworkStub.ts b/packages/evm-client/src/network/stubs/NetworkStub.ts index dce98ce..0b09112 100644 --- a/packages/evm-client/src/network/stubs/NetworkStub.ts +++ b/packages/evm-client/src/network/stubs/NetworkStub.ts @@ -1,13 +1,13 @@ -import { SinonStub, stub } from 'sinon'; -import { Block } from 'src/network/types/Block'; -import { +import { type SinonStub, stub } from "sinon"; +import type { Block } from "src/network/types/Block"; +import type { Network, NetworkGetBalanceArgs, NetworkGetBlockArgs, NetworkGetTransactionArgs, NetworkWaitForTransactionArgs, -} from 'src/network/types/Network'; -import { Transaction, TransactionReceipt } from 'src/network/types/Transaction'; +} from "src/network/types/Network"; +import type { Transaction, TransactionReceipt } from "src/network/types/Transaction"; /** * A mock implementation of a `Network` designed to facilitate unit @@ -96,7 +96,7 @@ export class NetworkStub implements Network { getBalance(...args: NetworkGetBalanceArgs): Promise { if (!this.getBalanceStub) { throw new Error( - `The getBalance function must be stubbed first:\n\tcontract.stubGetBalance()`, + "The getBalance function must be stubbed first:\n\tcontract.stubGetBalance()", ); } return this.getBalanceStub(args); @@ -105,7 +105,7 @@ export class NetworkStub implements Network { getBlock(...args: NetworkGetBlockArgs): Promise { if (!this.getBlockStub) { throw new Error( - `The getBlock function must be stubbed first:\n\tcontract.stubGetBlock()`, + "The getBlock function must be stubbed first:\n\tcontract.stubGetBlock()", ); } return this.getBlockStub(args); @@ -114,7 +114,7 @@ export class NetworkStub implements Network { getChainId(): Promise { if (!this.getChainIdStub) { throw new Error( - `The getChainId function must be stubbed first:\n\tcontract.stubGetChainId()`, + "The getChainId function must be stubbed first:\n\tcontract.stubGetChainId()", ); } return this.getChainIdStub(); @@ -125,7 +125,7 @@ export class NetworkStub implements Network { ): Promise { if (!this.getTransactionStub) { throw new Error( - `The getTransaction function must be stubbed first:\n\tcontract.stubGetTransaction()`, + "The getTransaction function must be stubbed first:\n\tcontract.stubGetTransaction()", ); } return this.getTransactionStub(args); @@ -134,6 +134,7 @@ export class NetworkStub implements Network { async waitForTransaction( ...[hash, { timeout = 60_000 } = {}]: NetworkWaitForTransactionArgs ): Promise { + // biome-ignore lint/suspicious/noAsyncPromiseExecutor: special case for testing return new Promise(async (resolve) => { let transaction: Transaction | undefined; @@ -171,8 +172,8 @@ export function transactionToReceipt( effectiveGasPrice: 0n, transactionHash: transaction.hash!, gasUsed: 0n, - logsBloom: '0x', - status: 'success', + logsBloom: "0x", + status: "success", } : undefined; } diff --git a/packages/evm-client/src/network/types/Block.ts b/packages/evm-client/src/network/types/Block.ts index de42849..da151e4 100644 --- a/packages/evm-client/src/network/types/Block.ts +++ b/packages/evm-client/src/network/types/Block.ts @@ -4,8 +4,5 @@ export interface Block { timestamp: bigint; } -// ETH JSON-RPC Types -// TODO: Find or build an OS types package (e.g., @types/evm-json-rpc) -// https://github.com/ethereum/execution-apis/tree/main -// https://github.com/ethereum/execution-apis/blob/main/src/schemas/block.yaml#L105 -export type BlockTag = 'latest' | 'earliest' | 'pending' | 'safe' | 'finalized'; +// https://github.com/ethereum/execution-apis/blob/3ae3d29fc9900e5c48924c238dff7643fdc3680e/src/schemas/block.yaml#L114 +export type BlockTag = "latest" | "earliest" | "pending" | "safe" | "finalized"; diff --git a/packages/evm-client/src/network/types/Network.ts b/packages/evm-client/src/network/types/Network.ts index ff4e55c..de200e5 100644 --- a/packages/evm-client/src/network/types/Network.ts +++ b/packages/evm-client/src/network/types/Network.ts @@ -1,5 +1,5 @@ -import { Block, BlockTag } from 'src/network/types/Block'; -import { Transaction, TransactionReceipt } from 'src/network/types/Transaction'; +import type { Block, BlockTag } from "src/network/types/Block"; +import type { Transaction, TransactionReceipt } from "src/network/types/Transaction"; // https://ethereum.github.io/execution-apis/api-documentation/ diff --git a/packages/evm-client/src/network/types/Transaction.ts b/packages/evm-client/src/network/types/Transaction.ts index 109a48e..c537e78 100644 --- a/packages/evm-client/src/network/types/Transaction.ts +++ b/packages/evm-client/src/network/types/Transaction.ts @@ -46,7 +46,7 @@ export interface TransactionReceipt { transactionHash: `0x${string}`; transactionIndex: number; - status: 'success' | 'reverted'; + status: "success" | "reverted"; /** * The actual value per gas deducted from the sender's account. Before diff --git a/packages/evm-client/tsup.config.ts b/packages/evm-client/tsup.config.ts index 3d38544..4d02f6a 100644 --- a/packages/evm-client/tsup.config.ts +++ b/packages/evm-client/tsup.config.ts @@ -1,18 +1,18 @@ -import { defineConfig } from 'tsup'; +import { defineConfig } from "tsup"; export default defineConfig({ // Splitting the entry points in foundational packages like this makes it // easier for wrapper packages to selectively re-export `*` from some entry // points and while augmenting or modifying others. entry: [ - 'src/exports/cache.ts', - 'src/exports/contract.ts', - 'src/exports/errors.ts', - 'src/exports/index.ts', - 'src/exports/network.ts', - 'src/exports/stubs.ts', + "src/exports/cache.ts", + "src/exports/contract.ts", + "src/exports/errors.ts", + "src/exports/index.ts", + "src/exports/network.ts", + "src/exports/stubs.ts", ], - format: ['esm'], + format: ["esm"], sourcemap: true, dts: true, clean: true, diff --git a/packages/evm-client/vite.config.ts b/packages/evm-client/vite.config.ts index cc40ce7..3b5ea6b 100644 --- a/packages/evm-client/vite.config.ts +++ b/packages/evm-client/vite.config.ts @@ -1,5 +1,5 @@ -import tsconfigPaths from 'vite-tsconfig-paths'; -import { defineConfig } from 'vitest/config'; +import tsconfigPaths from "vite-tsconfig-paths"; +import { defineConfig } from "vitest/config"; export default defineConfig({ plugins: [tsconfigPaths() as any], diff --git a/yarn.lock b/yarn.lock index c1c2bda..0dc27c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,6 @@ # yarn lockfile v1 -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - "@adraffy/ens-normalize@1.10.0": version "1.10.0" resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" @@ -17,15 +12,7 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.23.5": +"@babel/code-frame@^7.0.0": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== @@ -33,138 +20,11 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" -"@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.22.11": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" - integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.9" - "@babel/parser" "^7.23.9" - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/eslint-parser@^7.22.11": - version "7.23.10" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz#2d4164842d6db798873b40e0c4238827084667a2" - integrity sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw== - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.1" - -"@babel/generator@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": +"@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" - integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== - dependencies: - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - "@babel/highlight@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" @@ -174,51 +34,66 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" - integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== - -"@babel/runtime@^7.20.1", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5": +"@babel/runtime@^7.20.1", "@babel/runtime@^7.5.5": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" - integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/traverse@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" - integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" - integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" +"@biomejs/biome@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@biomejs/biome/-/biome-1.9.1.tgz#93866252fb441687fdbed0a1b4e146e76ef7495e" + integrity sha512-Ps0Rg0zg3B1zpx+zQHMz5b0n0PBNCAaXttHEDTVrJD5YXR6Uj3T+abTDgeS3wsu4z5i2whqcE1lZxGyWH4bZYg== + optionalDependencies: + "@biomejs/cli-darwin-arm64" "1.9.1" + "@biomejs/cli-darwin-x64" "1.9.1" + "@biomejs/cli-linux-arm64" "1.9.1" + "@biomejs/cli-linux-arm64-musl" "1.9.1" + "@biomejs/cli-linux-x64" "1.9.1" + "@biomejs/cli-linux-x64-musl" "1.9.1" + "@biomejs/cli-win32-arm64" "1.9.1" + "@biomejs/cli-win32-x64" "1.9.1" + +"@biomejs/cli-darwin-arm64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.1.tgz#efa26ae2302350d3b00720cdda15576dfcf9cddd" + integrity sha512-js0brHswq/BoeKgfSEUJYOjUOlML6p65Nantti+PsoQ61u9+YVGIZ7325LK7iUpDH8KVJT+Bx7K2b/6Q//W1Pw== + +"@biomejs/cli-darwin-x64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.1.tgz#a597b28d681483110c6aa7d28dcdefa0772b5450" + integrity sha512-2zVyjUg5rN0k8XrytkubQWLbp2r/AS5wPhXs4vgVjvqbLnzo32EGX8p61gzroF2dH9DCUCfskdrigCGqNdEbpg== + +"@biomejs/cli-linux-arm64-musl@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.1.tgz#d3d744c16060d09129b3e7c67697d54915c84342" + integrity sha512-L/JmXKvhsZ1lTgqOr3tWkzuY/NRppdIscHeC9aaiR72WjnBgJS94mawl9BWmGB3aWBc0q6oSDWnBS7617EMMmA== + +"@biomejs/cli-linux-arm64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.1.tgz#aeece1d7842ae0389df14bc18ec7eeddffcb989c" + integrity sha512-QgxwfnG+r2aer5RNGR67Ey91Tv7xXW8E9YckHhwuyWjdLEvKWkrSJrhVG/6ub0kVvTSNkYOuT/7/jMOFBuUbRA== + +"@biomejs/cli-linux-x64-musl@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.1.tgz#e7ac315a22344394db5ec3385235d88a1449f649" + integrity sha512-gY+eFLIAW45v3WicQHicvjRfA0ntMZHx7h937bXwBMFNFoKmB6rMi6+fKQ6/hiS6juhsFxZdZIz20m15s49J6A== + +"@biomejs/cli-linux-x64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.1.tgz#40f8c7aa55b95f3f74e3e4f57a07a3cc6dee2fef" + integrity sha512-F0INygtzI2L2n2R1KtYHGr3YWDt9Up1zrUluwembM+iJ1dXN3qzlSb7deFUsSJm4FaIPriqs6Xa56ukdQW6UeQ== + +"@biomejs/cli-win32-arm64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.1.tgz#599f562fccbc9fd7e00dc3f43fb93ff3091f98e9" + integrity sha512-7Jahxar3OB+aTPOgXisMJmMKMsjcK+UmdlG3UIOQjzN/ZFEsPV+GT3bfrVjZDQaCw/zes0Cqd7VTWFjFTC/+MQ== + +"@biomejs/cli-win32-x64@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.1.tgz#f754bb8a94f2dab6311eff39dc30c4a6aa0f5628" + integrity sha512-liSRWjWzFhyG7s1jg/Bbv9FL+ha/CEd5tFO3+dFIJNplL4TnvAivtyfRVi/tu/pNjISbV1k9JwdBewtAKAgA0w== "@changesets/apply-release-plan@^7.0.0": version "7.0.0" @@ -541,57 +416,6 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.56.0": - version "8.56.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" - integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== - -"@humanwhocodes/config-array@^0.11.13": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" - integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== - "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -611,7 +435,7 @@ dependencies: "@sinclair/typebox" "^0.27.8" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== @@ -643,7 +467,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.9": version "0.3.22" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== @@ -673,28 +497,6 @@ globby "^11.0.0" read-yaml-file "^1.1.0" -"@microsoft/tsdoc-config@0.16.2": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz#b786bb4ead00d54f53839a458ce626c8548d3adf" - integrity sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw== - dependencies: - "@microsoft/tsdoc" "0.14.2" - ajv "~6.12.6" - jju "~1.4.0" - resolve "~1.19.0" - -"@microsoft/tsdoc@0.14.2": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz#c3ec604a0b54b9a9b87e9735dfc59e1a5da6a5fb" - integrity sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug== - -"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== - dependencies: - eslint-scope "5.1.1" - "@noble/curves@1.2.0", "@noble/curves@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -725,7 +527,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -738,11 +540,6 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - "@rollup/rollup-android-arm-eabi@4.10.0": version "4.10.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz#786eaf6372be2fc209cc957c14aa9d3ff8fefe6a" @@ -808,11 +605,6 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz#4eedd01af3a82c1acb0fe6d837ebf339c4cbf839" integrity sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ== -"@rushstack/eslint-patch@^1.3.3": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9" - integrity sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA== - "@scure/base@~1.1.0", "@scure/base@~1.1.2": version "1.1.5" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.5.tgz#1d85d17269fe97694b9c592552dd9e5e33552157" @@ -900,16 +692,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - "@types/lodash.ismatch@^4.4.9": version "4.4.9" resolved "https://registry.yarnpkg.com/@types/lodash.ismatch/-/lodash.ismatch-4.4.9.tgz#97b4317f7dc3975bb51660a0f9a055ac7b67b134" @@ -942,7 +724,7 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== -"@types/semver@^7.3.12", "@types/semver@^7.5.0": +"@types/semver@^7.5.0": version "7.5.6" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== @@ -959,170 +741,6 @@ resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2" integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ== -"@typescript-eslint/eslint-plugin@^6.17.0", "@typescript-eslint/eslint-plugin@^6.5.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.17.0", "@typescript-eslint/parser@^6.5.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.58.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@vercel/style-guide@^5.1.0": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@vercel/style-guide/-/style-guide-5.2.0.tgz#8e09fb48065bc6133add67ff2bc7a219d228fb46" - integrity sha512-fNSKEaZvSkiBoF6XEefs8CcgAV9K9e+MbcsDZjUsktHycKdA0jvjAzQi1W/FzLS+Nr5zZ6oejCwq/97dHUKe0g== - dependencies: - "@babel/core" "^7.22.11" - "@babel/eslint-parser" "^7.22.11" - "@rushstack/eslint-patch" "^1.3.3" - "@typescript-eslint/eslint-plugin" "^6.5.0" - "@typescript-eslint/parser" "^6.5.0" - eslint-config-prettier "^9.0.0" - eslint-import-resolver-alias "^1.1.2" - eslint-import-resolver-typescript "^3.6.0" - eslint-plugin-eslint-comments "^3.2.0" - eslint-plugin-import "^2.28.1" - eslint-plugin-jest "^27.2.3" - eslint-plugin-jsx-a11y "^6.7.1" - eslint-plugin-playwright "^0.16.0" - eslint-plugin-react "^7.33.2" - eslint-plugin-react-hooks "^4.6.0" - eslint-plugin-testing-library "^6.0.1" - eslint-plugin-tsdoc "^0.2.17" - eslint-plugin-unicorn "^48.0.1" - prettier-plugin-packagejson "^2.4.5" - "@vitest/expect@1.2.2": version "1.2.2" resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.2.2.tgz#39ea22e849bbf404b7e5272786551aa99e2663d0" @@ -1172,17 +790,12 @@ abitype@1.0.0, abitype@^1.0.0: resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.0.tgz#237176dace81d90d018bebf3a45cb42f2a2d9e97" integrity sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ== -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - acorn-walk@^8.1.1, acorn-walk@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.10.0, acorn@^8.11.3, acorn@^8.4.1, acorn@^8.9.0: +acorn@^8.10.0, acorn@^8.11.3, acorn@^8.4.1: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -1192,16 +805,6 @@ aes-js@4.0.0-beta.5: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== -ajv@^6.12.4, ajv@~6.12.6: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - ansi-colors@^4.1.1, ansi-colors@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" @@ -1266,18 +869,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" @@ -1286,45 +877,12 @@ array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" -array-includes@^3.1.6, array-includes@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" - integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-string "^1.0.7" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.filter@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e" - integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - -array.prototype.findlastindex@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz#d1c50f0b3a9da191981ff8942a0aedd82794404f" - integrity sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.3.0" - es-shim-unscopables "^1.0.2" - -array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: +array.prototype.flat@^1.2.3: 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== @@ -1334,27 +892,6 @@ array.prototype.flat@^1.2.3, array.prototype.flat@^1.3.1, array.prototype.flat@^ es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: - 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.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" - integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.1.0" - es-shim-unscopables "^1.0.2" - arraybuffer.prototype.slice@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" @@ -1379,35 +916,11 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -ast-types-flow@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" - integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== - -asynciterator.prototype@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" - integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== - dependencies: - has-symbols "^1.0.3" - available-typed-arrays@^1.0.5, available-typed-arrays@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz#ac812d8ce5a6b976d738e1c45f08d0b00bc7d725" integrity sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg== -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== - -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== - dependencies: - dequal "^2.0.3" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1425,14 +938,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -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" - brace-expansion@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" @@ -1454,21 +959,6 @@ breakword@^1.0.5: dependencies: wcwidth "^1.0.1" -browserslist@^4.22.2: - version "4.22.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" - integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== - dependencies: - caniuse-lite "^1.0.30001580" - electron-to-chromium "^1.4.648" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - bundle-require@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.0.2.tgz#65fc74ff14eabbba36d26c9a6161bd78fff6b29e" @@ -1491,11 +981,6 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6: get-intrinsic "^1.2.3" set-function-length "^1.2.0" -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -1510,11 +995,6 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001580: - version "1.0.30001585" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz#0b4e848d84919c783b2a41c13f7de8ce96744401" - integrity sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q== - chai@^4.3.10: version "4.4.1" resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" @@ -1537,7 +1017,7 @@ chalk@^2.1.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.2: +chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1572,18 +1052,11 @@ chokidar@^3.5.1: optionalDependencies: fsevents "~2.3.2" -ci-info@^3.7.0, ci-info@^3.8.0: +ci-info@^3.7.0: version "3.9.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -clean-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" - integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== - dependencies: - escape-string-regexp "^1.0.5" - cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -1636,16 +1109,6 @@ commander@^4.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -1660,7 +1123,7 @@ cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -1694,19 +1157,7 @@ csv@^5.5.3: csv-stringify "^5.6.5" stream-transform "^2.1.3" -damerau-levenshtein@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -1733,11 +1184,6 @@ deep-eql@^4.1.3: dependencies: type-detect "^4.0.0" -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - defaults@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" @@ -1764,26 +1210,11 @@ define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -dequal@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - detect-indent@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== -detect-indent@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-7.0.1.tgz#cbb060a12842b9c4d333f1cac4aa4da1bb66bc25" - integrity sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g== - -detect-newline@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-4.0.1.tgz#fcefdb5713e1fb8cb2839b8b6ee22e6716ab8f23" - integrity sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog== - diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" @@ -1806,25 +1237,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dotenv@16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" - integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== - dotenv@^16.4.2: version "16.4.2" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.2.tgz#7ca798f89ae2011846bbdbf6470785307754120d" @@ -1835,11 +1247,6 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.4.648: - version "1.4.665" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.665.tgz#681700bd590b0e5a3be66e3e2874ce62abcf5da5" - integrity sha512-UpyCWObBoD+nSZgOC2ToaIdZB0r9GhqT2WahPKiSki6ckkSuKhQNso8V2PrFcHBMleI/eqbKgVQgVC4Wni4ilw== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -1850,14 +1257,6 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -enhanced-resolve@^5.12.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - enquirer@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" @@ -1918,38 +1317,12 @@ es-abstract@^1.22.1, es-abstract@^1.22.3: unbox-primitive "^1.0.2" which-typed-array "^1.1.13" -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-errors@^1.0.0, es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: +es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15: - version "1.0.16" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.16.tgz#495756d38dd5f9cc8e3091e913ee790d353e6f28" - integrity sha512-CREG2A9Vq7bpDRnldhFcMKuKArvkZtsH6Y0DHOHVg49qhf+LD8uEdUM3OkOAICv0EziGtDEnQtqY2/mfBILpFw== - dependencies: - asynciterator.prototype "^1.0.0" - call-bind "^1.0.6" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.3.0" - es-set-tostringtag "^2.0.2" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - globalthis "^1.0.3" - has-property-descriptors "^1.0.1" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - iterator.prototype "^1.1.2" - safe-array-concat "^1.1.0" - -es-set-tostringtag@^2.0.1, es-set-tostringtag@^2.0.2: +es-set-tostringtag@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== @@ -1958,7 +1331,7 @@ es-set-tostringtag@^2.0.1, es-set-tostringtag@^2.0.2: has-tostringtag "^1.0.0" hasown "^2.0.0" -es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: +es-shim-unscopables@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== @@ -2013,305 +1386,11 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.0.0, eslint-config-prettier@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-config-turbo@^1.11.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/eslint-config-turbo/-/eslint-config-turbo-1.12.3.tgz#53a1a1bbf9ea1a5cfe9e4bc422df089f5ff9fcbc" - integrity sha512-Q46MEOiNJpJWC3Et5/YEuIYYhbOieS04yZwQOinO2hpZw3folEXV+hbwVo8M+ap/q8gtpjIWiRMZ1A4QxmhEqQ== - dependencies: - eslint-plugin-turbo "1.12.3" - -eslint-import-resolver-alias@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz#297062890e31e4d6651eb5eba9534e1f6e68fc97" - integrity sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w== - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-import-resolver-typescript@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" - integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== - dependencies: - debug "^4.3.4" - enhanced-resolve "^5.12.0" - eslint-module-utils "^2.7.4" - fast-glob "^3.3.1" - get-tsconfig "^4.5.0" - is-core-module "^2.11.0" - is-glob "^4.0.3" - -eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - dependencies: - debug "^3.2.7" - -eslint-plugin-eslint-comments@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" - integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== - dependencies: - escape-string-regexp "^1.0.5" - ignore "^5.0.5" - -eslint-plugin-import@^2.28.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.15.0" - -eslint-plugin-jest@^27.2.3: - version "27.6.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.3.tgz#8acb8b1e45597fe1f4d4cf25163d90119efc12be" - integrity sha512-+YsJFVH6R+tOiO3gCJon5oqn4KWc+mDq2leudk8mrp8RFubLOo9CVyi3cib4L7XMpxExmkmBZQTPDYVBzgpgOA== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-jsx-a11y@^6.7.1: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== - dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" - array.prototype.flatmap "^1.3.2" - ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" - damerau-levenshtein "^1.0.8" - emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" - jsx-ast-utils "^3.3.5" - language-tags "^1.0.9" - minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - -eslint-plugin-only-warn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-only-warn/-/eslint-plugin-only-warn-1.1.0.tgz#c6ddc37ddc4e72c121f07be565fcb7b6671fe78a" - integrity sha512-2tktqUAT+Q3hCAU0iSf4xAN1k9zOpjK5WO8104mB0rT/dGhOa09582HN5HlbxNbPRZ0THV7nLGvzugcNOSjzfA== - -eslint-plugin-playwright@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-playwright/-/eslint-plugin-playwright-0.16.0.tgz#083c601a0704a7615509e63ac475bf7f0052d226" - integrity sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw== - -eslint-plugin-react-hooks@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react@^7.33.2: - version "7.33.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" - integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - es-iterator-helpers "^1.0.12" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.4" - semver "^6.3.1" - string.prototype.matchall "^4.0.8" - -eslint-plugin-testing-library@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.2.0.tgz#af3340b783c881eb19ec5ac6b3a4bfe8ab4a1f74" - integrity sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw== - dependencies: - "@typescript-eslint/utils" "^5.58.0" - -eslint-plugin-tsdoc@^0.2.17: - version "0.2.17" - resolved "https://registry.yarnpkg.com/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz#27789495bbd8778abbf92db1707fec2ed3dfe281" - integrity sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA== - dependencies: - "@microsoft/tsdoc" "0.14.2" - "@microsoft/tsdoc-config" "0.16.2" - -eslint-plugin-turbo@1.12.3: - version "1.12.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-turbo/-/eslint-plugin-turbo-1.12.3.tgz#c35927d29da5a25975cd32acd2f6064a89efb46a" - integrity sha512-7hEyxa+oP898EFNoxVenHlH8jtBwV1hbbIkdQWgqDcB0EmVNGVEZkYRo5Hm6BuMAjR433B+NISBJdj0bQo4/Lg== - dependencies: - dotenv "16.0.3" - -eslint-plugin-unicorn@^48.0.1: - version "48.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-48.0.1.tgz#a6573bc1687ae8db7121fdd8f92394b6549a6959" - integrity sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw== - dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - "@eslint-community/eslint-utils" "^4.4.0" - ci-info "^3.8.0" - clean-regexp "^1.0.0" - esquery "^1.5.0" - indent-string "^4.0.0" - is-builtin-module "^3.2.1" - jsesc "^3.0.2" - lodash "^4.17.21" - pluralize "^8.0.0" - read-pkg-up "^7.0.1" - regexp-tree "^0.1.27" - regjsparser "^0.10.0" - semver "^7.5.4" - strip-indent "^3.0.0" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.56.0: - version "8.56.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" - integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.56.0" - "@humanwhocodes/config-array" "^0.11.13" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.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.4.2, esquery@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - estree-walker@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" @@ -2319,11 +1398,6 @@ estree-walker@^3.0.3: dependencies: "@types/estree" "^1.0.0" -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - ethers@^6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.11.0.tgz#6d3e884ad36454c29d4662ae49439d5d04556c66" @@ -2381,12 +1455,7 @@ external-editor@^3.1.0: iconv-lite "^0.4.24" tmp "^0.0.33" -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: +fast-glob@^3.2.9: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -2397,16 +1466,11 @@ fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" @@ -2419,13 +1483,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2457,20 +1514,6 @@ find-yarn-workspace-root2@1.2.16: micromatch "^4.0.2" pkg-dir "^4.2.0" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -2504,11 +1547,6 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" @@ -2519,7 +1557,7 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: +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== @@ -2534,11 +1572,6 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -2549,7 +1582,7 @@ get-func-name@^2.0.1, get-func-name@^2.0.2: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== -get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -2560,11 +1593,6 @@ get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" -get-stdin@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575" - integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA== - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -2584,18 +1612,6 @@ get-symbol-description@^1.0.0: es-errors "^1.3.0" get-intrinsic "^1.2.4" -get-tsconfig@^4.5.0: - version "4.7.2" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" - integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== - dependencies: - resolve-pkg-maps "^1.0.0" - -git-hooks-list@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/git-hooks-list/-/git-hooks-list-3.1.0.tgz#386dc531dcc17474cf094743ff30987a3d3e70fc" - integrity sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA== - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -2603,13 +1619,6 @@ glob-parent@^5.1.2, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - glob@^10.3.10: version "10.3.10" resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" @@ -2621,30 +1630,6 @@ glob@^10.3.10: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -2652,7 +1637,7 @@ globalthis@^1.0.3: dependencies: define-properties "^1.1.3" -globby@^11.0.0, globby@^11.0.3, globby@^11.1.0: +globby@^11.0.0, globby@^11.0.3: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -2664,17 +1649,6 @@ globby@^11.0.0, globby@^11.0.3, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^13.1.2: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" - ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" - globrex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" @@ -2687,7 +1661,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -2697,11 +1671,6 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -2780,43 +1749,17 @@ iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4: +ignore@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.5, internal-slot@^1.0.7: +internal-slot@^1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== @@ -2838,13 +1781,6 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== -is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" - is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -2867,26 +1803,19 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.1.0, is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: +is-core-module@^2.13.0: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" -is-date-object@^1.0.1, is-date-object@^1.0.5: +is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -2898,37 +1827,18 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-function@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -2946,21 +1856,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-obj@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" - integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== - is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -2969,11 +1869,6 @@ is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-set@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - is-shared-array-buffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" @@ -3019,11 +1914,6 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.13, is-typed dependencies: which-typed-array "^1.1.14" -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - is-weakref@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" @@ -3031,14 +1921,6 @@ is-weakref@^1.0.2: dependencies: call-bind "^1.0.2" -is-weakset@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" - integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - is-windows@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -3059,17 +1941,6 @@ isows@1.0.3: resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.3.tgz#93c1cf0575daf56e7120bab5c8c448b0809d0d74" integrity sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg== -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - jackspeak@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" @@ -3079,17 +1950,12 @@ jackspeak@^2.3.5: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jju@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== - joycon@^3.0.1: version "3.1.1" resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -3102,56 +1968,12 @@ js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.6.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== -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-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.2.2, json5@^2.2.3: +json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -3168,28 +1990,11 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - just-extend@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -3200,26 +2005,6 @@ kleur@^4.1.5: resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== -language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== - -language-tags@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" - integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== - dependencies: - language-subtag-registry "^0.3.20" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - lilconfig@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" @@ -3277,11 +2062,6 @@ lodash.ismatch@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -3292,18 +2072,6 @@ lodash.startcase@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - loupe@^2.3.6, loupe@^2.3.7: version "2.3.7" resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" @@ -3324,13 +2092,6 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" -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" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -3410,20 +2171,13 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@9.0.3, minimatch@^9.0.1: +minimatch@^9.0.1: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - minimist-options@^4.0.2: version "4.1.0" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" @@ -3433,7 +2187,7 @@ minimist-options@^4.0.2: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.0, minimist@^1.2.6: +minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -3463,11 +2217,6 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -3482,11 +2231,6 @@ nanoid@^3.3.7: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - nise@^5.1.5: version "5.1.9" resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.9.tgz#0cb73b5e4499d738231a473cd89bd8afbb618139" @@ -3498,11 +2242,6 @@ nise@^5.1.5: just-extend "^6.2.0" path-to-regexp "^6.2.1" -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -3532,7 +2271,7 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" -object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -3557,59 +2296,6 @@ object.assign@^4.1.4: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.6, object.entries@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" - integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.fromentries@^2.0.6, object.fromentries@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.groupby@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.2.tgz#494800ff5bab78fd0eff2835ec859066e00192ec" - integrity sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw== - dependencies: - array.prototype.filter "^1.0.3" - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.0.0" - -object.hasown@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" - integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== - dependencies: - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.values@^1.1.6, object.values@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -3624,18 +2310,6 @@ onetime@^6.0.0: dependencies: mimic-fn "^4.0.0" -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -3698,13 +2372,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -3720,11 +2387,6 @@ path-exists@^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 sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -3735,7 +2397,7 @@ path-key@^4.0.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -3804,11 +2466,6 @@ pkg-types@^1.0.3: mlly "^1.2.0" pathe "^1.1.0" -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - postcss-load-config@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" @@ -3836,34 +2493,11 @@ preferred-pm@^3.0.0: path-exists "^4.0.0" which-pm "2.0.0" -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-plugin-organize-imports@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-3.2.4.tgz#77967f69d335e9c8e6e5d224074609309c62845e" - integrity sha512-6m8WBhIp0dfwu0SkgfOxJqh+HpdyfqSSLfKKRZSFbDuEQXDDndb8fTpRWkUrX/uBenkex3MgnVk0J3b3Y5byog== - -prettier-plugin-packagejson@^2.4.5: - version "2.4.10" - resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.4.10.tgz#6ce4aac8d305102f1ff8354f33767f0f001fef0e" - integrity sha512-qFzOfQDHi1tzvVJRuZ2jh1j6IFV5MURh5m5WDt+qfEMOf4SSL5RpwSysiX8u0W1PJYsM0vKJGNULt43wwteKiQ== - dependencies: - sort-package-json "2.7.0" - synckit "0.9.0" - prettier@^2.7.1: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -prettier@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== - pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -3873,15 +2507,6 @@ pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" -prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -3902,11 +2527,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -3956,30 +2576,12 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -reflect.getprototypeof@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz#e0bd28b597518f16edaf9c0e292c631eb13e0674" - integrity sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.0.0" - get-intrinsic "^1.2.3" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== -regexp-tree@^0.1.27: - version "0.1.27" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" - integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== - -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: +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== @@ -3988,13 +2590,6 @@ regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: define-properties "^1.2.0" set-function-name "^2.0.0" -regjsparser@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" - integrity sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA== - dependencies: - jsesc "~0.5.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4005,22 +2600,12 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -resolve@^1.10.0, resolve@^1.22.4: +resolve@^1.10.0: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -4029,35 +2614,11 @@ resolve@^1.10.0, resolve@^1.22.4: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^2.0.0-next.4: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@~1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - reusify@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rollup@^4.0.2, rollup@^4.2.0: version "4.10.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.10.0.tgz#244c2cb54a8de004a949fe6036a0801be9060456" @@ -4087,7 +2648,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-array-concat@^1.0.1, safe-array-concat@^1.1.0: +safe-array-concat@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== @@ -4116,12 +2677,7 @@ safe-regex-test@^1.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: +semver@^7.5.3: version "7.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== @@ -4145,7 +2701,7 @@ set-function-length@^1.2.0: gopd "^1.0.1" has-property-descriptors "^1.0.1" -set-function-name@^2.0.0, set-function-name@^2.0.1: +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== @@ -4220,11 +2776,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - smartwrap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-2.0.2.tgz#7e25d3dd58b51c6ca4aba3a9e391650ea62698a4" @@ -4237,24 +2788,6 @@ smartwrap@^2.0.2: wcwidth "^1.0.1" yargs "^15.1.0" -sort-object-keys@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/sort-object-keys/-/sort-object-keys-1.1.3.tgz#bff833fe85cab147b34742e45863453c1e190b45" - integrity sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg== - -sort-package-json@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/sort-package-json/-/sort-package-json-2.7.0.tgz#41b52710939d7e3a4e328eb92c2136db43a6407d" - integrity sha512-6AayF8bp6L+WROgpbhTMUtB9JSFmpGHjmW7DyaNPS1HwlTw2oSVlUUtlkHSEZmg5o89F3zvLBZNvMeZ1T4fjQg== - dependencies: - detect-indent "^7.0.1" - detect-newline "^4.0.0" - get-stdin "^9.0.0" - git-hooks-list "^3.0.0" - globby "^13.1.2" - is-plain-obj "^4.1.0" - sort-object-keys "^1.1.3" - source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -4341,21 +2874,6 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" - integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - regexp.prototype.flags "^1.5.0" - set-function-name "^2.0.0" - side-channel "^1.0.4" - 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" @@ -4419,11 +2937,6 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - strip-literal@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.3.0.tgz#db3942c2ec1699e6836ad230090b84bb458e3a07" @@ -4463,29 +2976,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -synckit@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.0.tgz#5b33b458b3775e4466a5b377fba69c63572ae449" - integrity sha512-7RnqIMq572L8PeEzKeBINYEJDDxpcH8JEgLwUqBd3TkofhFRbkq4QLR0u+36avGAhCRbk2nnmjcW9SE531hPDg== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - term-size@^2.1.0: version "2.2.1" resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -4522,11 +3017,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -4551,11 +3041,6 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -ts-api-utils@^1.0.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.2.1.tgz#f716c7e027494629485b21c0df6180f4d08f5e8b" - integrity sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA== - ts-interface-checker@^0.1.9: version "0.1.13" resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" @@ -4585,16 +3070,6 @@ tsconfck@^3.0.1: resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.0.2.tgz#d8e279f7a049d55f207f528d13fa493e1d8e7ceb" integrity sha512-6lWtFjwuhS3XI4HsX4Zg0izOI3FU/AI9EGVlPEUMDIhvLPMD4wkiof0WCoDgW7qY+Dy198g4d9miAqUHWHFH6Q== -tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - tsconfig-paths@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" @@ -4609,16 +3084,6 @@ tslib@2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - tsup@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/tsup/-/tsup-8.0.2.tgz#c63192a08386515103e2c44ac5a23bdff75c5fa1" @@ -4639,13 +3104,6 @@ tsup@^8.0.2: sucrase "^3.20.3" tree-kill "^1.2.2" -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - tty-table@^4.1.5: version "4.2.3" resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.2.3.tgz#e33eb4007a0a9c976c97c37fa13ba66329a5c515" @@ -4701,13 +3159,6 @@ turbo@latest: turbo-windows-64 "1.12.3" turbo-windows-arm64 "1.12.3" -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -4718,11 +3169,6 @@ type-fest@^0.13.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -4797,21 +3243,6 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -4929,34 +3360,6 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - which-module@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" @@ -4970,7 +3373,7 @@ which-pm@2.0.0: load-yaml-file "^0.2.0" path-exists "^4.0.0" -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.9: +which-typed-array@^1.1.13, which-typed-array@^1.1.14: version "1.1.14" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== @@ -5030,11 +3433,6 @@ wrap-ansi@^8.1.0: string-width "^5.0.1" strip-ansi "^7.0.1" -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - ws@8.13.0: version "8.13.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" @@ -5060,11 +3458,6 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"