From 7b515cbfd0f5bbeea1800a03b47f389baacabfbc Mon Sep 17 00:00:00 2001 From: Patrick Niemeyer Date: Thu, 30 Nov 2023 09:46:12 -0600 Subject: [PATCH] dapp: Remove the old react/typescript version of the dapp. --- web-ethereum/orchid_dapp/.gitignore | 28 - web-ethereum/orchid_dapp/README.md | 20 - web-ethereum/orchid_dapp/makefile | 11 - web-ethereum/orchid_dapp/package-lock.json | 17016 ---------------- web-ethereum/orchid_dapp/package.json | 58 - .../orchid_dapp/public/earn/index.html | 12 - web-ethereum/orchid_dapp/public/favicon.ico | Bin 312888 -> 0 bytes web-ethereum/orchid_dapp/public/index.html | 22 - web-ethereum/orchid_dapp/public/logo192.png | Bin 4098 -> 0 bytes web-ethereum/orchid_dapp/public/logo512.png | Bin 20384 -> 0 bytes web-ethereum/orchid_dapp/public/manifest.json | 15 - web-ethereum/orchid_dapp/public/robots.txt | 2 - .../orchid_dapp/scripts/generate-i18n.js | 21 - web-ethereum/orchid_dapp/scripts/pbust.py | 74 - .../orchid_dapp/src/api/chains/chains.ts | 1129 - .../orchid_dapp/src/api/etherscan-io.ts | 164 - .../orchid_dapp/src/api/orchid-api.ts | 306 - .../orchid_dapp/src/api/orchid-eth-mock.ts | 111 - .../src/api/orchid-eth-token-types.ts | 200 - .../orchid_dapp/src/api/orchid-eth-types.ts | 125 - .../orchid_dapp/src/api/orchid-eth-web3.ts | 401 - .../orchid_dapp/src/api/orchid-eth.ts | 119 - .../orchid_dapp/src/api/orchid-lottery.ts | 84 - .../src/api/orchid-market-conditions.ts | 73 - .../orchid_dapp/src/api/orchid-pricing.ts | 60 - web-ethereum/orchid_dapp/src/api/orchid-tx.ts | 228 - .../src/api/v0/orchid-eth-contract-v0.ts | 1006 - .../src/api/v0/orchid-eth-market-v0.ts | 96 - .../src/api/v0/orchid-eth-pricing-v0.ts | 53 - .../orchid_dapp/src/api/v0/orchid-eth-v0.ts | 499 - .../src/api/v1/orchid-eth-contract-v1.ts | 246 - .../src/api/v1/orchid-eth-market-v1.ts | 61 - .../orchid_dapp/src/api/v1/orchid-eth-v1.ts | 449 - .../orchid_dapp/src/assets/add-outlined.svg | 14 - web-ethereum/orchid_dapp/src/assets/add.svg | 14 - web-ethereum/orchid_dapp/src/assets/ants.svg | 170 - .../orchid_dapp/src/assets/beaver1.svg | 32 - web-ethereum/orchid_dapp/src/assets/bugs.png | Bin 140211 -> 0 bytes .../orchid_dapp/src/assets/coinbase.jpg | Bin 55265 -> 0 bytes .../orchid_dapp/src/assets/more-outlined.svg | 14 - web-ethereum/orchid_dapp/src/assets/more.svg | 14 - .../orchid_dapp/src/assets/name-logo.svg | 31 - .../src/assets/orchid-token-purple.svg | 12 - .../src/assets/overview-outlined.svg | 14 - .../orchid_dapp/src/assets/overview.svg | 14 - .../assets/wallet-logos/coinbasewallet.svg | 1 - .../src/assets/wallet-logos/metamask.png | Bin 6756 -> 0 bytes .../src/assets/withdraw-outlined.svg | 14 - .../orchid_dapp/src/assets/withdraw.svg | 14 - .../src/components/AccountQRCode.css | 8 - .../src/components/AccountQRCode.tsx | 69 - .../orchid_dapp/src/components/AddFunds.css | 86 - .../orchid_dapp/src/components/AddFunds.tsx | 813 - .../orchid_dapp/src/components/DebugPanel.css | 17 - .../orchid_dapp/src/components/DebugPanel.tsx | 41 - .../src/components/EfficiencyMeter.tsx | 51 - .../src/components/EfficiencySlider.css | 55 - .../src/components/EfficiencySlider.tsx | 56 - .../orchid_dapp/src/components/Header.css | 24 - .../orchid_dapp/src/components/Header.tsx | 199 - .../orchid_dapp/src/components/Info.css | 7 - .../orchid_dapp/src/components/Info.tsx | 255 - .../orchid_dapp/src/components/Layout.css | 109 - .../orchid_dapp/src/components/Layout.tsx | 163 - .../orchid_dapp/src/components/LockFunds.tsx | 87 - .../orchid_dapp/src/components/LockStatus.tsx | 59 - .../src/components/LowFundsPanel.tsx | 148 - .../src/components/MarketConditionsPanel.tsx | 126 - .../orchid_dapp/src/components/MoveFunds.tsx | 127 - .../orchid_dapp/src/components/NoWallet.css | 90 - .../orchid_dapp/src/components/NoWallet.tsx | 73 - .../src/components/ProgressLine.css | 18 - .../src/components/ProgressLine.js | 44 - .../src/components/RouteContext.tsx | 39 - .../orchid_dapp/src/components/Spacer.tsx | 11 - .../orchid_dapp/src/components/StakeFunds.tsx | 211 - .../src/components/SubmitButton.tsx | 22 - .../src/components/TransactionPanel.tsx | 186 - .../src/components/TransactionProgress.tsx | 92 - .../src/components/Transactions.css | 41 - .../src/components/Transactions.tsx | 60 - .../src/components/WithdrawFunds.tsx | 189 - .../orchid_dapp/src/css/app-style.css | 111 - .../orchid_dapp/src/css/button-style.css | 130 - .../orchid_dapp/src/css/form-style.css | 177 - .../orchid_dapp/src/css/jquery-ui.min.css | 1 - web-ethereum/orchid_dapp/src/i18n/S.ts | 200 - web-ethereum/orchid_dapp/src/i18n/en.json | 132 - .../orchid_dapp/src/i18n/i18n_util.ts | 17 - web-ethereum/orchid_dapp/src/i18n/id.json | 104 - web-ethereum/orchid_dapp/src/i18n/ja.json | 104 - web-ethereum/orchid_dapp/src/i18n/ko.json | 104 - web-ethereum/orchid_dapp/src/i18n/ru.json | 104 - web-ethereum/orchid_dapp/src/i18n/zh.json | 104 - web-ethereum/orchid_dapp/src/index.css | 13 - web-ethereum/orchid_dapp/src/index.tsx | 141 - .../orchid_dapp/src/react-app-env.d.ts | 1 - .../orchid_dapp/src/util/async-util.ts | 63 - web-ethereum/orchid_dapp/src/util/util.tsx | 195 - web-ethereum/orchid_dapp/tsconfig.json | 31 - 100 files changed, 28355 deletions(-) delete mode 100644 web-ethereum/orchid_dapp/.gitignore delete mode 100644 web-ethereum/orchid_dapp/README.md delete mode 100644 web-ethereum/orchid_dapp/makefile delete mode 100644 web-ethereum/orchid_dapp/package-lock.json delete mode 100644 web-ethereum/orchid_dapp/package.json delete mode 100644 web-ethereum/orchid_dapp/public/earn/index.html delete mode 100644 web-ethereum/orchid_dapp/public/favicon.ico delete mode 100644 web-ethereum/orchid_dapp/public/index.html delete mode 100644 web-ethereum/orchid_dapp/public/logo192.png delete mode 100644 web-ethereum/orchid_dapp/public/logo512.png delete mode 100644 web-ethereum/orchid_dapp/public/manifest.json delete mode 100644 web-ethereum/orchid_dapp/public/robots.txt delete mode 100644 web-ethereum/orchid_dapp/scripts/generate-i18n.js delete mode 100644 web-ethereum/orchid_dapp/scripts/pbust.py delete mode 100644 web-ethereum/orchid_dapp/src/api/chains/chains.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/etherscan-io.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-api.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-eth-mock.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-eth-token-types.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-eth-types.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-eth-web3.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-eth.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-lottery.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-market-conditions.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-pricing.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/orchid-tx.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/v0/orchid-eth-contract-v0.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/v0/orchid-eth-market-v0.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/v0/orchid-eth-pricing-v0.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/v0/orchid-eth-v0.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/v1/orchid-eth-contract-v1.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/v1/orchid-eth-market-v1.ts delete mode 100644 web-ethereum/orchid_dapp/src/api/v1/orchid-eth-v1.ts delete mode 100644 web-ethereum/orchid_dapp/src/assets/add-outlined.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/add.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/ants.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/beaver1.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/bugs.png delete mode 100644 web-ethereum/orchid_dapp/src/assets/coinbase.jpg delete mode 100644 web-ethereum/orchid_dapp/src/assets/more-outlined.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/more.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/name-logo.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/orchid-token-purple.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/overview-outlined.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/overview.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/wallet-logos/coinbasewallet.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/wallet-logos/metamask.png delete mode 100644 web-ethereum/orchid_dapp/src/assets/withdraw-outlined.svg delete mode 100644 web-ethereum/orchid_dapp/src/assets/withdraw.svg delete mode 100644 web-ethereum/orchid_dapp/src/components/AccountQRCode.css delete mode 100644 web-ethereum/orchid_dapp/src/components/AccountQRCode.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/AddFunds.css delete mode 100644 web-ethereum/orchid_dapp/src/components/AddFunds.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/DebugPanel.css delete mode 100644 web-ethereum/orchid_dapp/src/components/DebugPanel.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/EfficiencyMeter.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/EfficiencySlider.css delete mode 100644 web-ethereum/orchid_dapp/src/components/EfficiencySlider.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/Header.css delete mode 100644 web-ethereum/orchid_dapp/src/components/Header.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/Info.css delete mode 100644 web-ethereum/orchid_dapp/src/components/Info.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/Layout.css delete mode 100644 web-ethereum/orchid_dapp/src/components/Layout.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/LockFunds.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/LockStatus.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/LowFundsPanel.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/MarketConditionsPanel.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/MoveFunds.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/NoWallet.css delete mode 100644 web-ethereum/orchid_dapp/src/components/NoWallet.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/ProgressLine.css delete mode 100644 web-ethereum/orchid_dapp/src/components/ProgressLine.js delete mode 100644 web-ethereum/orchid_dapp/src/components/RouteContext.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/Spacer.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/StakeFunds.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/SubmitButton.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/TransactionPanel.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/TransactionProgress.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/Transactions.css delete mode 100644 web-ethereum/orchid_dapp/src/components/Transactions.tsx delete mode 100644 web-ethereum/orchid_dapp/src/components/WithdrawFunds.tsx delete mode 100644 web-ethereum/orchid_dapp/src/css/app-style.css delete mode 100755 web-ethereum/orchid_dapp/src/css/button-style.css delete mode 100644 web-ethereum/orchid_dapp/src/css/form-style.css delete mode 120000 web-ethereum/orchid_dapp/src/css/jquery-ui.min.css delete mode 100644 web-ethereum/orchid_dapp/src/i18n/S.ts delete mode 100644 web-ethereum/orchid_dapp/src/i18n/en.json delete mode 100644 web-ethereum/orchid_dapp/src/i18n/i18n_util.ts delete mode 100644 web-ethereum/orchid_dapp/src/i18n/id.json delete mode 100644 web-ethereum/orchid_dapp/src/i18n/ja.json delete mode 100644 web-ethereum/orchid_dapp/src/i18n/ko.json delete mode 100644 web-ethereum/orchid_dapp/src/i18n/ru.json delete mode 100644 web-ethereum/orchid_dapp/src/i18n/zh.json delete mode 100644 web-ethereum/orchid_dapp/src/index.css delete mode 100644 web-ethereum/orchid_dapp/src/index.tsx delete mode 100644 web-ethereum/orchid_dapp/src/react-app-env.d.ts delete mode 100644 web-ethereum/orchid_dapp/src/util/async-util.ts delete mode 100644 web-ethereum/orchid_dapp/src/util/util.tsx delete mode 100644 web-ethereum/orchid_dapp/tsconfig.json diff --git a/web-ethereum/orchid_dapp/.gitignore b/web-ethereum/orchid_dapp/.gitignore deleted file mode 100644 index 7d3d0f620..000000000 --- a/web-ethereum/orchid_dapp/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -.idea -.packages -*.log -a - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# production -/build - -# misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/web-ethereum/orchid_dapp/README.md b/web-ethereum/orchid_dapp/README.md deleted file mode 100644 index 0ed572392..000000000 --- a/web-ethereum/orchid_dapp/README.md +++ /dev/null @@ -1,20 +0,0 @@ - -## Build - -### `make` - -The makefile performs `npm install` and `npm run build` as needed. - -## Scripts - -### `npm start` - -Runs the app in the development mode.
-Open [http://localhost:3000](http://localhost:3000) to view it in the browser. - -The page will reload if you make edits.
-You will also see any lint errors in the console. - -### `npm run i18n` - -Generate the (`S.ts`) typescript API used in localization. diff --git a/web-ethereum/orchid_dapp/makefile b/web-ethereum/orchid_dapp/makefile deleted file mode 100644 index dd7097e71..000000000 --- a/web-ethereum/orchid_dapp/makefile +++ /dev/null @@ -1,11 +0,0 @@ - -.PHONY: all -all: node_modules build - -node_modules: - npm install - -.PHONY: build -build: - npm run build - diff --git a/web-ethereum/orchid_dapp/package-lock.json b/web-ethereum/orchid_dapp/package-lock.json deleted file mode 100644 index 2489c437e..000000000 --- a/web-ethereum/orchid_dapp/package-lock.json +++ /dev/null @@ -1,17016 +0,0 @@ -{ - "name": "orchid_dapp", - "version": "0.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", - "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/compat-data": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz", - "integrity": "sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw==" - }, - "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.9.0", - "@babel/helper-module-transforms": "^7.9.0", - "@babel/helpers": "^7.9.0", - "@babel/parser": "^7.9.0", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.9.0", - "@babel/types": "^7.9.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/generator": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", - "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", - "requires": { - "@babel/types": "^7.12.5", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", - "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", - "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", - "requires": { - "@babel/helper-explode-assignable-expression": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", - "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-builder-react-jsx-experimental": { - "version": "7.12.4", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz", - "integrity": "sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-module-imports": "^7.12.1", - "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "requires": { - "@babel/types": "^7.12.5" - } - }, - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", - "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", - "requires": { - "@babel/compat-data": "^7.12.5", - "@babel/helper-validator-option": "^7.12.1", - "browserslist": "^4.14.5", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", - "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.7.tgz", - "integrity": "sha512-idnutvQPdpbduutvi3JVfEgcVIHooQnhvhx0Nk9isOINOIGYkZea1Pk2JlJRiUnMefrlvr0vkByATBY/mB4vjQ==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-define-map": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", - "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/types": "^7.10.5", - "lodash": "^4.17.19" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", - "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", - "requires": { - "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", - "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "requires": { - "@babel/helper-get-function-arity": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", - "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", - "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", - "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", - "requires": { - "@babel/types": "^7.12.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", - "requires": { - "@babel/types": "^7.10.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", - "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-simple-access": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/helper-validator-identifier": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "requires": { - "@babel/types": "^7.12.5" - } - }, - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz", - "integrity": "sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==", - "requires": { - "@babel/types": "^7.12.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-plugin-utils": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", - "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", - "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-wrap-function": "^7.10.4", - "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-replace-supers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", - "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", - "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.1", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-simple-access": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", - "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", - "requires": { - "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", - "requires": { - "@babel/types": "^7.12.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", - "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "requires": { - "@babel/types": "^7.11.0" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", - "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" - }, - "@babel/helper-validator-option": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", - "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==" - }, - "@babel/helper-wrap-function": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", - "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/helpers": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", - "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", - "requires": { - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.5", - "@babel/types": "^7.12.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/highlight": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", - "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.7.tgz", - "integrity": "sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==" - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", - "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", - "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz", - "integrity": "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-decorators": "^7.8.3" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", - "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-dynamic-import": "^7.8.0" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", - "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", - "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.0" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", - "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", - "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.7.tgz", - "integrity": "sha512-8c+uy0qmnRTeukiGsjLGy6uVs/TFjJchGXUeBqlG4VWYOdJWkhhVPdQ3uHwbmalfJwv2JsV0qffXP4asRfL2SQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", - "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.12.1" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", - "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.7.tgz", - "integrity": "sha512-4ovylXZ0PWmwoOvhU2vhnzVNnm88/Sm9nx7V8BPgMvAzn5zDou3/Awy0EjglyubVHasJj+XCEkr/r1X3P5elCA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", - "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", - "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", - "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz", - "integrity": "sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz", - "integrity": "sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", - "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", - "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", - "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", - "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", - "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.12.1" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "requires": { - "@babel/types": "^7.12.5" - } - }, - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", - "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", - "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", - "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-define-map": "^7.10.4", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1", - "@babel/helper-split-export-declaration": "^7.10.4", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", - "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", - "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", - "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", - "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", - "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", - "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-flow": "^7.8.3" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", - "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", - "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", - "requires": { - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", - "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", - "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", - "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", - "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", - "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", - "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.12.1", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", - "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", - "requires": { - "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-identifier": "^7.10.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", - "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", - "requires": { - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", - "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", - "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", - "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.12.1" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", - "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", - "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz", - "integrity": "sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", - "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.7.tgz", - "integrity": "sha512-YFlTi6MEsclFAPIDNZYiCRbneg1MFGao9pPG9uD5htwE0vDbPaMUMeYd6itWjw7K4kro4UbdQf3ljmFl9y48dQ==", - "requires": { - "@babel/helper-builder-react-jsx": "^7.10.4", - "@babel/helper-builder-react-jsx-experimental": "^7.12.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.12.1" - } - }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.7.tgz", - "integrity": "sha512-Rs3ETtMtR3VLXFeYRChle5SsP/P9Jp/6dsewBQfokDSzKJThlsuFcnzLTDRALiUmTC48ej19YD9uN1mupEeEDg==", - "requires": { - "@babel/helper-builder-react-jsx-experimental": "^7.12.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.12.1" - } - }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", - "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", - "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", - "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", - "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", - "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", - "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "resolve": "^1.8.1", - "semver": "^5.5.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", - "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", - "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.7.tgz", - "integrity": "sha512-VEiqZL5N/QvDbdjfYQBhruN0HYjSPjC4XkeqW4ny/jNtH9gcbgaqBIXYEZCNnESMAGs0/K/R7oFGMhOyu/eIxg==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", - "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", - "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-typescript": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", - "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-typescript": "^7.12.1" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", - "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", - "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/preset-env": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.7.tgz", - "integrity": "sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==", - "requires": { - "@babel/compat-data": "^7.12.7", - "@babel/helper-compilation-targets": "^7.12.5", - "@babel/helper-module-imports": "^7.12.5", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.7", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.7", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.7", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.1", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.7", - "core-js-compat": "^3.7.0", - "semver": "^5.5.0" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", - "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", - "requires": { - "@babel/types": "^7.12.5" - } - }, - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - } - }, - "@babel/preset-react": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.7.tgz", - "integrity": "sha512-wKeTdnGUP5AEYCYQIMeXMMwU7j+2opxrG0WzuZfxuuW9nhKvvALBjl67653CWamZJVefuJGI219G591RSldrqQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-react-display-name": "^7.12.1", - "@babel/plugin-transform-react-jsx": "^7.12.7", - "@babel/plugin-transform-react-jsx-development": "^7.12.7", - "@babel/plugin-transform-react-jsx-self": "^7.12.1", - "@babel/plugin-transform-react-jsx-source": "^7.12.1", - "@babel/plugin-transform-react-pure-annotations": "^7.12.1" - } - }, - "@babel/preset-typescript": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz", - "integrity": "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-transform-typescript": "^7.9.0" - } - }, - "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz", - "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==", - "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", - "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/traverse": { - "version": "7.12.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.9.tgz", - "integrity": "sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==", - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-function-name": "^7.10.4", - "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.12.7", - "@babel/types": "^7.12.7", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/types": { - "version": "7.12.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.7.tgz", - "integrity": "sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, - "@csstools/convert-colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", - "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==" - }, - "@csstools/normalize.css": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", - "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==" - }, - "@emotion/is-prop-valid": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", - "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "requires": { - "@emotion/memoize": "0.7.4" - } - }, - "@emotion/memoize": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - }, - "@emotion/stylis": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - }, - "@emotion/unitless": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - }, - "@ethersproject/abi": { - "version": "5.0.0-beta.153", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz", - "integrity": "sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg==", - "requires": { - "@ethersproject/address": ">=5.0.0-beta.128", - "@ethersproject/bignumber": ">=5.0.0-beta.130", - "@ethersproject/bytes": ">=5.0.0-beta.129", - "@ethersproject/constants": ">=5.0.0-beta.128", - "@ethersproject/hash": ">=5.0.0-beta.128", - "@ethersproject/keccak256": ">=5.0.0-beta.127", - "@ethersproject/logger": ">=5.0.0-beta.129", - "@ethersproject/properties": ">=5.0.0-beta.131", - "@ethersproject/strings": ">=5.0.0-beta.130" - } - }, - "@ethersproject/abstract-provider": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.5.tgz", - "integrity": "sha512-i/CjElAkzV7vQBAeoz+IpjGfcFYEP9eD7j3fzZ0fzTq03DO7PPnR+xkEZ1IoDXGwDS+55aLM1xvLDwB/Lx6IOQ==", - "requires": { - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/networks": "^5.0.3", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/transactions": "^5.0.5", - "@ethersproject/web": "^5.0.6" - } - }, - "@ethersproject/abstract-signer": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.7.tgz", - "integrity": "sha512-8W8gy/QutEL60EoMEpvxZ8MFAEWs/JvH5nmZ6xeLXoZvmBCasGmxqHdYjo2cxg0nevkPkq9SeenSsBBZSCx+SQ==", - "requires": { - "@ethersproject/abstract-provider": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3" - } - }, - "@ethersproject/address": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.5.tgz", - "integrity": "sha512-DpkQ6rwk9jTefrRsJzEm6nhRiJd9pvhn1xN0rw5N/jswXG5r7BLk/GVA0mMAVWAsYfvi2xSc5L41FMox43RYEA==", - "requires": { - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/rlp": "^5.0.3", - "bn.js": "^4.4.0" - } - }, - "@ethersproject/base64": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.4.tgz", - "integrity": "sha512-4KRykQ7BQMeOXfvio1YITwHjxwBzh92UoXIdzxDE1p53CK28bbHPdsPNYo0wl0El7lJAMpT2SOdL0hhbWRnyIA==", - "requires": { - "@ethersproject/bytes": "^5.0.4" - } - }, - "@ethersproject/bignumber": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.8.tgz", - "integrity": "sha512-KXFVAFKS1jdTXYN8BE5Oj+ZfPMh28iRdFeNGBVT6cUFdtiPVqeXqc0ggvBqA3A1VoFFGgM7oAeaagA393aORHA==", - "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "bn.js": "^4.4.0" - } - }, - "@ethersproject/bytes": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.5.tgz", - "integrity": "sha512-IEj9HpZB+ACS6cZ+QQMTqmu/cnUK2fYNE6ms/PVxjoBjoxc6HCraLpam1KuRvreMy0i523PLmjN8OYeikRdcUQ==", - "requires": { - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/constants": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.5.tgz", - "integrity": "sha512-foaQVmxp2+ik9FrLUCtVrLZCj4M3Ibgkqvh+Xw/vFRSerkjVSYePApaVE5essxhoSlF1U9oXfWY09QI2AXtgKA==", - "requires": { - "@ethersproject/bignumber": "^5.0.7" - } - }, - "@ethersproject/hash": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.6.tgz", - "integrity": "sha512-Gvh57v6BWhwnud6l7tMfQm32PRQ2DYx2WaAAQmAxAfYvmzUkpQCBstnGeNMXIL8/2wdkvcB2u+WZRWaZtsFuUQ==", - "requires": { - "@ethersproject/abstract-signer": "^5.0.6", - "@ethersproject/address": "^5.0.5", - "@ethersproject/bignumber": "^5.0.8", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.4", - "@ethersproject/strings": "^5.0.4" - } - }, - "@ethersproject/keccak256": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.4.tgz", - "integrity": "sha512-GNpiOUm9PGUxFNqOxYKDQBM0u68bG9XC9iOulEQ8I0tOx/4qUpgVzvgXL6ugxr0RY554Gz/NQsVqknqPzUcxpQ==", - "requires": { - "@ethersproject/bytes": "^5.0.4", - "js-sha3": "0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - } - } - }, - "@ethersproject/logger": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.6.tgz", - "integrity": "sha512-FrX0Vnb3JZ1md/7GIZfmJ06XOAA8r3q9Uqt9O5orr4ZiksnbpXKlyDzQtlZ5Yv18RS8CAUbiKH9vwidJg1BPmQ==" - }, - "@ethersproject/networks": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.4.tgz", - "integrity": "sha512-/wHDTRms5mpJ09BoDrbNdFWINzONe05wZRgohCXvEv39rrH/Gd/yAnct8wC0RsW3tmFOgjgQxuBvypIxuUynTw==", - "requires": { - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/properties": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.4.tgz", - "integrity": "sha512-UdyX3GqBxFt15B0uSESdDNmhvEbK3ACdDXl2soshoPcneXuTswHDeA0LoPlnaZzhbgk4p6jqb4GMms5C26Qu6A==", - "requires": { - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/rlp": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.4.tgz", - "integrity": "sha512-5qrrZad7VTjofxSsm7Zg/7Dr4ZOln4S2CqiDdOuTv6MBKnXj0CiBojXyuDy52M8O3wxH0CyE924hXWTDV1PQWQ==", - "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/signing-key": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.5.tgz", - "integrity": "sha512-Z1wY7JC1HVO4CvQWY2TyTTuAr8xK3bJijZw1a9G92JEmKdv1j255R/0YLBBcFTl2J65LUjtXynNJ2GbArPGi5g==", - "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "elliptic": "6.5.3" - } - }, - "@ethersproject/strings": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.5.tgz", - "integrity": "sha512-JED6WaIV00xM/gvj8vSnd+0VWtDYdidTmavFRCTQakqfz+4tDo6Jz5LHgG+dd45h7ah7ykCHW0C7ZXWEDROCXQ==", - "requires": { - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/logger": "^5.0.5" - } - }, - "@ethersproject/transactions": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.6.tgz", - "integrity": "sha512-htsFhOD+NMBxx676A8ehSuwVV49iqpSB+CkjPZ02tpNew0K6p8g0CZ46Z1ZP946gIHAU80xQ0NACHYrjIUaCFA==", - "requires": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/rlp": "^5.0.3", - "@ethersproject/signing-key": "^5.0.4" - } - }, - "@ethersproject/web": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.9.tgz", - "integrity": "sha512-//QNlv1MSkOII1hv3+HQwWoiVFS+BMVGI0KYeUww4cyrEktnx1QIez5bTSab9s9fWTFaWKNmQNBwMbxAqPuYDw==", - "requires": { - "@ethersproject/base64": "^5.0.3", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" - } - }, - "@formatjs/intl-displaynames": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-1.2.10.tgz", - "integrity": "sha512-GROA2RP6+7Ouu0WnHFF78O5XIU7pBfI19WM1qm93l6MFWibUk67nCfVCK3VAYJkLy8L8ZxjkYT11VIAfvSz8wg==", - "requires": { - "@formatjs/intl-utils": "^2.3.0" - } - }, - "@formatjs/intl-listformat": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-1.4.8.tgz", - "integrity": "sha512-WNMQlEg0e50VZrGIkgD5n7+DAMGt3boKi1GJALfhFMymslJb5i+5WzWxyj/3a929Z6MAFsmzRIJjKuv+BxKAOQ==", - "requires": { - "@formatjs/intl-utils": "^2.3.0" - } - }, - "@formatjs/intl-relativetimeformat": { - "version": "4.5.16", - "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-4.5.16.tgz", - "integrity": "sha512-IQ0haY97oHAH5OYUdykNiepdyEWj3SAT+Fp9ZpR85ov2JNiFx+12WWlxlVS8ehdyncC2ZMt/SwFIy2huK2+6/A==", - "requires": { - "@formatjs/intl-utils": "^2.3.0" - } - }, - "@formatjs/intl-unified-numberformat": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@formatjs/intl-unified-numberformat/-/intl-unified-numberformat-3.3.7.tgz", - "integrity": "sha512-KnWgLRHzCAgT9eyt3OS34RHoyD7dPDYhRcuKn+/6Kv2knDF8Im43J6vlSW6Hm1w63fNq3ZIT1cFk7RuVO3Psag==", - "requires": { - "@formatjs/intl-utils": "^2.3.0" - } - }, - "@formatjs/intl-utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl-utils/-/intl-utils-2.3.0.tgz", - "integrity": "sha512-KWk80UPIzPmUg+P0rKh6TqspRw0G6eux1PuJr+zz47ftMaZ9QDwbGzHZbtzWkl5hgayM/qrKRutllRC7D/vVXQ==" - }, - "@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" - }, - "@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" - }, - "@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" - }, - "@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "requires": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "requires": { - "@hapi/hoek": "^8.3.0" - } - }, - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", - "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" - } - }, - "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } - } - }, - "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", - "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", - "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" - } - }, - "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", - "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } - }, - "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", - "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" - } - }, - "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" - }, - "@popperjs/core": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.5.4.tgz", - "integrity": "sha512-ZpKr+WTb8zsajqgDkvCEWgp6d5eJT6Q63Ng2neTbzBO76Lbe91vX/iVIW9dikq+Fs3yEo+ls4cxeXABD2LtcbQ==" - }, - "@restart/context": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz", - "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==" - }, - "@restart/hooks": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.25.tgz", - "integrity": "sha512-m2v3N5pxTsIiSH74/sb1yW8D9RxkJidGW+5Mfwn/lHb2QzhZNlaU1su7abSyT9EGf0xS/0waLjrf7/XxQHUk7w==", - "requires": { - "lodash": "^4.17.15", - "lodash-es": "^4.17.15" - } - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", - "integrity": "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==" - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz", - "integrity": "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==" - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz", - "integrity": "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==" - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz", - "integrity": "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==" - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz", - "integrity": "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==" - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz", - "integrity": "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==" - }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz", - "integrity": "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==" - }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz", - "integrity": "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==" - }, - "@svgr/babel-preset": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz", - "integrity": "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==", - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0", - "@svgr/babel-plugin-svg-dynamic-title": "^4.3.3", - "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0", - "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0", - "@svgr/babel-plugin-transform-svg-component": "^4.2.0" - } - }, - "@svgr/core": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz", - "integrity": "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==", - "requires": { - "@svgr/plugin-jsx": "^4.3.3", - "camelcase": "^5.3.1", - "cosmiconfig": "^5.2.1" - } - }, - "@svgr/hast-util-to-babel-ast": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz", - "integrity": "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==", - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@svgr/plugin-jsx": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz", - "integrity": "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==", - "requires": { - "@babel/core": "^7.4.5", - "@svgr/babel-preset": "^4.3.3", - "@svgr/hast-util-to-babel-ast": "^4.3.2", - "svg-parser": "^2.0.0" - } - }, - "@svgr/plugin-svgo": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz", - "integrity": "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==", - "requires": { - "cosmiconfig": "^5.2.1", - "merge-deep": "^3.0.2", - "svgo": "^1.2.2" - } - }, - "@svgr/webpack": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz", - "integrity": "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==", - "requires": { - "@babel/core": "^7.4.5", - "@babel/plugin-transform-react-constant-elements": "^7.0.0", - "@babel/preset-env": "^7.4.5", - "@babel/preset-react": "^7.0.0", - "@svgr/core": "^4.3.3", - "@svgr/plugin-jsx": "^4.3.3", - "@svgr/plugin-svgo": "^4.3.1", - "loader-utils": "^1.2.3" - } - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "@types/babel__core": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", - "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.0.16", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.16.tgz", - "integrity": "sha512-S63Dt4CZOkuTmpLGGWtT/mQdVORJOpx6SZWGVaP56dda/0Nx5nEe82K7/LAm8zYr6SfMq+1N2OreIOrHAx656w==", - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "requires": { - "@types/node": "*" - } - }, - "@types/classnames": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.11.tgz", - "integrity": "sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw==" - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==" - }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/history": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz", - "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==" - }, - "@types/hoist-non-react-statics": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", - "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", - "requires": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" - } - }, - "@types/invariant": { - "version": "2.2.34", - "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.34.tgz", - "integrity": "sha512-lYUtmJ9BqUN688fGY1U1HZoWT1/Jrmgigx2loq4ZcJpICECm/Om3V314BxdzypO0u5PORKGMM6x0OXaljV1YFg==" - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==" - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", - "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", - "requires": { - "jest-diff": "^24.3.0" - } - }, - "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" - }, - "@types/node": { - "version": "12.19.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.8.tgz", - "integrity": "sha512-D4k2kNi0URNBxIRCb1khTnkWNHv8KSL1owPmS/K5e5t8B2GzMReY7AsJIY1BnP5KdlgC4rj9jk2IkDMasIE7xg==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" - }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" - }, - "@types/qrcode.react": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/qrcode.react/-/qrcode.react-1.0.1.tgz", - "integrity": "sha512-PcVCjpsiT2KFKfJibOgTQtkt0QQT/6GbQUp1Np/hMPhwUzMJ2DRUkR9j7tXN9Q8X06qukw+RbaJ8lJ22SBod+Q==", - "requires": { - "@types/react": "*" - } - }, - "@types/react": { - "version": "16.14.2", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.2.tgz", - "integrity": "sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ==", - "requires": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-bootstrap-range-slider": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/react-bootstrap-range-slider/-/react-bootstrap-range-slider-1.2.0.tgz", - "integrity": "sha512-gh5y6Fa0q1ujR1ONml1S2scnBsY+XWz6NbLphZuKVtVnzSZRQBIvi2gtZknQ+wWK2bs5TFCfaMIBm1OEwQo6mw==", - "requires": { - "@types/react": "*" - } - }, - "@types/react-dom": { - "version": "16.9.10", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.10.tgz", - "integrity": "sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw==", - "requires": { - "@types/react": "^16" - } - }, - "@types/react-responsive": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@types/react-responsive/-/react-responsive-8.0.2.tgz", - "integrity": "sha512-DTvm3Hb77v0hme7L4GYzRjLQqlZP+zNImFBzdKbSH7CsQ5c7QebGnSQX2Xf3BaA0rm/TQE57eFMhMGLcMe/A9w==", - "requires": { - "@types/react": "*" - } - }, - "@types/react-router": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.8.tgz", - "integrity": "sha512-HzOyJb+wFmyEhyfp4D4NYrumi+LQgQL/68HvJO+q6XtuHSDvw6Aqov7sCAhjbNq3bUPgPqbdvjXC5HeB2oEAPg==", - "requires": { - "@types/history": "*", - "@types/react": "*" - } - }, - "@types/react-router-dom": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.6.tgz", - "integrity": "sha512-gjrxYqxz37zWEdMVvQtWPFMFj1dRDb4TGOcgyOfSXTrEXdF92L00WE3C471O3TV/RF1oskcStkXsOU0Ete4s/g==", - "requires": { - "@types/history": "*", - "@types/react": "*", - "@types/react-router": "*" - } - }, - "@types/react-transition-group": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.0.tgz", - "integrity": "sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==", - "requires": { - "@types/react": "*" - } - }, - "@types/secp256k1": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.1.tgz", - "integrity": "sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog==", - "requires": { - "@types/node": "*" - } - }, - "@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" - }, - "@types/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" - }, - "@types/web3": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.2.2.tgz", - "integrity": "sha512-eFiYJKggNrOl0nsD+9cMh2MLk4zVBfXfGnVeRFbpiZzBE20eet4KLA3fXcjSuHaBn0RnQzwLAGdgzgzdet4C0A==", - "requires": { - "web3": "*" - } - }, - "@types/yargs": { - "version": "13.0.10", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.10.tgz", - "integrity": "sha512-MU10TSgzNABgdzKvQVW1nuuT+sgBMWeXNc3XOs5YXV5SDAK+PPja2eUuBNB9iqElu03xyEDqlnGw0jgl4nbqGQ==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", - "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==" - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", - "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", - "requires": { - "@typescript-eslint/experimental-utils": "2.34.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", - "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", - "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", - "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", - "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@walletconnect/client": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/client/-/client-1.3.1.tgz", - "integrity": "sha512-G3bgGaALxffiZB6HaCAX6BvIRFYSOClvdcCN3fKfczEYYkOHrrgeEksY7oX5GXXZdNNn4s/zt+5yWnySuA+3Zg==", - "requires": { - "@walletconnect/core": "^1.3.1", - "@walletconnect/iso-crypto": "^1.3.1", - "@walletconnect/types": "^1.3.1", - "@walletconnect/utils": "^1.3.1" - } - }, - "@walletconnect/core": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-1.3.1.tgz", - "integrity": "sha512-v0RAW4RqcMBNRkX2e6VcOVpBl5dX0oT7w3vWMiHUHwuMMnuoRXoXi1oEiib0K8VyqYuXSaeuEaaHUhYUEcvvtQ==", - "requires": { - "@walletconnect/socket-transport": "^1.3.1", - "@walletconnect/types": "^1.3.1", - "@walletconnect/utils": "^1.3.1" - } - }, - "@walletconnect/http-connection": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/http-connection/-/http-connection-1.3.1.tgz", - "integrity": "sha512-Hyis8FAgtnkhF1k0oKDhe+rgDq/rPFHry/jdQckvQLZZAEwoNZLJ5s0jjWK2Yl9YP3EZybXat3H63VboieZiUA==", - "requires": { - "@walletconnect/types": "^1.3.1", - "@walletconnect/utils": "^1.3.1", - "xhr2-cookies": "1.1.0" - } - }, - "@walletconnect/iso-crypto": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/iso-crypto/-/iso-crypto-1.3.1.tgz", - "integrity": "sha512-u5YGYsaSQuRBSxX1623220Bc3KZDgqkIwXCt7PV8UyzhuSFp+SQGj6Cux5SoVlaUChr0iWMzkibLrKSof3yStA==", - "requires": { - "@walletconnect/types": "^1.3.1", - "@walletconnect/utils": "^1.3.1", - "eccrypto-js": "5.2.0" - } - }, - "@walletconnect/mobile-registry": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/mobile-registry/-/mobile-registry-1.3.1.tgz", - "integrity": "sha512-wOGSqf1xCoMRvsLZ7IEYBwCnojtCbsSd+dc6dJCVWkFcRptjmnInIrP7bg7YIllUCSusWhKjPCYyRsyffNYCyQ==" - }, - "@walletconnect/qrcode-modal": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/qrcode-modal/-/qrcode-modal-1.3.1.tgz", - "integrity": "sha512-PHwRNgnRtATtBuuxX8nsRGbSrsevB4gMHd4armJFbGM/XmIcJe89L5X0KVapb5Z8HP8qdbJ6/sMqKBPVEezkgQ==", - "requires": { - "@walletconnect/mobile-registry": "^1.3.1", - "@walletconnect/types": "^1.3.1", - "@walletconnect/utils": "^1.3.1", - "preact": "10.4.1", - "qrcode": "1.4.4" - } - }, - "@walletconnect/socket-transport": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/socket-transport/-/socket-transport-1.3.1.tgz", - "integrity": "sha512-JV/ZJbFGmPJaHcT5GpiuoOxdB5xlkY7SW6J0GDqIBxI92mlOoQ5ea6xY5ullI5WUXZJUIvXcgUHf/KpPG9VN/w==", - "requires": { - "@walletconnect/types": "^1.3.1", - "ws": "7.3.0" - }, - "dependencies": { - "ws": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz", - "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==" - } - } - }, - "@walletconnect/types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-1.3.1.tgz", - "integrity": "sha512-lf8hAFT7OIEgyc0FkLZPPjF4bMql+Svg4SNKj1a1oMTCdA+NPlqMUwOqcIJeIolULZbpFl3DkX3omSy8RNIbkg==" - }, - "@walletconnect/utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-1.3.1.tgz", - "integrity": "sha512-r1pfAeXc6WCNbHf5zgVPenM8au+bQOYot6tdwpSDZAfdP0KtwmZ9Uro2uP8ykRWovTj2gGgKE+GMh9yVVTraaQ==", - "requires": { - "@walletconnect/types": "^1.3.1", - "detect-browser": "5.1.0", - "enc-utils": "2.1.0", - "js-sha3": "0.8.0", - "query-string": "6.13.5", - "rpc-payload-id": "1.0.0", - "safe-json-utils": "1.0.0", - "window-getters": "1.0.0", - "window-metadata": "1.0.0" - }, - "dependencies": { - "detect-browser": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.1.0.tgz", - "integrity": "sha512-WKa9p+/MNwmTiS+V2AS6eGxic+807qvnV3hC+4z2GTY+F42h1n8AynVTMMc4EJBC32qMs6yjOTpeDEQQt/AVqQ==" - }, - "query-string": { - "version": "6.13.5", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz", - "integrity": "sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==", - "requires": { - "decode-uri-component": "^0.2.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - } - }, - "strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" - } - } - }, - "@walletconnect/web3-provider": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@walletconnect/web3-provider/-/web3-provider-1.3.1.tgz", - "integrity": "sha512-sOLtEbNLFrD8DgbvE0P/vRrmdPbF6Zufhn3gAo6/lxDQGH0ajHGmkl04sq/qcwMHKK0zHjYKRSFEG2VqNIThHg==", - "requires": { - "@walletconnect/client": "^1.3.1", - "@walletconnect/http-connection": "^1.3.1", - "@walletconnect/qrcode-modal": "^1.3.1", - "@walletconnect/types": "^1.3.1", - "@walletconnect/utils": "^1.3.1", - "web3-provider-engine": "15.0.12" - } - }, - "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", - "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==" - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", - "requires": { - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==" - }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" - }, - "abi-decoder": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/abi-decoder/-/abi-decoder-2.3.0.tgz", - "integrity": "sha512-RZXG5mo1JhJjTBg/4NXlS8hyTr2fxiuFaz3UveRpoX9IIc3LPHmWz89dFqTHNQVbWi3VZqxSJqfUwWpb/mCHxA==", - "requires": { - "web3-eth-abi": "^1.2.1", - "web3-utils": "^1.2.1" - } - }, - "abstract-leveldown": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", - "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", - "requires": { - "xtend": "~4.0.0" - } - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "acorn-globals": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", - "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - } - } - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" - }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" - }, - "adjust-sourcemap-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", - "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "aes-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", - "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==" - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", - "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" - } - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "arity-n": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", - "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=" - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "array-includes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", - "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", - "is-string": "^1.0.5" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - }, - "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - }, - "async-eventemitter": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", - "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", - "requires": { - "async": "^2.4.0" - } - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - } - }, - "await-semaphore": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/await-semaphore/-/await-semaphore-0.1.3.tgz", - "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" - }, - "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==" - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, - "babel-extract-comments": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", - "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", - "requires": { - "babylon": "^6.18.0" - } - }, - "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", - "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - } - }, - "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - } - }, - "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", - "requires": { - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-macros": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", - "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", - "requires": { - "@babel/runtime": "^7.7.2", - "cosmiconfig": "^6.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "parse-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", - "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } - } - }, - "babel-plugin-named-asset-import": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz", - "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==" - }, - "babel-plugin-styled-components": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.12.0.tgz", - "integrity": "sha512-FEiD7l5ZABdJPpLssKXjBUJMYqzbcNzBowfXDCdJhOpbhWiewapUaY+LZGT8R4Jg2TwOjGjG4RKeyrO5p9sBkA==", - "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-module-imports": "^7.0.0", - "babel-plugin-syntax-jsx": "^6.18.0", - "lodash": "^4.17.11" - } - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==" - }, - "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", - "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" - } - }, - "babel-preset-react-app": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz", - "integrity": "sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA==", - "requires": { - "@babel/core": "7.9.0", - "@babel/plugin-proposal-class-properties": "7.8.3", - "@babel/plugin-proposal-decorators": "7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", - "@babel/plugin-proposal-numeric-separator": "7.8.3", - "@babel/plugin-proposal-optional-chaining": "7.9.0", - "@babel/plugin-transform-flow-strip-types": "7.9.0", - "@babel/plugin-transform-react-display-name": "7.8.3", - "@babel/plugin-transform-runtime": "7.9.0", - "@babel/preset-env": "7.9.0", - "@babel/preset-react": "7.9.1", - "@babel/preset-typescript": "7.9.0", - "@babel/runtime": "7.9.0", - "babel-plugin-macros": "2.8.0", - "babel-plugin-transform-react-remove-prop-types": "0.4.24" - }, - "dependencies": { - "@babel/plugin-proposal-class-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", - "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", - "requires": { - "@babel/helper-create-class-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", - "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.0" - } - }, - "@babel/plugin-transform-react-display-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", - "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/preset-env": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", - "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", - "requires": { - "@babel/compat-data": "^7.9.0", - "@babel/helper-compilation-targets": "^7.8.7", - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-proposal-async-generator-functions": "^7.8.3", - "@babel/plugin-proposal-dynamic-import": "^7.8.3", - "@babel/plugin-proposal-json-strings": "^7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-proposal-numeric-separator": "^7.8.3", - "@babel/plugin-proposal-object-rest-spread": "^7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", - "@babel/plugin-proposal-optional-chaining": "^7.9.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.8.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.8.3", - "@babel/plugin-transform-async-to-generator": "^7.8.3", - "@babel/plugin-transform-block-scoped-functions": "^7.8.3", - "@babel/plugin-transform-block-scoping": "^7.8.3", - "@babel/plugin-transform-classes": "^7.9.0", - "@babel/plugin-transform-computed-properties": "^7.8.3", - "@babel/plugin-transform-destructuring": "^7.8.3", - "@babel/plugin-transform-dotall-regex": "^7.8.3", - "@babel/plugin-transform-duplicate-keys": "^7.8.3", - "@babel/plugin-transform-exponentiation-operator": "^7.8.3", - "@babel/plugin-transform-for-of": "^7.9.0", - "@babel/plugin-transform-function-name": "^7.8.3", - "@babel/plugin-transform-literals": "^7.8.3", - "@babel/plugin-transform-member-expression-literals": "^7.8.3", - "@babel/plugin-transform-modules-amd": "^7.9.0", - "@babel/plugin-transform-modules-commonjs": "^7.9.0", - "@babel/plugin-transform-modules-systemjs": "^7.9.0", - "@babel/plugin-transform-modules-umd": "^7.9.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", - "@babel/plugin-transform-new-target": "^7.8.3", - "@babel/plugin-transform-object-super": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.8.7", - "@babel/plugin-transform-property-literals": "^7.8.3", - "@babel/plugin-transform-regenerator": "^7.8.7", - "@babel/plugin-transform-reserved-words": "^7.8.3", - "@babel/plugin-transform-shorthand-properties": "^7.8.3", - "@babel/plugin-transform-spread": "^7.8.3", - "@babel/plugin-transform-sticky-regex": "^7.8.3", - "@babel/plugin-transform-template-literals": "^7.8.3", - "@babel/plugin-transform-typeof-symbol": "^7.8.4", - "@babel/plugin-transform-unicode-regex": "^7.8.3", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.9.0", - "browserslist": "^4.9.1", - "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", - "semver": "^5.5.0" - } - }, - "@babel/preset-react": { - "version": "7.9.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.1.tgz", - "integrity": "sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ==", - "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-transform-react-display-name": "^7.8.3", - "@babel/plugin-transform-react-jsx": "^7.9.1", - "@babel/plugin-transform-react-jsx-development": "^7.9.0", - "@babel/plugin-transform-react-jsx-self": "^7.9.0", - "@babel/plugin-transform-react-jsx-source": "^7.9.0" - } - }, - "@babel/runtime": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz", - "integrity": "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" - }, - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - } - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "backoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", - "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", - "requires": { - "precond": "0.2" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==" - }, - "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bip66": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", - "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "blakejs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", - "integrity": "sha1-ad+S75U6qIylGjLfarHFShVfx6U=" - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "bootstrap": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.3.tgz", - "integrity": "sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - } - } - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "bn.js": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", - "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.15.0.tgz", - "integrity": "sha512-IJ1iysdMkGmjjYeRlDU8PQejVwxvVO5QOfXH7ylW31GO6LwNRSmm/SgRXtNsEXqMLl2e+2H5eEJ7sfynF8TCaQ==", - "requires": { - "caniuse-lite": "^1.0.30001164", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.612", - "escalade": "^3.1.1", - "node-releases": "^1.1.67" - } - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "requires": { - "base-x": "^3.0.2" - } - }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "requires": { - "node-int64": "^0.4.0" - } - }, - "btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==" - }, - "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" - }, - "buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "bufferutil": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.2.tgz", - "integrity": "sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA==", - "requires": { - "node-gyp-build": "^4.2.0" - } - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", - "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.2", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "minipass": "^3.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "requires": { - "minipass": "^3.0.0" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - }, - "dependencies": { - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - } - } - }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "requires": { - "yallist": "^4.0.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } - } - }, - "call-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", - "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.0" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" - } - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "camelize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001164", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001164.tgz", - "integrity": "sha512-G+A/tkf4bu0dSp9+duNiXc7bGds35DioCyC6vgK2m/rjA4Krpy5WeZgZyfH2f0wj2kI6yAWWucyap6oOwmY1mg==" - }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "requires": { - "rsvp": "^4.8.4" - } - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", - "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - }, - "checkpoint-store": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", - "integrity": "sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY=", - "requires": { - "functional-red-black-tree": "^1.0.1" - } - }, - "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - } - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - }, - "cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "requires": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" - }, - "dependencies": { - "multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "requires": { - "buffer": "^5.6.0", - "varint": "^5.0.0" - } - } - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" - }, - "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, - "clone-deep": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", - "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", - "requires": { - "for-own": "^0.1.3", - "is-plain-object": "^2.0.1", - "kind-of": "^3.0.2", - "lazy-cache": "^1.0.3", - "shallow-clone": "^0.1.2" - } - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", - "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.4" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "color-string": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", - "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "common-tags": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", - "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, - "compose-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", - "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", - "requires": { - "arity-n": "^1.0.4" - } - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "confusing-browser-globals": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", - "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", - "requires": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "core-js": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.0.tgz", - "integrity": "sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==" - }, - "core-js-compat": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.0.tgz", - "integrity": "sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ==", - "requires": { - "browserslist": "^4.14.7", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" - } - } - }, - "core-js-pure": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.0.tgz", - "integrity": "sha512-fRjhg3NeouotRoIV0L1FdchA6CK7ZD+lyINyMoz19SyV+ROpC4noS1xItWHFtwZdlqfMfVPJEyEGdfri2bD1pA==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-fetch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.3.tgz", - "integrity": "sha512-PrWWNH3yL2NYIb/7WF/5vFG3DCQiXDOVf8k3ijatbrtnwNuhMWLC7YF7uqf53tbTFDzHIUD8oITw4Bxt8ST3Nw==", - "requires": { - "node-fetch": "2.1.2", - "whatwg-fetch": "2.0.4" - }, - "dependencies": { - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - } - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "css-blank-pseudo": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", - "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", - "requires": { - "postcss": "^7.0.5" - } - }, - "css-color-keywords": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-has-pseudo": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", - "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^5.0.0-rc.4" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "css-loader": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", - "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", - "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.23", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.1", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.2", - "schema-utils": "^2.6.0" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - } - } - }, - "css-mediaquery": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", - "integrity": "sha1-aiw3NEkoYYYxxUvTPO3TAdoYvqA=" - }, - "css-prefers-color-scheme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", - "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", - "requires": { - "postcss": "^7.0.5" - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, - "css-to-react-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", - "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", - "requires": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "cssdb": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", - "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==" - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=" - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=" - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", - "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "requires": { - "cssom": "0.3.x" - } - }, - "csstype": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", - "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "damerau-levenshtein": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "deferred-leveldown": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", - "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", - "requires": { - "abstract-leveldown": "~2.6.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.2.0.tgz", - "integrity": "sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==" - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" - }, - "detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" - } - }, - "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==" - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dijkstrajs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz", - "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs=" - }, - "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", - "requires": { - "arrify": "^1.0.1", - "path-type": "^3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" - } - }, - "dom-helpers": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", - "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", - "requires": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" - } - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" - } - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", - "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==" - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" - }, - "drbg.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", - "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", - "requires": { - "browserify-aes": "^1.0.6", - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4" - } - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "eccrypto-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eccrypto-js/-/eccrypto-js-5.2.0.tgz", - "integrity": "sha512-pPb6CMapJ1LIzjLWxMqlrnfaEFap7qkk9wcO/b4AVSdxBQYlpOqvlPpq5SpUI4FdmfdhVD34AjN47fM8fryC4A==", - "requires": { - "aes-js": "3.1.2", - "enc-utils": "2.1.0", - "hash.js": "1.1.7", - "js-sha3": "0.8.0", - "randombytes": "2.1.0", - "secp256k1": "3.8.0" - }, - "dependencies": { - "secp256k1": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", - "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", - "requires": { - "bindings": "^1.5.0", - "bip66": "^1.1.5", - "bn.js": "^4.11.8", - "create-hash": "^1.2.0", - "drbg.js": "^1.0.1", - "elliptic": "^6.5.2", - "nan": "^2.14.0", - "safe-buffer": "^5.1.2" - } - } - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.614", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.614.tgz", - "integrity": "sha512-JMDl46mg4G+n6q/hAJkwy9eMTj5FJjsE+8f/irAGRMLM4yeRVbMuRrdZrbbGGOrGVcZc4vJPjUpEUWNb/fA6hg==" - }, - "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "enc-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/enc-utils/-/enc-utils-2.1.0.tgz", - "integrity": "sha512-VD0eunGDyzhojePzkORWDnW88gi6tIeGb5Z6QVHugux6mMAPiXyw94fb/7WdDQEWhKMSoYRyzFFUebCqeH20PA==", - "requires": { - "bn.js": "4.11.8", - "is-typedarray": "1.0.0", - "typedarray-to-buffer": "3.1.5" - }, - "dependencies": { - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" - } - } - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.18.0-next.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", - "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.0", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - } - } - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "requires": { - "type-fest": "^0.8.1" - } - }, - "import-fresh": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", - "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - } - } - }, - "eslint-config-react-app": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", - "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", - "requires": { - "confusing-browser-globals": "^1.0.9" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", - "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - } - }, - "eslint-loader": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", - "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", - "requires": { - "fs-extra": "^8.1.0", - "loader-fs-cache": "^1.0.2", - "loader-utils": "^1.2.3", - "object-hash": "^2.0.1", - "schema-utils": "^2.6.1" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", - "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "eslint-plugin-flowtype": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", - "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", - "requires": { - "lodash": "^4.17.15" - } - }, - "eslint-plugin-import": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", - "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", - "requires": { - "array-includes": "^3.0.3", - "array.prototype.flat": "^1.2.1", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.1", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.0", - "read-pkg-up": "^2.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", - "requires": { - "@babel/runtime": "^7.4.5", - "aria-query": "^3.0.0", - "array-includes": "^3.0.3", - "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.2", - "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^7.0.2", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - } - } - }, - "eslint-plugin-react": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", - "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", - "requires": { - "array-includes": "^3.1.1", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - }, - "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "eth-block-tracker": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", - "integrity": "sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==", - "requires": { - "@babel/plugin-transform-runtime": "^7.5.5", - "@babel/runtime": "^7.5.5", - "eth-query": "^2.1.0", - "json-rpc-random-id": "^1.0.1", - "pify": "^3.0.0", - "safe-event-emitter": "^1.0.1" - } - }, - "eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", - "requires": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - }, - "dependencies": { - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - } - } - }, - "eth-json-rpc-errors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz", - "integrity": "sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA==", - "requires": { - "fast-safe-stringify": "^2.0.6" - } - }, - "eth-json-rpc-filters": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.1.tgz", - "integrity": "sha512-tPfohezq8mSmwa47xvq6PGzBDLZ0njWJMB1J+OPuv+n+1WkWDlf3l3tqJXpq96RxhrzK2q7wiweRS5aGIzpq4Q==", - "requires": { - "await-semaphore": "^0.1.3", - "eth-json-rpc-middleware": "^6.0.0", - "eth-query": "^2.1.2", - "json-rpc-engine": "^5.3.0", - "lodash.flatmap": "^4.5.0", - "safe-event-emitter": "^1.0.1" - }, - "dependencies": { - "eth-json-rpc-middleware": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz", - "integrity": "sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ==", - "requires": { - "btoa": "^1.2.1", - "clone": "^2.1.1", - "eth-query": "^2.1.2", - "eth-rpc-errors": "^3.0.0", - "eth-sig-util": "^1.4.2", - "ethereumjs-util": "^5.1.2", - "json-rpc-engine": "^5.3.0", - "json-stable-stringify": "^1.0.1", - "node-fetch": "^2.6.1", - "pify": "^3.0.0", - "safe-event-emitter": "^1.0.1" - } - }, - "ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "requires": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - } - } - }, - "eth-json-rpc-infura": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-4.1.0.tgz", - "integrity": "sha512-DFYitKovzVlCdUulEccdm4g6k/vnvyByuw7rd5OoWDBSIiaeinI8Z/SntLjSIs2c+YvE20DGwk/GLwZGCWDN1Q==", - "requires": { - "eth-json-rpc-middleware": "^4.4.0", - "eth-rpc-errors": "^3.0.0", - "json-rpc-engine": "^5.1.3", - "node-fetch": "^2.6.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - } - } - }, - "eth-json-rpc-middleware": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.1.tgz", - "integrity": "sha512-yoSuRgEYYGFdVeZg3poWOwAlRI+MoBIltmOB86MtpoZjvLbou9EB/qWMOWSmH2ryCWLW97VYY6NWsmWm3OAA7A==", - "requires": { - "btoa": "^1.2.1", - "clone": "^2.1.1", - "eth-json-rpc-errors": "^1.0.1", - "eth-query": "^2.1.2", - "eth-sig-util": "^1.4.2", - "ethereumjs-block": "^1.6.0", - "ethereumjs-tx": "^1.3.7", - "ethereumjs-util": "^5.1.2", - "ethereumjs-vm": "^2.6.0", - "fetch-ponyfill": "^4.0.0", - "json-rpc-engine": "^5.1.3", - "json-stable-stringify": "^1.0.1", - "pify": "^3.0.0", - "safe-event-emitter": "^1.0.1" - }, - "dependencies": { - "eth-json-rpc-errors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz", - "integrity": "sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg==", - "requires": { - "fast-safe-stringify": "^2.0.6" - } - }, - "ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" - }, - "ethereumjs-tx": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", - "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", - "requires": { - "ethereum-common": "^0.0.18", - "ethereumjs-util": "^5.0.0" - } - }, - "ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "requires": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - } - } - }, - "eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" - } - }, - "eth-query": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", - "integrity": "sha1-1nQdkAAQa1FRDHLbktY2VFam2l4=", - "requires": { - "json-rpc-random-id": "^1.0.0", - "xtend": "^4.0.1" - } - }, - "eth-rpc-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz", - "integrity": "sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==", - "requires": { - "fast-safe-stringify": "^2.0.6" - } - }, - "eth-sig-util": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", - "integrity": "sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=", - "requires": { - "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", - "ethereumjs-util": "^5.1.1" - }, - "dependencies": { - "ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "requires": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - } - } - }, - "ethereum-bloom-filters": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.7.tgz", - "integrity": "sha512-cDcJJSJ9GMAcURiAWO3DxIEhTL/uWqlQnvgKpuYQzYPrt/izuGU+1ntQmHt0IRq6ADoSYHFnB+aCEFIldjhkMQ==", - "requires": { - "js-sha3": "^0.8.0" - } - }, - "ethereum-common": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", - "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==" - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - }, - "ethereumjs-abi": { - "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#1ce6a1d64235fabe2aaf827fd606def55693508f", - "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", - "requires": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" - } - }, - "ethereumjs-account": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", - "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", - "requires": { - "ethereumjs-util": "^5.0.0", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - }, - "dependencies": { - "ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "requires": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - } - } - }, - "ethereumjs-block": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", - "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", - "requires": { - "async": "^2.0.1", - "ethereum-common": "0.2.0", - "ethereumjs-tx": "^1.2.2", - "ethereumjs-util": "^5.0.0", - "merkle-patricia-tree": "^2.1.2" - }, - "dependencies": { - "ethereumjs-tx": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", - "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", - "requires": { - "ethereum-common": "^0.0.18", - "ethereumjs-util": "^5.0.0" - }, - "dependencies": { - "ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" - } - } - }, - "ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "requires": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - } - } - }, - "ethereumjs-common": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", - "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==" - }, - "ethereumjs-tx": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", - "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", - "requires": { - "ethereumjs-common": "^1.5.0", - "ethereumjs-util": "^6.0.0" - } - }, - "ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "ethereumjs-vm": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", - "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", - "requires": { - "async": "^2.1.2", - "async-eventemitter": "^0.2.2", - "ethereumjs-account": "^2.0.3", - "ethereumjs-block": "~2.2.0", - "ethereumjs-common": "^1.1.0", - "ethereumjs-util": "^6.0.0", - "fake-merkle-patricia-tree": "^1.0.1", - "functional-red-black-tree": "^1.0.1", - "merkle-patricia-tree": "^2.3.2", - "rustbn.js": "~0.2.0", - "safe-buffer": "^5.1.1" - }, - "dependencies": { - "ethereumjs-block": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", - "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", - "requires": { - "async": "^2.0.1", - "ethereumjs-common": "^1.5.0", - "ethereumjs-tx": "^2.1.1", - "ethereumjs-util": "^5.0.0", - "merkle-patricia-tree": "^2.1.2" - }, - "dependencies": { - "ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "requires": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - } - } - } - } - }, - "ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", - "requires": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - } - } - }, - "ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "requires": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - } - }, - "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" - }, - "events": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" - }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "exec-sh": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", - "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==" - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", - "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", - "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fake-merkle-patricia-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", - "integrity": "sha1-S4w6z7Ugr635hgsfFM2M40As3dM=", - "requires": { - "checkpoint-store": "^1.1.0" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "requires": { - "bser": "2.1.1" - } - }, - "fetch-ponyfill": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz", - "integrity": "sha1-rjzl9zLGReq4fkroeTQUcJsjmJM=", - "requires": { - "node-fetch": "~1.7.1" - }, - "dependencies": { - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - } - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "requires": { - "flat-cache": "^2.0.1" - } - }, - "file-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", - "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.5.0" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "filesize": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", - "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==" - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" - }, - "flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "follow-redirects": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", - "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "fork-ts-checker-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", - "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^3.3.0", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "requires": { - "minipass": "^2.6.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - }, - "get-intrinsic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", - "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "requires": { - "min-document": "^2.19.0", - "process": "~0.5.1" - } - }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", - "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "2.0.0", - "fast-glob": "^2.0.2", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, - "dependencies": { - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - } - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - } - } - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "harmony-reflect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", - "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "requires": { - "has-symbol-support-x": "^1.4.1" - } - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" - }, - "history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "requires": { - "react-is": "^16.7.0" - } - }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "html-entities": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", - "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - }, - "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "dependencies": { - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - } - } - }, - "html-webpack-plugin": { - "version": "4.0.0-beta.11", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", - "integrity": "sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg==", - "requires": { - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.15", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" - }, - "dependencies": { - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - } - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "requires": { - "postcss": "^7.0.14" - } - }, - "identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", - "requires": { - "harmony-reflect": "^1.4.6" - } - }, - "idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", - "requires": { - "punycode": "2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" - } - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - }, - "immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" - }, - "immer": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", - "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==" - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, - "internal-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", - "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", - "requires": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "intl-format-cache": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-4.3.1.tgz", - "integrity": "sha512-OEUYNA7D06agqPOYhbTkl0T8HA3QKSuwWh1HiClEnpd9vw7N+3XsQt5iZ0GUEchp5CW1fQk/tary+NsbF3yQ1Q==" - }, - "intl-messageformat": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-7.8.4.tgz", - "integrity": "sha512-yS0cLESCKCYjseCOGXuV4pxJm/buTfyCJ1nzQjryHmSehlptbZbn9fnlk1I9peLopZGGbjj46yHHiTAEZ1qOTA==", - "requires": { - "intl-format-cache": "^4.2.21", - "intl-messageformat-parser": "^3.6.4" - } - }, - "intl-messageformat-parser": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-3.6.4.tgz", - "integrity": "sha512-RgPGwue0mJtoX2Ax8EmMzJzttxjnva7gx0Q7mKJ4oALrTZvtmCeAw5Msz2PcjW4dtCh/h7vN/8GJCxZO1uv+OA==", - "requires": { - "@formatjs/intl-unified-numberformat": "^3.2.0" - } - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" - }, - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" - }, - "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", - "integrity": "sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw=" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" - }, - "is-negative-zero": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", - "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - }, - "is-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", - "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - }, - "is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - }, - "is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==" - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==" - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", - "requires": { - "html-escaper": "^2.0.0" - } - }, - "isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "requires": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - } - }, - "jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", - "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", - "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" - }, - "dependencies": { - "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", - "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - } - } - } - }, - "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", - "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" - } - }, - "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", - "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", - "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-jsdom-fourteen": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz", - "integrity": "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==", - "requires": { - "@jest/environment": "^24.3.0", - "@jest/fake-timers": "^24.3.0", - "@jest/types": "^24.3.0", - "jest-mock": "^24.0.0", - "jest-util": "^24.0.0", - "jsdom": "^14.1.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "jsdom": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", - "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", - "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" - } - }, - "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==" - }, - "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", - "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - } - } - }, - "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" - } - }, - "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", - "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", - "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - } - }, - "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - } - }, - "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", - "requires": { - "@jest/types": "^24.9.0" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==" - }, - "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==" - }, - "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", - "requires": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" - } - }, - "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", - "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" - } - }, - "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" - } - }, - "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" - } - }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==" - }, - "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - } - }, - "jest-watch-typeahead": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", - "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.1", - "jest-regex-util": "^24.9.0", - "jest-watcher": "^24.3.0", - "slash": "^3.0.0", - "string-length": "^3.1.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "string-length": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", - "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^5.2.0" - } - } - } - }, - "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", - "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - } - } - }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jquery": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", - "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==" - }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", - "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "json-rpc-engine": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.3.0.tgz", - "integrity": "sha512-+diJ9s8rxB+fbJhT7ZEf8r8spaLRignLd8jTgQ/h5JSGppAHGtNMZtCoabipCaleR1B3GTGxbXBOqhaJSGmPGQ==", - "requires": { - "eth-rpc-errors": "^3.0.0", - "safe-event-emitter": "^1.0.1" - } - }, - "json-rpc-random-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", - "integrity": "sha1-uknZat7RRE27jaPSA3SKy7zeyMg=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "~0.0.0" - } - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==" - }, - "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "jsx-ast-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", - "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", - "requires": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" - } - }, - "keccak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", - "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", - "requires": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" - } - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" - }, - "last-call-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", - "requires": { - "lodash": "^4.17.5", - "webpack-sources": "^1.1.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==" - }, - "level-codec": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", - "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==" - }, - "level-errors": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", - "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", - "requires": { - "errno": "~0.1.1" - } - }, - "level-iterator-stream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", - "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", - "requires": { - "inherits": "^2.0.1", - "level-errors": "^1.0.3", - "readable-stream": "^1.0.33", - "xtend": "^4.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "level-ws": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", - "integrity": "sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos=", - "requires": { - "readable-stream": "~1.0.15", - "xtend": "~2.1.1" - }, - "dependencies": { - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "requires": { - "object-keys": "~0.4.0" - } - } - } - }, - "levelup": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", - "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", - "requires": { - "deferred-leveldown": "~1.2.1", - "level-codec": "~7.0.0", - "level-errors": "~1.0.3", - "level-iterator-stream": "~1.3.0", - "prr": "~1.0.1", - "semver": "~5.4.1", - "xtend": "~4.0.0" - }, - "dependencies": { - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" - } - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" - }, - "levenary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", - "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", - "requires": { - "leven": "^3.1.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "loader-fs-cache": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", - "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", - "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "requires": { - "find-up": "^1.0.0" - } - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - }, - "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" - }, - "lodash.flatmap": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", - "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "requires": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "requires": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" - }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" - } - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=" - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "requires": { - "tmpl": "1.0.x" - } - }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "matchmediaquery": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz", - "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", - "requires": { - "css-mediaquery": "^0.1.2" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "memdown": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", - "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", - "requires": { - "abstract-leveldown": "~2.7.1", - "functional-red-black-tree": "^1.0.1", - "immediate": "^3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "abstract-leveldown": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", - "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", - "requires": { - "xtend": "~4.0.0" - } - } - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "merge-deep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", - "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", - "requires": { - "arr-union": "^3.1.0", - "clone-deep": "^0.2.4", - "kind-of": "^3.0.2" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "merkle-patricia-tree": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", - "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", - "requires": { - "async": "^1.4.2", - "ethereumjs-util": "^5.0.0", - "level-ws": "0.0.0", - "levelup": "^1.2.1", - "memdown": "^1.0.0", - "readable-stream": "^2.0.0", - "rlp": "^2.0.0", - "semaphore": ">=1.0.1" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "requires": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==" - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "requires": { - "dom-walk": "^0.1.0" - } - }, - "mini-create-react-context": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", - "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", - "requires": { - "@babel/runtime": "^7.5.5", - "tiny-warning": "^1.0.3" - } - }, - "mini-css-extract-plugin": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", - "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "requires": { - "minipass": "^2.9.0" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" - } - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", - "requires": { - "mkdirp": "*" - } - }, - "mock-fs": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.13.0.tgz", - "integrity": "sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA==" - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" - }, - "multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "requires": { - "varint": "^5.0.0" - } - }, - "multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "requires": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - }, - "dependencies": { - "multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "requires": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - } - } - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" - }, - "nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" - } - } - }, - "node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, - "node-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", - "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" - }, - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=" - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - } - } - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" - }, - "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", - "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "node-releases": { - "version": "1.1.67", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", - "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" - }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=" - }, - "number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", - "requires": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - } - } - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-hash": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", - "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==" - }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" - }, - "object-is": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", - "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", - "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - } - }, - "object.fromentries": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.3.tgz", - "integrity": "sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", - "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has": "^1.0.3" - } - }, - "oboe": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", - "integrity": "sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY=", - "requires": { - "http-https": "^1.0.0" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz", - "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==", - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "dependencies": { - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - } - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optimize-css-assets-webpack-plugin": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", - "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", - "requires": { - "cssnano": "^4.1.10", - "last-call-webpack-plugin": "^3.0.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "requires": { - "p-reduce": "^1.0.0" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "requires": { - "retry": "^0.12.0" - } - }, - "p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" - } - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - } - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-headers": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", - "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" - } - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "requires": { - "find-up": "^3.0.0" - } - }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "requires": { - "find-up": "^3.0.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" - }, - "pnp-webpack-plugin": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", - "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", - "requires": { - "ts-pnp": "^1.1.6" - } - }, - "popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==" - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, - "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-attribute-case-insensitive": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", - "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^6.0.2" - } - }, - "postcss-browser-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", - "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", - "requires": { - "postcss": "^7" - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-color-functional-notation": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", - "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-color-gray": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", - "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-color-hex-alpha": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", - "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", - "requires": { - "postcss": "^7.0.14", - "postcss-values-parser": "^2.0.1" - } - }, - "postcss-color-mod-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", - "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-color-rebeccapurple": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", - "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-custom-media": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", - "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", - "requires": { - "postcss": "^7.0.14" - } - }, - "postcss-custom-properties": { - "version": "8.0.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", - "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", - "requires": { - "postcss": "^7.0.17", - "postcss-values-parser": "^2.0.1" - } - }, - "postcss-custom-selectors": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", - "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-dir-pseudo-class": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", - "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-double-position-gradients": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", - "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", - "requires": { - "postcss": "^7.0.5", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-env-function": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", - "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-flexbugs-fixes": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz", - "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-focus-visible": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", - "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-focus-within": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", - "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-font-variant": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", - "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-gap-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", - "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-image-set-function": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", - "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-initial": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", - "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", - "requires": { - "lodash.template": "^4.5.0", - "postcss": "^7.0.2" - } - }, - "postcss-lab-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", - "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", - "requires": { - "@csstools/convert-colors": "^1.4.0", - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", - "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "postcss-logical": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", - "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-media-minmax": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", - "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - } - }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "postcss-nesting": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", - "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-normalize": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", - "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", - "requires": { - "@csstools/normalize.css": "^10.1.0", - "browserslist": "^4.6.2", - "postcss": "^7.0.17", - "postcss-browser-comments": "^3.0.0", - "sanitize.css": "^10.0.0" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-overflow-shorthand": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", - "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-page-break": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", - "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-place": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", - "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", - "requires": { - "postcss": "^7.0.2", - "postcss-values-parser": "^2.0.0" - } - }, - "postcss-preset-env": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", - "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", - "requires": { - "autoprefixer": "^9.6.1", - "browserslist": "^4.6.4", - "caniuse-lite": "^1.0.30000981", - "css-blank-pseudo": "^0.1.4", - "css-has-pseudo": "^0.10.0", - "css-prefers-color-scheme": "^3.1.1", - "cssdb": "^4.4.0", - "postcss": "^7.0.17", - "postcss-attribute-case-insensitive": "^4.0.1", - "postcss-color-functional-notation": "^2.0.1", - "postcss-color-gray": "^5.0.0", - "postcss-color-hex-alpha": "^5.0.3", - "postcss-color-mod-function": "^3.0.3", - "postcss-color-rebeccapurple": "^4.0.1", - "postcss-custom-media": "^7.0.8", - "postcss-custom-properties": "^8.0.11", - "postcss-custom-selectors": "^5.1.2", - "postcss-dir-pseudo-class": "^5.0.0", - "postcss-double-position-gradients": "^1.0.0", - "postcss-env-function": "^2.0.2", - "postcss-focus-visible": "^4.0.0", - "postcss-focus-within": "^3.0.0", - "postcss-font-variant": "^4.0.0", - "postcss-gap-properties": "^2.0.0", - "postcss-image-set-function": "^3.0.1", - "postcss-initial": "^3.0.0", - "postcss-lab-function": "^2.0.1", - "postcss-logical": "^3.0.0", - "postcss-media-minmax": "^4.0.0", - "postcss-nesting": "^7.0.0", - "postcss-overflow-shorthand": "^2.0.0", - "postcss-page-break": "^2.0.0", - "postcss-place": "^4.0.1", - "postcss-pseudo-class-any-link": "^6.0.0", - "postcss-replace-overflow-wrap": "^3.0.0", - "postcss-selector-matches": "^4.0.0", - "postcss-selector-not": "^4.0.0" - } - }, - "postcss-pseudo-class-any-link": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", - "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", - "requires": { - "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0-rc.3" - }, - "dependencies": { - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==" - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-replace-overflow-wrap": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", - "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", - "requires": { - "postcss": "^7.0.2" - } - }, - "postcss-safe-parser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", - "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-selector-matches": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", - "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "postcss-selector-not": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", - "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", - "requires": { - "balanced-match": "^1.0.0", - "postcss": "^7.0.2" - } - }, - "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - }, - "postcss-values-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", - "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", - "requires": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "preact": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.4.1.tgz", - "integrity": "sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==" - }, - "precond": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "pretty-bytes": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.4.1.tgz", - "integrity": "sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA==" - }, - "pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", - "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - } - } - }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, - "promise": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", - "requires": { - "asap": "~2.0.6" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" - }, - "promise-to-callback": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", - "integrity": "sha1-XSp0kBC/tn2WNZj805YHRqaP7vc=", - "requires": { - "is-fn": "^1.0.0", - "set-immediate-shim": "^1.0.1" - } - }, - "prompts": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", - "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "prop-types-extra": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", - "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", - "requires": { - "react-is": "^16.3.2", - "warning": "^4.0.0" - } - }, - "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.1" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "qr.js": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz", - "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8=" - }, - "qrcode": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz", - "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==", - "requires": { - "buffer": "^5.4.3", - "buffer-alloc": "^1.2.0", - "buffer-from": "^1.1.1", - "dijkstrajs": "^1.0.1", - "isarray": "^2.0.1", - "pngjs": "^3.3.0", - "yargs": "^13.2.4" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - } - } - }, - "qrcode.react": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-1.0.0.tgz", - "integrity": "sha512-jBXleohRTwvGBe1ngV+62QvEZ/9IZqQivdwzo9pJM4LQMoCM2VnvNBnKdjvGnKyDZ/l0nCDgsPod19RzlPvm/Q==", - "requires": { - "loose-envify": "^1.4.0", - "prop-types": "^15.6.0", - "qr.js": "0.0.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", - "requires": { - "performance-now": "^2.1.0" - } - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "react": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", - "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - } - }, - "react-app-polyfill": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz", - "integrity": "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==", - "requires": { - "core-js": "^3.5.0", - "object-assign": "^4.1.1", - "promise": "^8.0.3", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.3", - "whatwg-fetch": "^3.0.0" - } - }, - "react-bootstrap": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.4.0.tgz", - "integrity": "sha512-0BMzgeUAxH126v7VYDzIXbHxQVHSnniPVKpz9fblumdQpWaiElMnnzk+u8h8DoELX0nCXwPlcUzgXqmpncdc2Q==", - "requires": { - "@babel/runtime": "^7.4.2", - "@restart/context": "^2.1.4", - "@restart/hooks": "^0.3.21", - "@types/classnames": "^2.2.10", - "@types/invariant": "^2.2.33", - "@types/prop-types": "^15.7.3", - "@types/react": "^16.9.35", - "@types/react-transition-group": "^4.4.0", - "@types/warning": "^3.0.0", - "classnames": "^2.2.6", - "dom-helpers": "^5.1.2", - "invariant": "^2.2.4", - "prop-types": "^15.7.2", - "prop-types-extra": "^1.1.0", - "react-overlays": "^4.1.0", - "react-transition-group": "^4.4.1", - "uncontrollable": "^7.0.0", - "warning": "^4.0.3" - } - }, - "react-bootstrap-range-slider": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/react-bootstrap-range-slider/-/react-bootstrap-range-slider-1.2.2.tgz", - "integrity": "sha512-GGQr3NxzeXNOWLbSWU+zNVw+ntTMCVdZN8smBNwR3+JoPNCvZ2LJeYMoX+rcHtV6OZjSHvFvZ2D0rzZ+4/cutQ==", - "requires": { - "classnames": "^2.2.6", - "prop-types": "^15.7.2" - } - }, - "react-dev-utils": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", - "integrity": "sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ==", - "requires": { - "@babel/code-frame": "7.8.3", - "address": "1.1.2", - "browserslist": "4.10.0", - "chalk": "2.4.2", - "cross-spawn": "7.0.1", - "detect-port-alt": "1.1.6", - "escape-string-regexp": "2.0.0", - "filesize": "6.0.1", - "find-up": "4.1.0", - "fork-ts-checker-webpack-plugin": "3.1.1", - "global-modules": "2.0.0", - "globby": "8.0.2", - "gzip-size": "5.1.1", - "immer": "1.10.0", - "inquirer": "7.0.4", - "is-root": "2.1.0", - "loader-utils": "1.2.3", - "open": "^7.0.2", - "pkg-up": "3.1.0", - "react-error-overlay": "^6.0.7", - "recursive-readdir": "2.2.2", - "shell-quote": "1.7.2", - "strip-ansi": "6.0.0", - "text-table": "0.2.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - }, - "browserslist": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", - "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", - "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.378", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" - }, - "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "inquirer": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", - "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.5.3", - "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - } - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "react-dom": { - "version": "16.14.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", - "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.19.1" - } - }, - "react-error-overlay": { - "version": "6.0.8", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.8.tgz", - "integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw==" - }, - "react-intl": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-3.12.1.tgz", - "integrity": "sha512-cgumW29mwROIqyp8NXStYsoIm27+8FqnxykiLSawWjOxGIBeLuN/+p2srei5SRIumcJefOkOIHP+NDck05RgHg==", - "requires": { - "@formatjs/intl-displaynames": "^1.2.0", - "@formatjs/intl-listformat": "^1.4.1", - "@formatjs/intl-relativetimeformat": "^4.5.9", - "@formatjs/intl-unified-numberformat": "^3.2.0", - "@formatjs/intl-utils": "^2.2.0", - "@types/hoist-non-react-statics": "^3.3.1", - "@types/invariant": "^2.2.31", - "hoist-non-react-statics": "^3.3.2", - "intl-format-cache": "^4.2.21", - "intl-messageformat": "^7.8.4", - "intl-messageformat-parser": "^3.6.4", - "shallow-equal": "^1.2.1" - } - }, - "react-is": { - "version": "16.10.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.2.tgz", - "integrity": "sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==" - }, - "react-lifecycles-compat": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - }, - "react-overlays": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-4.1.1.tgz", - "integrity": "sha512-WtJifh081e6M24KnvTQoNjQEpz7HoLxqt8TwZM7LOYIkYJ8i/Ly1Xi7RVte87ZVnmqQ4PFaFiNHZhSINPSpdBQ==", - "requires": { - "@babel/runtime": "^7.12.1", - "@popperjs/core": "^2.5.3", - "@restart/hooks": "^0.3.25", - "@types/warning": "^3.0.0", - "dom-helpers": "^5.2.0", - "prop-types": "^15.7.2", - "uncontrollable": "^7.0.0", - "warning": "^4.0.3" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - } - } - }, - "react-responsive": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-8.2.0.tgz", - "integrity": "sha512-iagCqVrw4QSjhxKp3I/YK6+ODkWY6G+YPElvdYKiUUbywwh9Ds0M7r26Fj2/7dWFFbOpcGnJE6uE7aMck8j5Qg==", - "requires": { - "hyphenate-style-name": "^1.0.0", - "matchmediaquery": "^0.3.0", - "prop-types": "^15.6.1", - "shallow-equal": "^1.1.0" - } - }, - "react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", - "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "dependencies": { - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "requires": { - "isarray": "0.0.1" - } - } - } - }, - "react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", - "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - } - }, - "react-scripts": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.4.tgz", - "integrity": "sha512-7J7GZyF/QvZkKAZLneiOIhHozvOMHey7hO9cdO9u68jjhGZlI8hDdOm6UyuHofn6Ajc9Uji5I6Psm/nKNuWdyw==", - "requires": { - "@babel/core": "7.9.0", - "@svgr/webpack": "4.3.3", - "@typescript-eslint/eslint-plugin": "^2.10.0", - "@typescript-eslint/parser": "^2.10.0", - "babel-eslint": "10.1.0", - "babel-jest": "^24.9.0", - "babel-loader": "8.1.0", - "babel-plugin-named-asset-import": "^0.3.6", - "babel-preset-react-app": "^9.1.2", - "camelcase": "^5.3.1", - "case-sensitive-paths-webpack-plugin": "2.3.0", - "css-loader": "3.4.2", - "dotenv": "8.2.0", - "dotenv-expand": "5.1.0", - "eslint": "^6.6.0", - "eslint-config-react-app": "^5.2.1", - "eslint-loader": "3.0.3", - "eslint-plugin-flowtype": "4.6.0", - "eslint-plugin-import": "2.20.1", - "eslint-plugin-jsx-a11y": "6.2.3", - "eslint-plugin-react": "7.19.0", - "eslint-plugin-react-hooks": "^1.6.1", - "file-loader": "4.3.0", - "fs-extra": "^8.1.0", - "fsevents": "2.1.2", - "html-webpack-plugin": "4.0.0-beta.11", - "identity-obj-proxy": "3.0.0", - "jest": "24.9.0", - "jest-environment-jsdom-fourteen": "1.0.1", - "jest-resolve": "24.9.0", - "jest-watch-typeahead": "0.4.2", - "mini-css-extract-plugin": "0.9.0", - "optimize-css-assets-webpack-plugin": "5.0.3", - "pnp-webpack-plugin": "1.6.4", - "postcss-flexbugs-fixes": "4.1.0", - "postcss-loader": "3.0.0", - "postcss-normalize": "8.0.1", - "postcss-preset-env": "6.7.0", - "postcss-safe-parser": "4.0.1", - "react-app-polyfill": "^1.0.6", - "react-dev-utils": "^10.2.1", - "resolve": "1.15.0", - "resolve-url-loader": "3.1.2", - "sass-loader": "8.0.2", - "semver": "6.3.0", - "style-loader": "0.23.1", - "terser-webpack-plugin": "2.3.8", - "ts-pnp": "1.1.6", - "url-loader": "2.3.0", - "webpack": "4.42.0", - "webpack-dev-server": "3.11.0", - "webpack-manifest-plugin": "2.2.0", - "workbox-webpack-plugin": "4.3.1" - }, - "dependencies": { - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "react-transition-group": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", - "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", - "requires": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "requires": { - "util.promisify": "^1.0.0" - } - }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "requires": { - "minimatch": "3.0.4" - } - }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "regenerate-unicode-properties": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" - }, - "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" - }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" - }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "renderkid": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.4.tgz", - "integrity": "sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==", - "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "lodash": "^4.17.20", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - } - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "resolve": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", - "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" - }, - "resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, - "resolve-url-loader": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", - "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", - "requires": { - "adjust-sourcemap-loader": "3.0.0", - "camelcase": "5.3.1", - "compose-function": "3.0.3", - "convert-source-map": "1.7.0", - "es6-iterator": "2.0.3", - "loader-utils": "1.2.3", - "postcss": "7.0.21", - "rework": "1.0.1", - "rework-visit": "1.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" - }, - "rework": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", - "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", - "requires": { - "convert-source-map": "^0.3.3", - "css": "^2.0.0" - }, - "dependencies": { - "convert-source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=" - } - } - }, - "rework-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", - "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=" - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", - "requires": { - "bn.js": "^4.11.1" - } - }, - "rpc-payload-id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rpc-payload-id/-/rpc-payload-id-1.0.0.tgz", - "integrity": "sha512-Nd8ZfqqVtoPqpqz69pGHn+83XKlyGOAkj33MdoNfwnFW+jMWyLYvZsG6rqziu/KECb7hfrdeNa6J9oi0KQUH2w==" - }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==" - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "requires": { - "aproba": "^1.1.1" - } - }, - "rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==" - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safe-event-emitter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", - "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", - "requires": { - "events": "^3.0.0" - } - }, - "safe-json-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-json-utils/-/safe-json-utils-1.0.0.tgz", - "integrity": "sha512-n0hJm6BgX8wk3G+AS8MOQnfcA8dfE6ZMUfwkHUNx69YxPlU3HDaZTHXWto35Z+C4mOjK1odlT95WutkGC+0Idw==" - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - } - }, - "sanitize.css": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", - "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==" - }, - "sass-loader": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", - "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.6.1", - "semver": "^6.3.0" - }, - "dependencies": { - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "requires": { - "kind-of": "^6.0.2" - } - } - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "requires": { - "xmlchars": "^2.1.1" - } - }, - "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", - "requires": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "dependencies": { - "node-gyp-build": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", - "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" - }, - "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", - "requires": { - "node-forge": "^0.10.0" - } - }, - "semaphore": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", - "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==" - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", - "requires": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^2.0.1", - "lazy-cache": "^0.2.3", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "requires": { - "is-buffer": "^1.0.2" - } - }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - } - } - }, - "shallow-equal": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", - "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" - }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" - }, - "side-channel": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", - "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", - "requires": { - "es-abstract": "^1.18.0-next.0", - "object-inspect": "^1.8.0" - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", - "requires": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - } - } - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - } - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - } - }, - "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.4.0", - "websocket-driver": "0.6.5" - } - }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==" - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } - } - }, - "split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", - "requires": { - "figgy-pudding": "^3.5.1", - "minipass": "^3.1.1" - }, - "dependencies": { - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "requires": { - "yallist": "^4.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "stack-utils": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.4.tgz", - "integrity": "sha512-IPDJfugEGbfizBwBZRZ3xpccMdRyP5lqsBWXGQWimVjua/ccLCeMOAVjlc1R7LxFjo5sEDhyNIXd8mo/AiDS9w==", - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" - } - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - }, - "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", - "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "string.prototype.matchall": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz", - "integrity": "sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.3" - } - }, - "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "dependencies": { - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - } - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" - } - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-comments": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", - "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", - "requires": { - "babel-extract-comments": "^1.0.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", - "requires": { - "is-hex-prefixed": "1.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - }, - "style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "styled-components": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.1.tgz", - "integrity": "sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ==", - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/traverse": "^7.4.5", - "@emotion/is-prop-valid": "^0.8.8", - "@emotion/stylis": "^0.8.4", - "@emotion/unitless": "^0.7.4", - "babel-plugin-styled-components": ">= 1", - "css-to-react-native": "^3.0.0", - "hoist-non-react-statics": "^3.0.0", - "shallowequal": "^1.1.0", - "supports-color": "^5.5.0" - } - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "swarm-js": { - "version": "0.1.40", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", - "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", - "requires": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^7.1.0", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" - }, - "dependencies": { - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "requires": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - } - }, - "p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "requires": { - "prepend-http": "^1.0.1" - } - } - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - }, - "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "terser-webpack-plugin": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", - "integrity": "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==", - "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.3.1", - "jest-worker": "^25.4.0", - "p-limit": "^2.3.0", - "schema-utils": "^2.6.6", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.6.12", - "webpack-sources": "^1.4.3" - }, - "dependencies": { - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "jest-worker": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", - "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "requires": { - "find-up": "^4.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" - }, - "tiny-invariant": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", - "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "ts-pnp": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", - "integrity": "sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==" - }, - "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz", - "integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==" - }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "uncontrollable": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz", - "integrity": "sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q==", - "requires": { - "@babel/runtime": "^7.6.3", - "@types/react": "^16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" - } - }, - "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" - }, - "uri-js": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", - "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "url-loader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", - "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", - "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.5.0" - }, - "dependencies": { - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" - } - } - }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" - }, - "url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - }, - "utf-8-validate": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.3.tgz", - "integrity": "sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A==", - "requires": { - "node-gyp-build": "^4.2.0" - } - }, - "utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - }, - "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, - "varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "requires": { - "makeerror": "1.0.x" - } - }, - "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "optional": true - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "optional": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "web3": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.11.tgz", - "integrity": "sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ==", - "requires": { - "web3-bzz": "1.2.11", - "web3-core": "1.2.11", - "web3-eth": "1.2.11", - "web3-eth-personal": "1.2.11", - "web3-net": "1.2.11", - "web3-shh": "1.2.11", - "web3-utils": "1.2.11" - } - }, - "web3-bzz": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.11.tgz", - "integrity": "sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg==", - "requires": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40", - "underscore": "1.9.1" - } - }, - "web3-core": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.11.tgz", - "integrity": "sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ==", - "requires": { - "@types/bn.js": "^4.11.5", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-core-requestmanager": "1.2.11", - "web3-utils": "1.2.11" - } - }, - "web3-core-helpers": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz", - "integrity": "sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A==", - "requires": { - "underscore": "1.9.1", - "web3-eth-iban": "1.2.11", - "web3-utils": "1.2.11" - } - }, - "web3-core-method": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.11.tgz", - "integrity": "sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw==", - "requires": { - "@ethersproject/transactions": "^5.0.0-beta.135", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.11", - "web3-core-promievent": "1.2.11", - "web3-core-subscriptions": "1.2.11", - "web3-utils": "1.2.11" - } - }, - "web3-core-promievent": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz", - "integrity": "sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA==", - "requires": { - "eventemitter3": "4.0.4" - } - }, - "web3-core-requestmanager": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz", - "integrity": "sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA==", - "requires": { - "underscore": "1.9.1", - "web3-core-helpers": "1.2.11", - "web3-providers-http": "1.2.11", - "web3-providers-ipc": "1.2.11", - "web3-providers-ws": "1.2.11" - } - }, - "web3-core-subscriptions": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz", - "integrity": "sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg==", - "requires": { - "eventemitter3": "4.0.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.11" - } - }, - "web3-eth": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.11.tgz", - "integrity": "sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ==", - "requires": { - "underscore": "1.9.1", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-core-subscriptions": "1.2.11", - "web3-eth-abi": "1.2.11", - "web3-eth-accounts": "1.2.11", - "web3-eth-contract": "1.2.11", - "web3-eth-ens": "1.2.11", - "web3-eth-iban": "1.2.11", - "web3-eth-personal": "1.2.11", - "web3-net": "1.2.11", - "web3-utils": "1.2.11" - } - }, - "web3-eth-abi": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz", - "integrity": "sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg==", - "requires": { - "@ethersproject/abi": "5.0.0-beta.153", - "underscore": "1.9.1", - "web3-utils": "1.2.11" - } - }, - "web3-eth-accounts": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz", - "integrity": "sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw==", - "requires": { - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-common": "^1.3.2", - "ethereumjs-tx": "^2.1.1", - "scrypt-js": "^3.0.1", - "underscore": "1.9.1", - "uuid": "3.3.2", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-utils": "1.2.11" - }, - "dependencies": { - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - } - } - }, - "web3-eth-contract": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz", - "integrity": "sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow==", - "requires": { - "@types/bn.js": "^4.11.5", - "underscore": "1.9.1", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-core-promievent": "1.2.11", - "web3-core-subscriptions": "1.2.11", - "web3-eth-abi": "1.2.11", - "web3-utils": "1.2.11" - } - }, - "web3-eth-ens": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz", - "integrity": "sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA==", - "requires": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "underscore": "1.9.1", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-promievent": "1.2.11", - "web3-eth-abi": "1.2.11", - "web3-eth-contract": "1.2.11", - "web3-utils": "1.2.11" - } - }, - "web3-eth-iban": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz", - "integrity": "sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ==", - "requires": { - "bn.js": "^4.11.9", - "web3-utils": "1.2.11" - } - }, - "web3-eth-personal": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz", - "integrity": "sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw==", - "requires": { - "@types/node": "^12.12.6", - "web3-core": "1.2.11", - "web3-core-helpers": "1.2.11", - "web3-core-method": "1.2.11", - "web3-net": "1.2.11", - "web3-utils": "1.2.11" - } - }, - "web3-net": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.11.tgz", - "integrity": "sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg==", - "requires": { - "web3-core": "1.2.11", - "web3-core-method": "1.2.11", - "web3-utils": "1.2.11" - } - }, - "web3-provider-engine": { - "version": "15.0.12", - "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-15.0.12.tgz", - "integrity": "sha512-/OfhQalKPND1iB5ggvGuYF0+SIb2Qj5OFTrT2VrZWP79UhMTdP7T+L2FtblmRdCeOetoAzZHdBaIwLOZsmIX+w==", - "requires": { - "async": "^2.5.0", - "backoff": "^2.5.0", - "clone": "^2.0.0", - "cross-fetch": "^2.1.0", - "eth-block-tracker": "^4.4.2", - "eth-json-rpc-errors": "^2.0.2", - "eth-json-rpc-filters": "^4.1.1", - "eth-json-rpc-infura": "^4.0.1", - "eth-json-rpc-middleware": "^4.1.5", - "eth-sig-util": "^1.4.2", - "ethereumjs-block": "^1.2.2", - "ethereumjs-tx": "^1.2.0", - "ethereumjs-util": "^5.1.5", - "ethereumjs-vm": "^2.3.4", - "json-stable-stringify": "^1.0.1", - "promise-to-callback": "^1.0.0", - "readable-stream": "^2.2.9", - "request": "^2.85.0", - "semaphore": "^1.0.3", - "ws": "^5.1.1", - "xhr": "^2.2.0", - "xtend": "^4.0.1" - }, - "dependencies": { - "ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" - }, - "ethereumjs-tx": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", - "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", - "requires": { - "ethereum-common": "^0.0.18", - "ethereumjs-util": "^5.0.0" - } - }, - "ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "requires": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "web3-providers-http": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.11.tgz", - "integrity": "sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA==", - "requires": { - "web3-core-helpers": "1.2.11", - "xhr2-cookies": "1.1.0" - } - }, - "web3-providers-ipc": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz", - "integrity": "sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ==", - "requires": { - "oboe": "2.1.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.11" - } - }, - "web3-providers-ws": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz", - "integrity": "sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg==", - "requires": { - "eventemitter3": "4.0.4", - "underscore": "1.9.1", - "web3-core-helpers": "1.2.11", - "websocket": "^1.0.31" - } - }, - "web3-shh": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.11.tgz", - "integrity": "sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg==", - "requires": { - "web3-core": "1.2.11", - "web3-core-method": "1.2.11", - "web3-core-subscriptions": "1.2.11", - "web3-net": "1.2.11" - } - }, - "web3-utils": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.11.tgz", - "integrity": "sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ==", - "requires": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "underscore": "1.9.1", - "utf8": "3.0.0" - }, - "dependencies": { - "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - } - } - }, - "web3modal": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/web3modal/-/web3modal-1.9.2.tgz", - "integrity": "sha512-wxUpMPwFwjjTnhSSXbWY49Nrn9VAz9RRZpVmfFI2tMny26rsjqdBfYKiRNuMF2Y0Ui9gG4KiUtVkS7DJ2qfo2Q==", - "requires": { - "detect-browser": "^5.1.0", - "prop-types": "^15.7.2", - "react": "^16.8.6", - "react-dom": "^16.8.6", - "styled-components": "^5.1.1", - "tslib": "^1.10.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "webpack": { - "version": "4.42.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", - "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==", - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { - "yallist": "^3.0.2" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-manifest-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", - "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", - "requires": { - "fs-extra": "^7.0.0", - "lodash": ">=3.5 <5", - "object.entries": "^1.1.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "websocket": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.32.tgz", - "integrity": "sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q==", - "requires": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - } - }, - "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", - "requires": { - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-fetch": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz", - "integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==" - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "window-getters": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/window-getters/-/window-getters-1.0.0.tgz", - "integrity": "sha512-xyvEFq3x+7dCA7NFhqOmTMk0fPmmAzCUYL2svkw2LGBaXXQLRP0lFnfXHzysri9WZNMkzp/FD1u0w2Qc7Co+JA==" - }, - "window-metadata": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/window-metadata/-/window-metadata-1.0.0.tgz", - "integrity": "sha512-eYoXsZ9X4J+6xZgbHhNAatSR5bCtT409q8B+2Ol9ySx7qsdtgVZcNfox4qszFmKlGsFtT2b1Tcmcy69bRMObcg==", - "requires": { - "window-getters": "^1.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, - "workbox-background-sync": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", - "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-broadcast-update": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", - "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-build": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", - "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", - "requires": { - "@babel/runtime": "^7.3.4", - "@hapi/joi": "^15.0.0", - "common-tags": "^1.8.0", - "fs-extra": "^4.0.2", - "glob": "^7.1.3", - "lodash.template": "^4.4.0", - "pretty-bytes": "^5.1.0", - "stringify-object": "^3.3.0", - "strip-comments": "^1.0.2", - "workbox-background-sync": "^4.3.1", - "workbox-broadcast-update": "^4.3.1", - "workbox-cacheable-response": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-expiration": "^4.3.1", - "workbox-google-analytics": "^4.3.1", - "workbox-navigation-preload": "^4.3.1", - "workbox-precaching": "^4.3.1", - "workbox-range-requests": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1", - "workbox-streams": "^4.3.1", - "workbox-sw": "^4.3.1", - "workbox-window": "^4.3.1" - } - }, - "workbox-cacheable-response": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", - "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", - "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==" - }, - "workbox-expiration": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", - "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-google-analytics": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", - "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", - "requires": { - "workbox-background-sync": "^4.3.1", - "workbox-core": "^4.3.1", - "workbox-routing": "^4.3.1", - "workbox-strategies": "^4.3.1" - } - }, - "workbox-navigation-preload": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", - "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-precaching": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", - "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-range-requests": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", - "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-routing": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", - "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-strategies": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", - "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-streams": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", - "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "workbox-sw": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", - "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==" - }, - "workbox-webpack-plugin": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", - "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", - "requires": { - "@babel/runtime": "^7.0.0", - "json-stable-stringify": "^1.0.1", - "workbox-build": "^4.3.1" - } - }, - "workbox-window": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", - "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", - "requires": { - "workbox-core": "^4.3.1" - } - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "requires": { - "errno": "~0.1.7" - } - }, - "worker-rpc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", - "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", - "requires": { - "microevent.ts": "~0.1.1" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "requires": { - "mkdirp": "^0.5.1" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - } - } - }, - "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "xhr": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", - "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", - "requires": { - "global": "~4.3.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "requires": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" - } - }, - "xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "requires": { - "xhr-request": "^1.1.0" - } - }, - "xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", - "requires": { - "cookiejar": "^2.1.1" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "xregexp": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.4.0.tgz", - "integrity": "sha512-83y4aa8o8o4NZe+L+46wpa+F1cWR/wCGOWI3tzqUso0w3/KAvXy0+Di7Oe/cbNMixDR4Jmi7NEybWU6ps25Wkg==", - "requires": { - "@babel/runtime-corejs3": "^7.12.1" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - }, - "yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } -} diff --git a/web-ethereum/orchid_dapp/package.json b/web-ethereum/orchid_dapp/package.json deleted file mode 100644 index 71644abb2..000000000 --- a/web-ethereum/orchid_dapp/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "orchid_dapp", - "version": "0.1.0", - "private": true, - "homepage": "./", - "dependencies": { - "@types/jest": "^24.9.1", - "@types/node": "^12.19.8", - "@types/qrcode.react": "^1.0.1", - "@types/react": "^16.14.2", - "@types/react-bootstrap-range-slider": "^1.2.0", - "@types/react-dom": "^16.9.10", - "@types/react-responsive": "^8.0.2", - "@types/react-router-dom": "^5.1.6", - "@types/web3": "^1.2.2", - "@walletconnect/web3-provider": "^1.3.1", - "abi-decoder": "^2.3.0", - "big-integer": "^1.6.48", - "bootstrap": "^4.5.3", - "jquery": "^3.5.1", - "popper.js": "^1.16.1", - "qrcode.react": "^1.0.0", - "react": "^16.14.0", - "react-bootstrap": "^1.4.0", - "react-bootstrap-range-slider": "^1.2.2", - "react-dom": "^16.14.0", - "react-intl": "^3.12.1", - "react-responsive": "^8.2.0", - "react-router-dom": "^5.2.0", - "react-scripts": "^3.4.4", - "rxjs": "^6.6.3", - "typescript": "^4.1.2", - "web3": "1.2.11", - "web3modal": "^1.9.2" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject", - "i18n": "node scripts/generate-i18n.js" - }, - "eslintConfig": { - "extends": "react-app" - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} diff --git a/web-ethereum/orchid_dapp/public/earn/index.html b/web-ethereum/orchid_dapp/public/earn/index.html deleted file mode 100644 index 358a0517b..000000000 --- a/web-ethereum/orchid_dapp/public/earn/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - Title - - - - - - diff --git a/web-ethereum/orchid_dapp/public/favicon.ico b/web-ethereum/orchid_dapp/public/favicon.ico deleted file mode 100644 index 95b5095b037187b4aa4b8c8171c8faea62dc8eb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312888 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

s4F?&f*iR}5j&1*Vo(MTt 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 G+W!arJD+v{ diff --git a/web-ethereum/orchid_dapp/public/index.html b/web-ethereum/orchid_dapp/public/index.html deleted file mode 100644 index a6bf8af80..000000000 --- a/web-ethereum/orchid_dapp/public/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - Orchid Account Management - - - -

-
- - diff --git a/web-ethereum/orchid_dapp/public/logo192.png b/web-ethereum/orchid_dapp/public/logo192.png deleted file mode 100644 index 715c3b8f3b754419ec50a9aa15cf432eaaaac30c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4098 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 WZD>K(Xw&|1J8(nC1YfC52>lPPKXFL_ diff --git a/web-ethereum/orchid_dapp/public/logo512.png b/web-ethereum/orchid_dapp/public/logo512.png deleted file mode 100644 index badc008db1a261eb16d1d938cd10d6eab02eb0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20384 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 { - if (key.startsWith("@")) { return ""; } - return ` static get ${key}() { return intl.formatMessage({id: '${key}',\n defaultMessage: '${json[key]}'}); }`; -}).join('\n'); -out += "\n}\n"; - -fs.writeFileSync(outFile, out); - diff --git a/web-ethereum/orchid_dapp/scripts/pbust.py b/web-ethereum/orchid_dapp/scripts/pbust.py deleted file mode 100644 index 60684dfff..000000000 --- a/web-ethereum/orchid_dapp/scripts/pbust.py +++ /dev/null @@ -1,74 +0,0 @@ -# -# Calculate the survival probability for Orchid accounts given: -# -# n -- number of nanopayments sent -# p -- winrate of a nanopayment -# F -- face value backing a nanopayment -# E -- initial payment escrow (lottery pot balance) -# -import numpy as np - -def D(p, q): - """Relative entropy of p and q.""" - result = p * np.log(p / q) + (1 - p) * np.log((1 - p) / (1 - q)) - if np.isnan(result): - return 0 - return result - -def pbust(n, p, F, E): - """ - This expression is derived from the Chernoff bound of the tail of the binomial distribution. - """ - return np.exp(-n * D(E / (n * F), p)) - - -# -# Find n for various ratios of E/F. -# (This won't work because the function does not behave well) -# -#import numpy as np -#from scipy.optimize import minimize -#for E in range(1, 25): - #target_n = 0.2; F=1; p=1e-5; - #x0 = np.array([1e3]) - #result = minimize(lambda n: abs(target_n - pbust(n=n, F=F, E=E, p=p)), x0, method='Nelder-Mead') - #print(E, result.x) - -# -# Find n for various ratios of E/F by brute force in the appropriate range -# -target_survival = 0.8 # target survival rate -for E in range(1, 25): - for n in range(int(1e3), int(1e8)): - pbustv = pbust(n=n, F=1, E=E, p=1e-5); - #print(1-pbustv) - if (1-pbustv) < target_survival: - print(E, n) - break - -# 80% survival rate: E/F, n -# 1 7969 -# 2 40238 -# 3 85956 -# 4 139457 -# 5 198151 -# 6 260619 -# 7 325989 -# 8 393678 -# 9 463275 -# 10 534480 -# 11 607060 -# 12 680837 -# 13 755667 -# 14 831432 -# 15 908034 -# 16 985394 -# 17 1063442 -# 18 1142119 -# 19 1221373 -# 20 1301161 -# 21 1381442 -# 22 1462184 -# 23 1543354 -# 24 1624926 - diff --git a/web-ethereum/orchid_dapp/src/api/chains/chains.ts b/web-ethereum/orchid_dapp/src/api/chains/chains.ts deleted file mode 100644 index f7602e78a..000000000 --- a/web-ethereum/orchid_dapp/src/api/chains/chains.ts +++ /dev/null @@ -1,1129 +0,0 @@ -import {GasFunds, LotFunds, TokenType} from "../orchid-eth-token-types"; -import {debugV0} from "../../util/util"; - -export class EVMChains { - public static ETHEREUM_MAIN_NET = 1 - public static ETH_TOKEN = new TokenType(1, "Ethereum", "ETH", 18); - public static OXT_TOKEN = new TokenType(1, "Orchid Token", "OXT", 18); - private static map: Map = new Map(); - - private static ensureMapped() { - if (EVMChains.map.size === 0) { - chainid_data.forEach((json: ChainInfoJson) => { - EVMChains.map.set(json.chainId, new ChainInfo(json)); - }) - // Add a description for ganache testing - EVMChains.map.set(EVMChains.ganacheChain.chainId, new ChainInfo(EVMChains.ganacheChain)); - } - } - - // Describe the chain for chain id - public static getChain(id: number): ChainInfo | null { - EVMChains.ensureMapped(); - return EVMChains.map.get(id) ?? null; - } - - public static ganacheChain: ChainInfoJson = { - name: "Ganache Test Chain", - chainId: 1337, - shortName: "Ganache", - chain: "Ganache", - network: "local test net", - networkId: 1337, - nativeCurrency: { - name: "Ganache Token", - symbol: "TOK", - decimals: 18 - }, - rpc: [], - faucets: [], - infoURL: "", - }; -} - -export class ChainInfo { - name: string; - chainId: number; - gasToken: TokenType; - fundsToken: TokenType; - - public get isEthereumMainNet(): boolean { - return this.chainId === EVMChains.ETHEREUM_MAIN_NET - } - public get isGanache(): boolean { - return this.chainId === 1337; - } - - constructor(json: ChainInfoJson) { - this.name = json.name; - this.chainId = json.chainId; - - // TODO: Hard coded knowledge of contract version - if (this.chainId === EVMChains.ETHEREUM_MAIN_NET || debugV0()) { - // for main net assume the v0 contract - this.gasToken = EVMChains.ETH_TOKEN; - this.fundsToken = EVMChains.OXT_TOKEN; - } else { - // for other chains assume the v1 contract - let token = json.nativeCurrency - this.gasToken = new TokenType(this.chainId, token.name, token.symbol, token.decimals); - this.fundsToken = new TokenType(this.chainId, token.name, token.symbol, token.decimals); - } - } -} - -interface ChainTokenInfoJson { - name: string; - symbol: string; - decimals: number; -} - -interface ChainInfoJson { - name: string; - chainId: number; - shortName: string; - chain: string; - network: string; - networkId: number; - nativeCurrency: ChainTokenInfoJson; - rpc: string[]; - faucets: any[]; - infoURL: string; -} - -// -// Chain data from https://chainid.network/chains.json -// https://github.com/ethereum-lists/chains -// -const chainid_data = - [ - { - "name": "Ethereum Mainnet", - "chainId": 1, - "shortName": "eth", - "chain": "ETH", - "network": "mainnet", - "networkId": 1, - "nativeCurrency": {"name": "Ether", "symbol": "ETH", "decimals": 18}, - // eslint-disable-next-line no-template-curly-in-string - "rpc": ["https://mainnet.infura.io/v3/${INFURA_API_KEY}", "wss://mainnet.infura.io/ws/v3/${INFURA_API_KEY}", "https://api.mycryptoapi.com/eth", "https://cloudflare-eth.com"], - "faucets": [], - "infoURL": "https://ethereum.org" - }, - { - "name": "xDAI Chain", - "chainId": 100, - "shortName": "xdai", - "chain": "XDAI", - "network": "mainnet", - "networkId": 100, - "nativeCurrency": {"name": "xDAI", "symbol": "xDAI", "decimals": 18}, - "rpc": ["https://rpc.xdaichain.com", "https://xdai.poanetwork.dev", "wss://rpc.xdaichain.com/wss", "wss://xdai.poanetwork.dev/wss", "http://xdai.poanetwork.dev", "https://dai.poa.network", "ws://xdai.poanetwork.dev:8546"], - "faucets": [], - "infoURL": "https://forum.poa.network/c/xdai-chain" - }, - { - "name": "EtherInc", - "chainId": 101, - "shortName": "eti", - "chain": "ETI", - "network": "mainnet", - "networkId": 1, - "nativeCurrency": {"name": "EtherInc Ether", "symbol": "ETI", "decimals": 18}, - "rpc": ["https://api.einc.io/jsonrpc/mainnet"], - "faucets": [], - "infoURL": "https://einc.io" - }, - { - "name": "ThunderCore Mainnet", - "chainId": 108, - "shortName": "TT", - "chain": "TT", - "network": "mainnet", - "networkId": 108, - "nativeCurrency": {"name": "ThunderCore Mainnet Ether", "symbol": "TT", "decimals": 18}, - "rpc": ["https://mainnet-rpc.thundercore.com"], - "faucets": ["https://faucet.thundercore.com"], - "infoURL": "https://thundercore.com" - }, - { - "name": "Metadium Mainnet", - "chainId": 11, - "shortName": "meta", - "chain": "META", - "network": "mainnet", - "networkId": 11, - "nativeCurrency": {"name": "Metadium Mainnet Ether", "symbol": "META", "decimals": 18}, - "rpc": ["https://api.metadium.com/prod"], - "faucets": [], - "infoURL": "https://metadium.com" - }, - { - "name": "IPOS Network", - "chainId": 1122334455, - "shortName": "ipos", - "chain": "IPOS", - "network": "mainnet", - "networkId": 1122334455, - "nativeCurrency": {"name": "IPOS Network Ether", "symbol": "IPOS", "decimals": 18}, - "rpc": ["https://rpc.iposlab.com", "https://rpc2.iposlab.com"], - "faucets": [], - "infoURL": "https://iposlab.com" - }, - { - "name": "MathChain", - "chainId": 1139, - "shortName": "MATH", - "chain": "MATH", - "network": "mainnet", - "networkId": 1139, - "nativeCurrency": {"name": "MathChain", "symbol": "MATH", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://mathwallet.org" - }, - { - "name": "MathChain Testnet", - "chainId": 1140, - "shortName": "tMATH", - "chain": "MATH", - "network": "testnet", - "networkId": 1140, - "nativeCurrency": {"name": "MathChain", "symbol": "MATH", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://mathwallet.org/" - }, - { - "name": "Metadium Testnet", - "chainId": 12, - "shortName": "kal", - "chain": "META", - "network": "testnet", - "networkId": 12, - "nativeCurrency": {"name": "Metadium Testnet Ether", "symbol": "KAL", "decimals": 18}, - "rpc": ["https://api.metadium.com/dev"], - "faucets": [], - "infoURL": "https://metadium.com" - }, - { - "name": "Fuse Mainnet", - "chainId": 122, - "shortName": "fuse", - "chain": "FUSE", - "network": "mainnet", - "networkId": 122, - "nativeCurrency": {"name": "Fuse", "symbol": "FUSE", "decimals": 18}, - "rpc": ["https://rpc.fuse.io"], - "faucets": [], - "infoURL": "https://fuse.io/" - }, - { - "name": "Diode Testnet Staging", - "chainId": 13, - "shortName": "dstg", - "chain": "DIO", - "network": "testnet", - "networkId": 13, - "nativeCurrency": {"name": "Staging Diodes", "symbol": "sDIO", "decimals": 18}, - "rpc": ["https://staging.diode.io:8443/", "wss://staging.diode.io:8443/ws"], - "faucets": [], - "infoURL": "https://diode.io/staging" - }, - { - "name": "Ether-1", - "chainId": 1313114, - "shortName": "etho", - "chain": "ETHO", - "network": "mainnet", - "networkId": 1313114, - "nativeCurrency": {"name": "Ether-1 Ether", "symbol": "ETHO", "decimals": 18}, - "rpc": ["https://rpc.ether1.org"], - "faucets": [], - "infoURL": "https://ether1.org" - }, - { - "name": "NEAR MainNet", - "chainId": 1313161554, - "shortName": "near", - "chain": "NEAR", - "network": "mainnet", - "networkId": 1313161554, - "nativeCurrency": {"name": "NEAR", "symbol": "NEAR", "decimals": 24}, - "rpc": [], - "faucets": [], - "infoURL": "https://near.org/" - }, - { - "name": "NEAR TestNet", - "chainId": 1313161555, - "shortName": "neart", - "chain": "NEAR", - "network": "testnet", - "networkId": 1313161555, - "nativeCurrency": {"name": "NEAR", "symbol": "tNEAR", "decimals": 24}, - "rpc": [], - "faucets": ["https://wallet.testnet.near.org"], - "infoURL": "https://near.org/" - }, - { - "name": "Xerom", - "chainId": 1313500, - "shortName": "xero", - "chain": "XERO", - "network": "mainnet", - "networkId": 1313500, - "nativeCurrency": {"name": "Xerom Ether", "symbol": "XERO", "decimals": 18}, - "rpc": ["https://rpc.xerom.org"], - "faucets": [], - "infoURL": "https://xerom.org" - }, - { - "name": "PepChain Churchill", - "chainId": 13371337, - "shortName": "tpep", - "chain": "PEP", - "network": "testnet", - "networkId": 13371337, - "nativeCurrency": {"name": "PepChain Churchill Ether", "symbol": "TPEP", "decimals": 18}, - "rpc": ["https://churchill-rpc.pepchain.io"], - "faucets": [], - "infoURL": "https://pepchain.io" - }, - { - "name": "Matic Mainnet", - "chainId": 137, - "shortName": "matic", - "chain": "Matic", - "network": "mainnet", - "networkId": 137, - "nativeCurrency": {"name": "Matic", "symbol": "MATIC", "decimals": 18}, - "rpc": ["https://rpc-mainnet.matic.network", "wss://ws-mainnet.matic.network"], - "faucets": [], - "infoURL": "https://matic.network/" - }, - { - "name": "Diode Prenet", - "chainId": 15, - "shortName": "dio", - "chain": "DIO", - "network": "mainnet", - "networkId": 15, - "nativeCurrency": {"name": "Diodes", "symbol": "DIO", "decimals": 18}, - "rpc": ["https://prenet.diode.io:8443/", "wss://prenet.diode.io:8443/ws"], - "faucets": [], - "infoURL": "https://diode.io/prenet" - }, - { - "name": "Lightstreams Testnet", - "chainId": 162, - "shortName": "tpht", - "chain": "PHT", - "network": "sirius", - "networkId": 162, - "nativeCurrency": {"name": "Lightstreams PHT", "symbol": "PHT", "decimals": 18}, - "rpc": ["https://node.sirius.lightstreams.io"], - "faucets": ["https://discuss.lightstreams.network/t/request-test-tokens"], - "infoURL": "https://explorer.sirius.lightstreams.io" - }, - { - "name": "Atheios", - "chainId": 1620, - "shortName": "ath", - "chain": "ATH", - "network": "mainnet", - "networkId": 11235813, - "nativeCurrency": {"name": "Atheios Ether", "symbol": "ATH", "decimals": 18}, - "rpc": ["https://wallet.atheios.com:8797"], - "faucets": [], - "infoURL": "https://atheios.com" - }, - { - "name": "Lightstreams Mainnet", - "chainId": 163, - "shortName": "pht", - "chain": "PHT", - "network": "mainnet", - "networkId": 163, - "nativeCurrency": {"name": "Lightstreams PHT", "symbol": "PHT", "decimals": 18}, - "rpc": ["https://node.mainnet.lightstreams.io"], - "faucets": [], - "infoURL": "https://explorer.lightstreams.io" - }, - { - "name": "ThunderCore Testnet", - "chainId": 18, - "shortName": "TST", - "chain": "TST", - "network": "testnet", - "networkId": 18, - "nativeCurrency": {"name": "ThunderCore Testnet Ether", "symbol": "TST", "decimals": 18}, - "rpc": ["https://testnet-rpc.thundercore.com"], - "faucets": ["https://faucet-testnet.thundercore.com"], - "infoURL": "https://thundercore.com" - }, - { - "name": "IOLite", - "chainId": 18289463, - "shortName": "ilt", - "chain": "ILT", - "network": "mainnet", - "networkId": 18289463, - "nativeCurrency": {"name": "IOLite Ether", "symbol": "ILT", "decimals": 18}, - "rpc": ["https://net.iolite.io"], - "faucets": [], - "infoURL": "https://iolite.io" - }, - { - "name": "Teslafunds", - "chainId": 1856, - "shortName": "tsf", - "chain": "TSF", - "network": "mainnet", - "networkId": 1, - "nativeCurrency": {"name": "Teslafunds Ether", "symbol": "TSF", "decimals": 18}, - "rpc": ["https://tsfapi.europool.me"], - "faucets": [], - "infoURL": "https://teslafunds.io" - }, - { - "name": "EtherGem", - "chainId": 1987, - "shortName": "egem", - "chain": "EGEM", - "network": "mainnet", - "networkId": 1987, - "nativeCurrency": {"name": "EtherGem Ether", "symbol": "EGEM", "decimals": 18}, - "rpc": ["https://jsonrpc.egem.io/custom"], - "faucets": [], - "infoURL": "https://egem.io" - }, - { - "name": "Expanse Network", - "chainId": 2, - "shortName": "exp", - "chain": "EXP", - "network": "mainnet", - "networkId": 1, - "nativeCurrency": {"name": "Expanse Network Ether", "symbol": "EXP", "decimals": 18}, - "rpc": ["https://node.expanse.tech"], - "faucets": [], - "infoURL": "https://expanse.tech" - }, - { - "name": "ELA-ETH-Sidechain Mainnet", - "chainId": 20, - "shortName": "elaeth", - "chain": "ETH", - "network": "mainnet", - "networkId": 20, - "nativeCurrency": {"name": "Elastos", "symbol": "ELA", "decimals": 18}, - "rpc": ["https://mainrpc.elaeth.io"], - "faucets": [], - "infoURL": "https://www.elastos.org/" - }, - { - "name": "Akroma", - "chainId": 200625, - "shortName": "aka", - "chain": "AKA", - "network": "mainnet", - "networkId": 200625, - "nativeCurrency": {"name": "Akroma Ether", "symbol": "AKA", "decimals": 18}, - "rpc": ["https://remote.akroma.io"], - "faucets": [], - "infoURL": "https://akroma.io" - }, - { - "name": "ELA-ETH-Sidechain Testnet", - "chainId": 21, - "shortName": "elaetht", - "chain": "ETH", - "network": "testnet", - "networkId": 21, - "nativeCurrency": {"name": "Elastos", "symbol": "tELA", "decimals": 18}, - "rpc": ["https://rpc.elaeth.io"], - "faucets": ["https://faucet.elaeth.io/"], - "infoURL": "https://elaeth.io/" - }, - { - "name": "Freight Trust Network", - "chainId": 211, - "shortName": "EDI", - "chain": "EDI", - "network": "freight & trade network", - "networkId": 0, - "nativeCurrency": {"name": "Freight Trust Native", "symbol": "0xF", "decimals": 18}, - // eslint-disable-next-line no-template-curly-in-string - "rpc": ["http://13.57.207.168:3435", "https://app.freighttrust.net/ftn/${API_KEY}"], - "faucets": ["http://faucet.freight.sh"], - "infoURL": "https://freighttrust.com" - }, - { - "name": "Webchain", - "chainId": 24484, - "shortName": "web", - "chain": "WEB", - "network": "mainnet", - "networkId": 37129, - "nativeCurrency": {"name": "Webchain Ether", "symbol": "WEB", "decimals": 18}, - "rpc": ["https://node1.webchain.network"], - "faucets": [], - "infoURL": "https://webchain.network" - }, - { - "name": "Energy Web Chain", - "chainId": 246, - "shortName": "ewt", - "chain": "Energy Web Chain", - "network": "mainnet", - "networkId": 246, - "nativeCurrency": {"name": "Energy Web Token", "symbol": "EWT", "decimals": 18}, - "rpc": ["https://rpc.energyweb.org", "wss://rpc.energyweb.org/ws"], - "faucets": [], - "infoURL": "https://energyweb.org" - }, - { - "name": "ARTIS sigma1", - "chainId": 246529, - "shortName": "ats", - "chain": "ARTIS", - "network": "sigma1", - "networkId": 246529, - "nativeCurrency": {"name": "ARTIS sigma1 Ether", "symbol": "ATS", "decimals": 18}, - "rpc": ["https://rpc.sigma1.artis.network"], - "faucets": [], - "infoURL": "https://artis.eco" - }, - { - "name": "ARTIS Testnet tau1", - "chainId": 246785, - "shortName": "atstau", - "chain": "ARTIS", - "network": "tau1", - "networkId": 246785, - "nativeCurrency": {"name": "ARTIS tau1 Ether", "symbol": "tATS", "decimals": 18}, - "rpc": ["https://rpc.tau1.artis.network"], - "faucets": [], - "infoURL": "https://artis.network" - }, - { - "name": "Fantom Opera", - "chainId": 250, - "shortName": "ftm", - "chain": "FTM", - "network": "mainnet", - "networkId": 250, - "nativeCurrency": {"name": "Fantom", "symbol": "FTM", "decimals": 18}, - "rpc": ["https://rpc.fantom.network", "https://fantomscan.io/rpc"], - "faucets": [], - "infoURL": "https://fantom.foundation" - }, - { - "name": "High Performance Blockchain", - "chainId": 269, - "shortName": "hpb", - "chain": "HPB", - "network": "mainnet", - "networkId": 100, - "nativeCurrency": { - "name": "High Performance Blockchain Ether", - "symbol": "HPB", - "decimals": 18 - }, - "rpc": ["https://node.hpb.blue"], - "faucets": [], - "infoURL": "https://hpb.io" - }, - { - "name": "Auxilium Network Mainnet", - "chainId": 28945486, - "shortName": "auxi", - "chain": "AUX", - "network": "mainnet", - "networkId": 28945486, - "nativeCurrency": {"name": "Auxilium coin", "symbol": "AUX", "decimals": 18}, - "rpc": ["https://rpc.auxilium.global"], - "faucets": [], - "infoURL": "https://auxilium.global" - }, - { - "name": "Ethereum Testnet Ropsten", - "chainId": 3, - "shortName": "rop", - "chain": "ETH", - "network": "ropsten", - "networkId": 3, - "nativeCurrency": {"name": "Ropsten Ether", "symbol": "ROP", "decimals": 18}, - // eslint-disable-next-line no-template-curly-in-string - "rpc": ["https://ropsten.infura.io/v3/${INFURA_API_KEY}", "wss://ropsten.infura.io/ws/v3/${INFURA_API_KEY}"], - // eslint-disable-next-line no-template-curly-in-string - "faucets": ["https://faucet.ropsten.be?${ADDRESS}"], - "infoURL": "https://github.com/ethereum/ropsten" - }, - { - "name": "RSK Mainnet", - "chainId": 30, - "shortName": "rsk", - "chain": "RSK", - "network": "mainnet", - "networkId": 30, - "nativeCurrency": {"name": "RSK Mainnet Ether", "symbol": "RBTC", "decimals": 18}, - "rpc": ["https://public-node.rsk.co", "https://mycrypto.rsk.co"], - "faucets": [], - "infoURL": "https://rsk.co" - }, - { - "name": "RSK Testnet", - "chainId": 31, - "shortName": "trsk", - "chain": "RSK", - "network": "testnet", - "networkId": 31, - "nativeCurrency": {"name": "RSK Testnet Ether", "symbol": "tRBTC", "decimals": 18}, - "rpc": ["https://public-node.testnet.rsk.co", "https://mycrypto.testnet.rsk.co"], - "faucets": ["https://faucet.testnet.rsk.co"], - "infoURL": "https://rsk.co" - }, - { - "name": "Ethersocial Network", - "chainId": 31102, - "shortName": "esn", - "chain": "ESN", - "network": "mainnet", - "networkId": 1, - "nativeCurrency": {"name": "Ethersocial Network Ether", "symbol": "ESN", "decimals": 18}, - "rpc": ["https://api.esn.gonspool.com"], - "faucets": [], - "infoURL": "https://ethersocial.org" - }, - { - "name": "Pirl", - "chainId": 3125659152, - "shortName": "pirl", - "chain": "PIRL", - "network": "mainnet", - "networkId": 3125659152, - "nativeCurrency": {"name": "Pirl Ether", "symbol": "PIRL", "decimals": 18}, - "rpc": ["https://wallrpc.pirl.io"], - "faucets": [], - "infoURL": "https://pirl.io" - }, - { - "name": "Joys Digital Mainnet", - "chainId": 35855456, - "shortName": "JOYS", - "chain": "JOYS", - "network": "mainnet", - "networkId": 35855456, - "nativeCurrency": {"name": "JOYS", "symbol": "JOYS", "decimals": 18}, - "rpc": ["https://node.joys.digital"], - "faucets": [], - "infoURL": "https://joys.digital" - }, - { - "name": "Valorbit", - "chainId": 38, - "shortName": "val", - "chain": "VAL", - "network": "mainnet", - "networkId": 38, - "nativeCurrency": {"name": "Valorbit", "symbol": "VAL", "decimals": 18}, - "rpc": ["https://rpc.valorbit.com/v2"], - "faucets": [], - "infoURL": "https://valorbit.com" - }, - { - "name": "Lisinski", - "chainId": 385, - "shortName": "lisinski", - "chain": "CRO", - "network": "mainnet", - "networkId": 385, - "nativeCurrency": {"name": "Lisinski Ether", "symbol": "LISINSKI", "decimals": 18}, - "rpc": ["https://rpc-bitfalls1.lisinski.online"], - "faucets": ["https://pipa.lisinski.online"], - "infoURL": "https://lisinski.online" - }, - { - "name": "Energi Mainnet", - "chainId": 39797, - "shortName": "nrg", - "chain": "NRG", - "network": "mainnet", - "networkId": 39797, - "nativeCurrency": {"name": "Energi", "symbol": "NRG", "decimals": 18}, - "rpc": ["https://nodeapi.gen3.energi.network"], - "faucets": [], - "infoURL": "https://www.energi.world/" - }, - { - "name": "Ethereum Testnet Rinkeby", - "chainId": 4, - "shortName": "rin", - "chain": "ETH", - "network": "rinkeby", - "networkId": 4, - "nativeCurrency": {"name": "Rinkeby Ether", "symbol": "RIN", "decimals": 18}, - // eslint-disable-next-line no-template-curly-in-string - "rpc": ["https://rinkeby.infura.io/v3/${INFURA_API_KEY}", "wss://rinkeby.infura.io/ws/v3/${INFURA_API_KEY}"], - "faucets": ["https://faucet.rinkeby.io"], - "infoURL": "https://www.rinkeby.io" - }, - { - "name": "Ethereum Testnet Kovan", - "chainId": 42, - "shortName": "kov", - "chain": "ETH", - "network": "kovan", - "networkId": 42, - "nativeCurrency": {"name": "Kovan Ether", "symbol": "KOV", "decimals": 18}, - // eslint-disable-next-line no-template-curly-in-string - "rpc": ["https://kovan.poa.network", "http://kovan.poa.network:8545", "https://kovan.infura.io/v3/${INFURA_API_KEY}", "wss://kovan.infura.io/ws/v3/${INFURA_API_KEY}", "ws://kovan.poa.network:8546"], - "faucets": ["https://faucet.kovan.network", "https://gitter.im/kovan-testnet/faucet"], - "infoURL": "https://kovan-testnet.github.io/website" - }, - { - "name": "Optimistic Ethereum", - "chainId": 420, - "shortName": "oeth", - "chain": "ETH", - "network": "mainnet", - "networkId": 420, - "nativeCurrency": {"name": "Ether", "symbol": "OETH", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://optimism.io" - }, - { - "name": "Athereum", - "chainId": 43110, - "shortName": "avaeth", - "chain": "ATH", - "network": "athereum", - "networkId": 43110, - "nativeCurrency": {"name": "Athereum Ether", "symbol": "ATH", "decimals": 18}, - "rpc": ["https://ava.network:21015/ext/evm/rpc"], - // eslint-disable-next-line no-template-curly-in-string - "faucets": ["http://athfaucet.ava.network//?address=${ADDRESS}"], - "infoURL": "https://athereum.ava.network" - }, - { - "name": "Energi Testnet", - "chainId": 49797, - "shortName": "tnrg", - "chain": "NRG", - "network": "testnet", - "networkId": 49797, - "nativeCurrency": {"name": "Energi", "symbol": "tNRG", "decimals": 18}, - "rpc": ["https://nodeapi.test3.energi.network"], - "faucets": [], - "infoURL": "https://www.energi.world/" - }, - { - "name": "Ethereum Testnet Görli", - "chainId": 5, - "shortName": "gor", - "chain": "ETH", - "network": "goerli", - "networkId": 5, - "nativeCurrency": {"name": "Görli Ether", "symbol": "GOR", "decimals": 18}, - "rpc": ["https://rpc.goerli.mudit.blog/", "https://rpc.slock.it/goerli ", "https://goerli.prylabs.net/"], - // eslint-disable-next-line no-template-curly-in-string - "faucets": ["https://goerli-faucet.slock.it/?address=${ADDRESS}", "https://faucet.goerli.mudit.blog"], - "infoURL": "https://goerli.net/#about" - }, - { - "name": "Tao Network", - "chainId": 558, - "shortName": "tao", - "chain": "TAO", - "network": "core", - "networkId": 558, - "nativeCurrency": {"name": "Tao", "symbol": "TAO", "decimals": 18}, - "rpc": ["https://rpc.testnet.tao.network", "http://rpc.testnet.tao.network:8545", "https://rpc.tao.network", "wss://rpc.tao.network"], - "faucets": [], - "infoURL": "https://tao.network" - }, - { - "name": "Binance Smart Chain Mainnet", - "chainId": 56, - "shortName": "bnb", - "chain": "BSC", - "network": "mainnet", - "networkId": 56, - "nativeCurrency": {"name": "Binance Chain Native Token", "symbol": "BNB", "decimals": 18}, - "rpc": ["https://bsc-dataseed1.binance.org", "https://bsc-dataseed2.binance.org", "https://bsc-dataseed3.binance.org", "https://bsc-dataseed4.binance.org", "https://bsc-dataseed1.defibit.io", "https://bsc-dataseed2.defibit.io", "https://bsc-dataseed3.defibit.io", "https://bsc-dataseed4.defibit.io", "https://bsc-dataseed1.ninicoin.io", "https://bsc-dataseed2.ninicoin.io", "https://bsc-dataseed3.ninicoin.io", "https://bsc-dataseed4.ninicoin.io", "wss://bsc-ws-node.nariox.org"], - "faucets": [], - "infoURL": "https://www.binance.org" - }, - { - "name": "Wegochain Rubidium Mainnet", - "chainId": 5869, - "shortName": "rbd", - "chain": "RBD", - "network": "mainnet", - "networkId": 5869, - "nativeCurrency": {"name": "Rubid", "symbol": "RBD", "decimals": 18}, - "rpc": ["https://proxy.wegochain.io", "http://wallet.wegochain.io:7764"], - "faucets": [], - "infoURL": "http://wegochain.io" - }, - { - "name": "Acala Mandala Testnet", - "chainId": 595, - "shortName": "maca", - "chain": "mACA", - "network": "testnet", - "networkId": 595, - "nativeCurrency": {"name": "Acala Mandala Token", "symbol": "mACA", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://acala.network" - }, - { - "name": "Ethereum Classic Testnet Kotti", - "chainId": 6, - "shortName": "kot", - "chain": "ETC", - "network": "kotti", - "networkId": 6, - "nativeCurrency": {"name": "Kotti Ether", "symbol": "KOT", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://explorer.jade.builders/?network=kotti" - }, - { - "name": "GoChain", - "chainId": 60, - "shortName": "go", - "chain": "GO", - "network": "mainnet", - "networkId": 60, - "nativeCurrency": {"name": "GoChain Ether", "symbol": "GO", "decimals": 18}, - "rpc": ["https://rpc.gochain.io"], - "faucets": [], - "infoURL": "https://gochain.io" - }, - { - "name": "Ethereum Classic Mainnet", - "chainId": 61, - "shortName": "etc", - "chain": "ETC", - "network": "mainnet", - "networkId": 1, - "nativeCurrency": {"name": "Ethereum Classic Ether", "symbol": "ETC", "decimals": 18}, - "rpc": ["https://ethereumclassic.network"], - "faucets": [], - "infoURL": "https://ethereumclassic.org" - }, - { - "name": "Aquachain", - "chainId": 61717561, - "shortName": "aqua", - "chain": "AQUA", - "network": "mainnet", - "networkId": 61717561, - "nativeCurrency": {"name": "Aquachain Ether", "symbol": "AQUA", "decimals": 18}, - "rpc": ["https://c.onical.org", "https://tx.aquacha.in/api"], - "faucets": ["https://aquacha.in/faucet"], - "infoURL": "https://aquachain.github.io" - }, - { - "name": "Ethereum Classic Testnet Morden", - "chainId": 62, - "shortName": "tetc", - "chain": "ETC", - "network": "testnet", - "networkId": 2, - "nativeCurrency": { - "name": "Ethereum Classic Testnet Ether", - "symbol": "TETC", - "decimals": 18 - }, - "rpc": [], - "faucets": [], - "infoURL": "https://ethereumclassic.org" - }, - { - "name": "Ethereum Classic Testnet Mordor", - "chainId": 63, - "shortName": "metc", - "chain": "ETC", - "network": "testnet", - "networkId": 7, - "nativeCurrency": {"name": "Mordor Classic Testnet Ether", "symbol": "METC", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://github.com/eth-classic/mordor/" - }, - { - "name": "Ellaism", - "chainId": 64, - "shortName": "ella", - "chain": "ELLA", - "network": "mainnet", - "networkId": 64, - "nativeCurrency": {"name": "Ellaism Ether", "symbol": "ELLA", "decimals": 18}, - "rpc": ["https://jsonrpc.ellaism.org"], - "faucets": [], - "infoURL": "https://ellaism.org" - }, - { - "name": "DBChain Testnet", - "chainId": 67, - "shortName": "dbm", - "chain": "DBM", - "network": "testnet", - "networkId": 67, - "nativeCurrency": {"name": "DBChain Testnet", "symbol": "DBM", "decimals": 18}, - "rpc": ["http://test-rpc.dbmbp.com"], - "faucets": [], - "infoURL": "http://test.dbmbp.com" - }, - { - "name": "Karura Network", - "chainId": 686, - "shortName": "kar", - "chain": "KAR", - "network": "mainnet", - "networkId": 686, - "nativeCurrency": {"name": "Karura Token", "symbol": "KAR", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://karura.network" - }, - { - "name": "ThaiChain", - "chainId": 7, - "shortName": "tch", - "chain": "TCH", - "network": "mainnet", - "networkId": 7, - "nativeCurrency": {"name": "ThaiChain Ether", "symbol": "TCH", "decimals": 18}, - "rpc": ["https://rpc.dome.cloud"], - "faucets": [], - "infoURL": "https://thaichain.io" - }, - { - "name": "Energy Web Volta Testnet", - "chainId": 73799, - "shortName": "vt", - "chain": "Volta", - "network": "testnet", - "networkId": 73799, - "nativeCurrency": {"name": "Volta Token", "symbol": "VT", "decimals": 18}, - "rpc": ["https://volta-rpc.energyweb.org", "wss://volta-rpc.energyweb.org/ws"], - "faucets": ["https://voltafaucet.energyweb.org"], - "infoURL": "https://energyweb.org" - }, - { - "name": "Mix", - "chainId": 76, - "shortName": "mix", - "chain": "MIX", - "network": "mainnet", - "networkId": 76, - "nativeCurrency": {"name": "Mix Ether", "symbol": "MIX", "decimals": 18}, - "rpc": ["https://rpc2.mix-blockchain.org:8647"], - "faucets": [], - "infoURL": "https://mix-blockchain.org" - }, - { - "name": "POA Network Sokol", - "chainId": 77, - "shortName": "poa", - "chain": "POA", - "network": "sokol", - "networkId": 77, - "nativeCurrency": {"name": "POA Sokol Ether", "symbol": "POA", "decimals": 18}, - "rpc": ["https://sokol.poa.network", "wss://sokol.poa.network/wss", "ws://sokol.poa.network:8546"], - "faucets": ["https://faucet-sokol.herokuapp.com"], - "infoURL": "https://poa.network" - }, - { - "name": "Musicoin", - "chainId": 7762959, - "shortName": "music", - "chain": "MUSIC", - "network": "mainnet", - "networkId": 7762959, - "nativeCurrency": {"name": "Musicoin", "symbol": "MUSIC", "decimals": 18}, - "rpc": ["https://mewapi.musicoin.tw"], - "faucets": [], - "infoURL": "https://musicoin.tw" - }, - { - "name": "Firenze test network", - "chainId": 78110, - "shortName": "firenze", - "chain": "ETH", - "network": "testnet", - "networkId": 78110, - "nativeCurrency": {"name": "Firenze Ether", "symbol": "FIN", "decimals": 18}, - "rpc": ["https://ethnode.primusmoney.com/firenze"], - "faucets": [], - "infoURL": "https://primusmoney.com" - }, - { - "name": "Acala Network", - "chainId": 787, - "shortName": "aca", - "chain": "ACA", - "network": "mainnet", - "networkId": 787, - "nativeCurrency": {"name": "Acala Token", "symbol": "ACA", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://acala.network" - }, - { - "name": "Ubiq Network Mainnet", - "chainId": 8, - "shortName": "ubq", - "chain": "UBQ", - "network": "mainnet", - "networkId": 88, - "nativeCurrency": {"name": "Ubiq Ether", "symbol": "UBQ", "decimals": 18}, - "rpc": ["https://rpc.octano.dev", "https://pyrus2.ubiqscan.io"], - "faucets": [], - "infoURL": "https://ubiqsmart.com" - }, - { - "name": "Matic Testnet Mumbai", - "chainId": 80001, - "shortName": "maticmum", - "chain": "Matic", - "network": "testnet", - "networkId": 80001, - "nativeCurrency": {"name": "Matic", "symbol": "tMATIC", "decimals": 18}, - "rpc": ["https://rpc-mumbai.matic.today", "wss://ws-mumbai.matic.today"], - "faucets": ["https://faucet.matic.network/"], - "infoURL": "https://matic.network/" - }, - { - "name": "Meter Mainnet", - "chainId": 82, - "shortName": "Meter", - "chain": "METER", - "network": "mainnet", - "networkId": 82, - "nativeCurrency": {"name": "Meter", "symbol": "MTR", "decimals": 18}, - "rpc": ["https://rpc.meter.io"], - "faucets": [], - "infoURL": "https://www.meter.io" - }, - { - "name": "Callisto Mainnet", - "chainId": 820, - "shortName": "clo", - "chain": "CLO", - "network": "mainnet", - "networkId": 1, - "nativeCurrency": {"name": "Callisto Mainnet Ether", "symbol": "CLO", "decimals": 18}, - "rpc": ["https://clo-geth.0xinfra.com"], - "faucets": [], - "infoURL": "https://callisto.network" - }, - { - "name": "Callisto Testnet", - "chainId": 821, - "shortName": "tclo", - "chain": "CLO", - "network": "testnet", - "networkId": 2, - "nativeCurrency": {"name": "Callisto Testnet Ether", "symbol": "TCLO", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://callisto.network" - }, - { - "name": "TomoChain", - "chainId": 88, - "shortName": "tomo", - "chain": "TOMO", - "network": "mainnet", - "networkId": 88, - "nativeCurrency": {"name": "TomoChain Ether", "symbol": "TOMO", "decimals": 18}, - "rpc": ["https://core.tomocoin.io"], - "faucets": [], - "infoURL": "https://tomocoin.io" - }, - { - "name": "bloxberg", - "chainId": 8995, - "shortName": "berg", - "chain": "bloxberg", - "network": "mainnet", - "networkId": 8995, - "nativeCurrency": {"name": "BERG", "symbol": "U+25B3", "decimals": 18}, - "rpc": ["https://core.bloxberg.org"], - "faucets": ["https://faucet.bloxberg.org/"], - "infoURL": "https://bloxberg.org" - }, - { - "name": "Ubiq Network Testnet", - "chainId": 9, - "shortName": "tubq", - "chain": "UBQ", - "network": "mainnet", - "networkId": 2, - "nativeCurrency": {"name": "Ubiq Testnet Ether", "symbol": "TUBQ", "decimals": 18}, - "rpc": [], - "faucets": [], - "infoURL": "https://ethersocial.org" - }, - { - "name": "Binance Smart Chain Testnet", - "chainId": 97, - "shortName": "bnbt", - "chain": "BSC", - "network": "Chapel", - "networkId": 97, - "nativeCurrency": {"name": "Binance Chain Native Token", "symbol": "tBNB", "decimals": 18}, - "rpc": ["https://data-seed-prebsc-1-s1.binance.org:8545", "https://data-seed-prebsc-2-s1.binance.org:8545", "https://data-seed-prebsc-1-s2.binance.org:8545", "https://data-seed-prebsc-2-s2.binance.org:8545", "https://data-seed-prebsc-1-s3.binance.org:8545", "https://data-seed-prebsc-2-s3.binance.org:8545"], - "faucets": ["https://testnet.binance.org/faucet-smart"], - "infoURL": "https://testnet.binance.org/" - }, - { - "name": "Nepal Blockchain Network", - "chainId": 977, - "shortName": "yeti", - "chain": "YETI", - "network": "mainnet", - "networkId": 977, - "nativeCurrency": { - "name": "Nepal Blockchain Network Ether", - "symbol": "YETI", - "decimals": 18 - }, - "rpc": ["https://api.nepalblockchain.dev", "https://api.nepalblockchain.network"], - "faucets": ["https://faucet.nepalblockchain.network"], - "infoURL": "https://nepalblockchain.network" - }, - { - "name": "POA Network Core", - "chainId": 99, - "shortName": "skl", - "chain": "POA", - "network": "core", - "networkId": 99, - "nativeCurrency": {"name": "POA Network Core Ether", "symbol": "SKL", "decimals": 18}, - "rpc": ["https://core.poanetwork.dev", "http://core.poanetwork.dev:8545", "https://core.poa.network", "ws://core.poanetwork.dev:8546"], - "faucets": [], - "infoURL": "https://poa.network" - }, - { - "name": "Joys Digital TestNet", - "chainId": 99415706, - "shortName": "TOYS", - "chain": "TOYS", - "network": "testnet", - "networkId": 99415706, - "nativeCurrency": {"name": "TOYS", "symbol": "TOYS", "decimals": 18}, - "rpc": ["https://toys.joys.cash/"], - "faucets": ["https://faucet.joys.digital/"], - "infoURL": "https://joys.digital" - } - ]; - diff --git a/web-ethereum/orchid_dapp/src/api/etherscan-io.ts b/web-ethereum/orchid_dapp/src/api/etherscan-io.ts deleted file mode 100644 index 4e5660a9e..000000000 --- a/web-ethereum/orchid_dapp/src/api/etherscan-io.ts +++ /dev/null @@ -1,164 +0,0 @@ -import {EthAddress, LotteryPotUpdateEvent} from "./orchid-eth-types"; -import {LotFunds, TokenType} from "./orchid-eth-token-types"; - -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export class EtherscanIO { - apiKey: string = "73BIQR3R1ER56V53PSSAPNUTQUFVHCVVVH"; - api_url: string = 'https://api.etherscan.io/api'; - - /* - Get lottery pot funding events for the specified address in descending - time order (most recent first). - - Example JSON: - - https://api.etherscan.io/api - ?module=logs - &action=getLogs - &fromBlock=8000000&toBlock=latest - &address=0xd4779b223797ecb6b8833f6f1545f2d94b29219c - &topic0=0xd6baf52d1a5fcdfc28f52cd8c2b20065e3d2d5354c0384fd85377ad6ae54493d - &topic1=0x000000000000000000000000accd85a8b3f96cccde5e741fd35ea761cba3f621 - &apikey=73BIQR3R1ER56V53PSSAPNUTQUFVHCVVVH - - { - "status": "1", - "message": "OK", - "result": [ - { - "address": "0xd4779b223797ecb6b8833f6f1545f2d94b29219c", - "topics": [ - "0xd6baf52d1a5fcdfc28f52cd8c2b20065e3d2d5354c0384fd85377ad6ae54493d", - "0x000000000000000000000000accd85a8b3f96cccde5e741fd35ea761cba3f621" - ], - "data": "0x0000000000000000000000000000000000000000000000001bc16d674ec8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x7d3075", - "timeStamp": "0x5d36789f", - "gasPrice": "0x3b9aca00", - "gasUsed": "0xee44", - "logIndex": "0xa0", - "transactionHash": "0x52f6cc0170da633acb9bb0c58265434700ac371df09688175936e6922acc821e", - "transactionIndex": "0x99" - }, - { - "address": "0xd4779b223797ecb6b8833f6f1545f2d94b29219c", - "topics": [ - "0xd6baf52d1a5fcdfc28f52cd8c2b20065e3d2d5354c0384fd85377ad6ae54493d", - "0x000000000000000000000000accd85a8b3f96cccde5e741fd35ea761cba3f621" - ], - "data": "0x0000000000000000000000000000000000000000000000004563918244f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x7d3db4", - "timeStamp": "0x5d372ac4", - "gasPrice": "0x3b9aca00", - "gasUsed": "0xb3ac", - "logIndex": "0xe1", - "transactionHash": "0xd42a7d8d76b6a9aa7a601228244a46766aee7fc35ddab1eb1537aee894fc8d83", - "transactionIndex": "0x42" - } - ] - } - */ - async getLotteryUpdateEvents( - lotteryContractAddress: EthAddress, - lotteryUpdateEventHash: string, - startBlock: number, - funder: EthAddress, - signer: EthAddress, - fundsToken: TokenType, - ): Promise { - let url = new URL(this.api_url); - let params: { [index: string]: string } = { - 'module': 'logs', - 'action': 'getLogs', - 'fromBlock': startBlock.toString(), - 'toBlock': 'latest', - 'address': lotteryContractAddress, - 'topic0': lotteryUpdateEventHash, - 'topic0_1_opr': 'and', - 'topic1': EtherscanIO.pad64Chars(funder), - 'topic1_2_opr': 'and', - 'topic2': EtherscanIO.pad64Chars(signer), - 'apikey': this.apiKey - }; - Object.keys(params).forEach(key => url.searchParams.append(key, params[key])); - const response: Response = await fetch(url.toString()); - if (response.status !== 200) { - console.log(`Error status code: ${response.status}`); - throw new Error(); - } - const json = await response.json(); - - if (json['message'] === "No records found") { - return []; - } - if (json['message'] !== "OK") { - console.log(`Error message: ${json['message']}`); - throw new Error(); - } - let result = json['result']; - - let list: LotteryPotUpdateEvent[] = result.map((ev: any) => { - // The first 64char hex data field is the balance - let start = 2; - let end = start + 64; - // polyfill big-integer does not accept a 0x prefix for hex. - const balanceStr = ev['data'].toString().substring(start, end); - let balance = BigInt(0); - try { - balance = BigInt(balanceStr, 16); - } catch (err) { - throw new Error("invalid response data: " + balanceStr); - } - - // The second 64char hex data field is the escrow - start += 64; - end += 64; - let escrow = BigInt(0); - try { - escrow = BigInt(ev['data'].toString().substring(start, end), 16); - } catch (err) { - throw new Error("invalid response data"); - } - - // ETH timestamp is seconds since epoch - const timeStamp = new Date(parseInt(ev['timeStamp']) * 1000); - - return new LotteryPotUpdateEvent( - balance ? fundsToken.fromInt(balance) : null, null, - escrow ? fundsToken.fromInt(escrow) : null, null, - ev['blockNumber'], - timeStamp, - ev['gasPrice'], - ev['gasUsed'], - ev['transactionHash']); - }); - - // Guarantee the results are sorted by time descending. - list.sort((a: LotteryPotUpdateEvent, b: LotteryPotUpdateEvent) => { - return b.timeStamp.getTime() - a.timeStamp.getTime(); - }); - - return list; - } - - // Pad a 40 character address to 64 characters - static pad64Chars(address: EthAddress) { - if (address.startsWith("0x")) { - address = address.substring(2); - } - _assert(address.length === 40, "invalid length"); - return '0x000000000000000000000000' + address; - } - - public static txLink(txHash: string) { - return `https://etherscan.io/tx/${txHash}`; - } -} - -function _assert(condition: boolean, message: string) { - if (!condition) { - throw message || "Assertion failed"; - } -} - diff --git a/web-ethereum/orchid_dapp/src/api/orchid-api.ts b/web-ethereum/orchid_dapp/src/api/orchid-api.ts deleted file mode 100644 index 2fc4b25a2..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-api.ts +++ /dev/null @@ -1,306 +0,0 @@ -/* eslint-disable @typescript-eslint/no-use-before-define */ -import {LotteryPot, OrchidEthereumAPI, Signer, Wallet} from "./orchid-eth"; -import {BehaviorSubject, Observable, of} from "rxjs"; -import {filter, flatMap, map, shareReplay, take} from "rxjs/operators"; -import {OrchidTransactionDetail, OrchidTransactionMonitor} from "./orchid-tx"; -import {OrchidWeb3API, WalletProviderState, WalletProviderStatus} from "./orchid-eth-web3"; -import {debugV0, isDebug, isNotNull} from "../util/util"; -import {OrchidEthereumApiV0Impl} from "./v0/orchid-eth-v0"; -import {OrchidEthereumApiV1Impl} from "./v1/orchid-eth-v1"; -import {LotteryPotUpdateEvent} from "./orchid-eth-types"; -// import {MockOrchidTransactionMonitor} from "./orchid-eth-mock"; - -/// The high level API for observation of a user's wallet and Orchid account state. -export class OrchidAPI { - private static instance: OrchidAPI; - - private constructor() { - // Subscribe to changes in wallet status and choose the appropriate orchid lib. - OrchidWeb3API.shared().walletStatus.subscribe((walletStatus) => { - if (walletStatus === WalletProviderStatus.error) { return } - try { - let web3 = OrchidWeb3API.shared().web3; - if (!web3) { - console.log("no web3 provider"); - return; - } - if (!walletStatus.chainInfo) { - console.log(`Missing chain info: ${walletStatus.chainInfo}`); - return; - } - if (walletStatus.chainInfo.isEthereumMainNet || debugV0()) { - this.eth = new OrchidEthereumApiV0Impl(web3) as OrchidEthereumAPI; - } else { - // Assume v1 contract for now - this.eth = new OrchidEthereumApiV1Impl(web3, walletStatus.chainInfo) as OrchidEthereumAPI; - } - } catch (err) { - console.log("Error constructing contracts: ", err); - this.eth = null; - this.provider.walletStatus.next(WalletProviderStatus.error); - } - }); - } - - static shared() { - if (!OrchidAPI.instance) { - OrchidAPI.instance = new OrchidAPI(); - } - return OrchidAPI.instance; - } - - eth: OrchidEthereumAPI | null = null - - provider = OrchidWeb3API.shared(); - - // The Orchid transaction monitor - //transactionMonitor = new MockOrchidTransactionMonitor(); - transactionMonitor = new OrchidTransactionMonitor(); - - // The current wallet - wallet = new BehaviorSubject(null); - - // The list of available signer accounts - signersAvailable = new BehaviorSubject(null); - - // True if the user does not yet have an Orchid account for the current wallet account. - // This defaults to true (new user) until an account is resolved. - newUser: Observable = this.signersAvailable.pipe( - map((signers: Signer [] | null) => { - return !signers ? true : signers.length === 0; - }), shareReplay(1) - ); - - // The currently selected signer account - signer = new BehaviorSubject(null); - - // The Lottery pot associated with the currently selected signer account. - lotteryPot: Observable = this.signer.pipe( - // flatMap here resolves the promises - flatMap((signer: Signer | null) => { - if (signer === null || this.eth == null) { - return of(null); // flatMap requires observables, even for null - } - try { - return this.eth.orchidGetLotteryPot(signer.wallet, signer); - } catch (err) { - console.log("lotteryPot: Error getting lottery pot data for signer: ", signer); - //this.walletStatus.next(WalletProviderStatus.error); - throw err; - } - }), shareReplay(1) - ); - lotteryPot_wait: Observable = this.lotteryPot.pipe(filter(isNotNull), shareReplay(1)); - - // Funding transactions on the current wallet - transactions = new BehaviorSubject(null); - - // Currently monitored user transactions on Ethereum - orchid_transactions = new BehaviorSubject(undefined); - - // Logging - debugLog = ""; - debugLogChanged = new BehaviorSubject(true); - - updateBalancesTimer: NodeJS.Timeout | null = null - - // Init the high level Orchid API and fetch initial state from the contract - init(startupCompleteCallback: (startupComplete: boolean) => void) { - if (OrchidAPI.isMobileDevice() || isDebug()) { - this.captureLogs(); - } - - startupCompleteCallback(false); - - // Monitor the wallet provider - this.provider.walletStatus.subscribe((status) => { - switch (status.state) { - case WalletProviderState.Unknown: - break; - case WalletProviderState.NoWalletProvider: - case WalletProviderState.NotConnected: - case WalletProviderState.Error: - console.log("api: startup complete (no provider or error): ", WalletProviderState[status.state]); - // Refresh everything to clear any account data. - this.onProviderAccountChange(status).then(); - // Show the UI - startupCompleteCallback(true); - break; - case WalletProviderState.Connected: - // Refresh to get the new account data. - this.onProviderAccountChange(status).then(); - break; - } - }); - - // Signal startup complete after the new user status is updated (or an error pushes a null status update). - // (Wait for the first update after the default replay value.) - let count = 0; - this.newUser.pipe(take(2)).subscribe((newUser) => { - console.log("api: newUser = ", newUser) - if (count++ > 0) { - console.log("api: startup complete (new user result)") - // Show the UI - startupCompleteCallback(true); - } - }); - } - - // Initialization to be performed after the provider is connected - private async onProviderAccountChange(status: WalletProviderStatus) { - await this.clear(); - if (status.state === WalletProviderState.Connected) { - await this.updateWallet(); - await this.updateSigners(); - this.updateTransactions().then(); - this.initPollingIfNeeded(); - } - } - - async clear() { - //console.log("api: clear wallet") - if (this.wallet.value) { - this.wallet.next(null); - } - if (this.signersAvailable.value) { - this.signersAvailable.next(null) - } - if (this.signer.value) { - this.signer.next(null); - } - if (this.transactions.value) { - this.transactions.next(null); - } - } - - initPollingIfNeeded() { - // Poll wallet and lottery pot periodically - if (this.updateBalancesTimer == null) { - this.updateBalancesTimer = setInterval(() => this.updateBalances(), 10000/*ms*/); - } - - // Init the transaction monitor - this.transactionMonitor.initIfNeeded(transactions => { - // TODO: Update the wallet / signers here if a transaction changed status - if (transactions.length > 0) { - console.log("api: txs: ", transactions.toString()); - } - this.orchid_transactions.next(transactions); - }); - } - - async updateSigners() { - if (!this.eth) { - return - } - console.log("api: update signers"); - let wallet = this.wallet.value; - if (!wallet) { - this.signersAvailable.next(null); - this.signer.next(null); - return; - } - try { - let signers = await this.eth.orchidGetSigners(wallet); - this.signersAvailable.next(signers); - - // no signers available - if (signers.length === 0) { - this.signer.next(null); - return; - } - - // Select the first if available as default - if (!this.signer.value) { - //console.log("updateSigners setting default signer: ", signers[0]); - this.signer.next(signers[0]); - } - } catch (err) { - console.log("api: Error updating signers: ", err); - this.signersAvailable.next(null); - this.signer.next(null); - } - } - - async updateWallet() { - console.log("update wallet") - if (!this.eth || this.provider.walletStatus.value.state !== WalletProviderState.Connected) { - this.wallet.next(null); - return; - } - try { - if (this.eth) { - this.wallet.next(await this.eth.orchidGetWallet()); - } - } catch (err) { - console.log("api: Error updating wallet: ", err); - } - } - - /// Update selected lottery pot balances - async updateLotteryPot() { - //console.log("api: Update lottery pot refreshing signer data: ", this.signer.value); - this.signer.next(this.signer.value); // Set the signer again to trigger a refresh - } - - async updateBalances() { - await this.updateWallet(); - await this.updateLotteryPot(); - } - - async updateTransactions() { - let funder = this.wallet.value; - let signer = this.signer.value; - if (!funder || !signer || !this.eth) { - return; - } - let events: LotteryPotUpdateEvent[] = await this.eth.getLotteryUpdateEvents(funder.address, signer.address); - this.transactions.next(events); - } - - private captureLogs() { - let api = this; - console.log = function (...args: (any | undefined)[]) { - // args = args.map(arg => { - // if (typeof arg == "string" || typeof arg == "number") { - // return arg - // } else { - // return JSON.stringify(arg) - // } - // }); - const logLine = "Log: " + args.join(" ") + "
" - api.debugLog += logLine - api.debugLogChanged.next(true) - - if (isDebug()) { - let div = document.getElementById('debugLog') - if (div) { - div.innerHTML += logLine; - } - } - }; - // Capture errors - window.onerror = function (message, source, lineno, colno, error) { - let text = message.toString(); - if (error && error.stack) { - text = error.stack.toString() - } - console.log('Error: ' + text + ": " + error); - console.log('Error json: ', JSON.stringify(error)); - }; - window.onload = function () { - console.log("Loaded."); - }; - - if (isDebug()) { - let div = document.getElementById('debugLog') - if (div) { - div.innerHTML += '
Debug Log
' - } - } - } - - private static isMobileDevice() { - return (typeof window.orientation !== "undefined"); - }; -} diff --git a/web-ethereum/orchid_dapp/src/api/orchid-eth-mock.ts b/web-ethereum/orchid_dapp/src/api/orchid-eth-mock.ts deleted file mode 100644 index 0ece8fd0e..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-eth-mock.ts +++ /dev/null @@ -1,111 +0,0 @@ -import {LotteryPot, Signer, Wallet} from "./orchid-eth"; -import { - EthereumTransaction, - OrchidTransaction, - OrchidTransactionDetail, OrchidTransactionMonitor, OrchidTransactionMonitorListener, - OrchidTransactionType -} from "./orchid-tx"; -import {EthAddress} from "./orchid-eth-types"; -import {GasFunds, LotFunds, TokenType} from "./orchid-eth-token-types"; -import {OrchidEthereumApiV0Impl} from "./v0/orchid-eth-v0"; -import {EVMChains} from "./chains/chains"; - -// Override parts of the Orchid Ethereum API with fake data -export class MockQuickSetup extends OrchidEthereumApiV0Impl { - static MOCK_TX_FAIL = false; - - async orchidAddFunds( - funder: EthAddress, signer: EthAddress, amount: LotFunds, escrow: LotFunds, wallet: Wallet - ): Promise { - console.log("MOCK: Add funds signer: ", signer, " amount: ", amount, " escrow: ", escrow); - return new Promise(async function (resolve, reject) { - await new Promise(resolve => setTimeout(resolve, 1000)); - if (MockQuickSetup.MOCK_TX_FAIL) { - reject("tx error"); - } else { - resolve('0x12341234123412341234123'); - } - }); - } - - orchidCreateSigner(wallet: Wallet): Signer { - return new Signer(wallet, "0x231d8129075898402053b3720c89DbD7B0D87C2d", "12345"); - } - - async orchidGetSigners(wallet: Wallet): Promise { - //return [Mocks.signer()] - return []; - } -} - -export class MockTransactions { - static mockAddFunds(): OrchidTransactionDetail { - return new OrchidTransactionDetail( - new OrchidTransaction( - new Date(), OrchidTransactionType.AddFunds, - EVMChains.ETHEREUM_MAIN_NET, - [ - "0xdfa60d4e97c242c5222a11b485c051bbdeb133c99baccd34dc33ceae1dc0cd67", - "0x1bbdeb133c99baccd34dc33ceae1dc0cd67dfa60d4e97c242c5222a11b485c05" - ]), - [ - // approve confirmed - new EthereumTransaction( - "0xdfa60d4e97c242c5222a11b485c051bbdeb133c99baccd34dc33ceae1dc0cd67", - 1, 3, false - ), - // push pending - EthereumTransaction.pending("0x1bbdeb133c99baccd34dc33ceae1dc0cd67dfa60d4e97c242c5222a11b485c05") - ] - ); - } -} - -export class MockOrchidTransactionMonitor extends OrchidTransactionMonitor { - mock_store: OrchidTransaction [] = []; - - initIfNeeded(listener: OrchidTransactionMonitorListener) { - if (this.listener) { - return - } - super.initIfNeeded(listener); - this.add(MockTransactions.mockAddFunds()); - } - - // static test_tx: OrchidTransaction [] = []; - load(): OrchidTransaction [] { - return this.mock_store; - } - - save(txs: OrchidTransaction []) { - this.mock_store = txs; - } - -} - -export class Mocks { - fundsTokenType: TokenType - gasTokenType: TokenType - - constructor(fundsTokenType: TokenType, gasTokenType: TokenType) { - this.fundsTokenType = fundsTokenType; - this.gasTokenType = gasTokenType; - } - - public wallet(): Wallet { - return new Wallet(this.fundsTokenType.zero, this.gasTokenType.zero) - } - - public signer(): Signer { - return new Signer(this.wallet(), "0x231d8129075898402053b3720c89DbD7B0D87C2d", "12345"); - } - - public lotteryPot( - balance: number = 1.0, deposit: number = 1.0 - ): LotteryPot { - return LotteryPot.from( - this.signer(), - this.fundsTokenType.fromNumber(balance * 1e18), - this.fundsTokenType.fromNumber(deposit * 1e18), null) - } -} diff --git a/web-ethereum/orchid_dapp/src/api/orchid-eth-token-types.ts b/web-ethereum/orchid_dapp/src/api/orchid-eth-token-types.ts deleted file mode 100644 index 494507a4c..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-eth-token-types.ts +++ /dev/null @@ -1,200 +0,0 @@ -import {parseFloatSafe} from "../util/util"; - -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -// TokenType describes the ERC20 parameters of the token and serves as a factory for instances of -// the specified token instance type. -export class TokenType> { - chainId: number - name: string - symbol: string - decimals: number - - // Return 1eN where N is the decimal count. - get multiplier(): number { - return Math.pow(10, this.decimals); - } - - constructor(chainId: number, name: string, symbol: string, decimals: number) { - this.chainId = chainId; - this.name = name; - this.symbol = symbol; - this.decimals = decimals; - } - - new(intValue: BigInt): InstanceType { - return new Token(this, intValue) as InstanceType; - } - - get zero(): InstanceType { - return this.new(BigInt.zero); - } - - // From the integer denomination value e.g. WEI for ETH - fromInt(intValue: BigInt): InstanceType { - return this.new(intValue); - } - - // From the integer denomination value e.g. WEI for ETH - // fromIntOrDefault(intValue: BigInt | undefined, defaultValue: InstanceType): InstanceType { - // return intValue ? this.fromInt(intValue) : defaultValue - // } - - // From a number representing the nominal token denomination, e.g. 1.0 OXT - fromNumber(val: number): InstanceType { - return this.new(BigInt(Math.round(val * this.multiplier))); // multiply prior to int conversion - } - - // From a string representing a number in the nominal token denomination. e.g. "1.0" OXT. - // Returns null if the string cannot be parsed. - fromString(val: string | null): InstanceType | null { - if (val === null) { return null; } - let floatValue = parseFloatSafe(val); - if (floatValue === null) { - return null; - } - return this.fromNumber(floatValue); - } - - // Return the value of the string or zero token value if the string cannot be parsed. - fromStringOrZero(val: string | null): InstanceType { - return this.fromString(val) ?? this.zero; - } - - // From a string representing the integer denomination. e.g. "1000000000" WEI - // Throws an error if the value cannot be parsed. - fromIntString(val: string): InstanceType { - return this.new(BigInt(val)); - } - - public toString(): string { - return `${this.chainId}, ${this.name}, ${this.symbol}, ${this.decimals}` - } -} - -// An instance of the ERC20 token type representing a value -// Token is parameterized on a subtype allowing the parent type factory to return specific instance types. -export class Token> { - type: TokenType; - - // The smallest integer units (e.g. WEI for ETH) - intValue: BigInt; - - constructor(type: TokenType, intValue: BigInt) { - this.type = type; - this.intValue = intValue; - } - - new(intValue: BigInt): this { - return new Token(this.type, intValue) as this; // Note the cast - } - - // The float value in nominal units (e.g. ETH, OXT) - get floatValue(): number { - return BigInt(this.intValue).toJSNumber() / this.type.multiplier; - } - - public multiply(other: number): this { - // perform floating point multiplication - // Note: We could take a precision here and do the arithmetic with int - return this.new(BigInt(Math.round(BigInt(this.intValue).toJSNumber() * other))); - } - - public divide(other: number): this { - // perform floating point division - // Note: We could take a precision here and do the arithmetic with int - return this.new(BigInt(Math.round(BigInt(this.intValue).toJSNumber() / other))); - } - - public add(other: this): this { - this.assertType(other) - return this.new(BigInt(this.intValue).add(other.intValue)); - } - - public subtract(other: this): this { - this.assertType(other) - return this.new(BigInt(this.intValue).subtract(other.intValue)); - } - - public eq(other: this): boolean { - this.assertType(other) - return BigInt(this.intValue).eq(other.intValue); - } - - public lt(other: this): boolean { - this.assertType(other) - return BigInt(this.intValue).lt(other.intValue); - } - - public lte(other: this): boolean { - this.assertType(other) - return BigInt(this.intValue).leq(other.intValue); - } - - public gt(other: this): boolean { - this.assertType(other) - return BigInt(this.intValue).gt(other.intValue); - } - - public gte(other: this): boolean { - this.assertType(other) - return BigInt(this.intValue).geq(other.intValue); - } - - public isZero(): boolean { - return BigInt(this.intValue).eq(BigInt.zero) - } - public lteZero(): boolean { - return BigInt(this.intValue).leq(BigInt.zero) - } - public gtZero(): boolean { - return BigInt(this.intValue).gt(BigInt.zero) - } - - private assertType(other: this) { - assertSameType(this, other); - } - - public toFixedLocalized(decimals: number = this.type.decimals): string { - decimals = Math.round(decimals); - return this.floatValue.toFixedLocalized(decimals); - } - - // Format as currency with the symbol suffixed - public formatCurrency(decimals: number = this.type.decimals): string { - return this.toFixedLocalized(decimals) + ` ${this.type.symbol}`; - } - - public toString(): string { - return `${this.type}, ${this.intValue}` - } -} - -export function assertSameType>(a: Token, b: Token) { - if (a.type.symbol !== b.type.symbol) { - throw Error(`Token type mismatch!: ${a.type}, ${b.type}`); - } -} - -export function min>(a: T, b: T): T { - return BigInt(a.intValue).lt(BigInt(b.intValue)) ? a : b; -} - -export function max>(a: T, b: T): T { - return BigInt(a.intValue).gt(BigInt(b.intValue)) ? a : b; -} - -// A meta-type for the lottery token used on the selected chain. -export class LotFunds extends Token { - _lotFundsIsUnique: any // Defeat structural subtyping making this class incompatible with GasFunds. -} - -// A meta-type for the gas token used on the selected chain. -export class GasFunds extends Token { - _gasFundsIsUnique: any // Defeat structural subtyping making this class incompatible with LotFunds. -} - -// A stand-in for display purposes in the disconnected state. -export class NoToken extends Token { - static token: NoToken = new NoToken(new TokenType(0, "No Chain", "Funds", 18), BigInt(0)); -} diff --git a/web-ethereum/orchid_dapp/src/api/orchid-eth-types.ts b/web-ethereum/orchid_dapp/src/api/orchid-eth-types.ts deleted file mode 100644 index 73b3ee243..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-eth-types.ts +++ /dev/null @@ -1,125 +0,0 @@ -import {removeHexPrefix} from "../util/util"; -import {GasFunds, LotFunds} from "./orchid-eth-token-types"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export type Secret = string; -export type TransactionId = string; - -// TODO: Migrate -export type EthAddress = string; - -export class EthereumAddress { - static zeroString = '0x0000000000000000000000000000000000000000'; -} - -export class Wallet { - public address: EthAddress; - public fundsBalance: LotFunds; // e.g. OXT - public gasFundsBalance: GasFunds; // e.g. ETH - - constructor( - initialLotFunds: LotFunds, - initialGasFunds: GasFunds - ) { - this.address = ""; - this.fundsBalance = initialLotFunds - this.gasFundsBalance = initialGasFunds - } -} - -/// A Wallet may have many signers, each of which is essentially an "Orchid Account", -// controlling a Lottery Pot. -export class Signer { - // The wallet with which this signer is associated. - public wallet: Wallet; - // The signer public address. - public address: EthAddress; - // The signer private key, if available. - public secret: Secret | null; - - constructor(wallet: Wallet, address: EthAddress, secret?: Secret) { - this.wallet = wallet; - this.address = address; - this.secret = removeHexPrefix(secret ?? null); - } - - toConfigString(): string | null { - if (!this.secret) { - return null; - } - return `account={protocol:"orchid",funder:"${this.wallet.address}",secret:"${this.secret}"}`; - } -} - -export interface EthereumKey { - address: string - privateKey: string -} - -/// A Lottery Pot containing funds against which lottery tickets are issued. -export class LotteryPot { - public signer: Signer - public unlock: Date | null - public warned: LotFunds | null - public balance: LotFunds - public escrow: LotFunds - - static from(signer: Signer, balance: LotFunds, escrow: LotFunds, unlock: Date | null): LotteryPot { - return new LotteryPot(signer, balance, escrow, unlock, null); - } - - constructor(signer: Signer, balance: LotFunds, escrow: LotFunds, unlock: Date | null, warned: LotFunds | null) { - this.signer = signer; - this.balance = balance; - this.escrow = escrow; - this.unlock = unlock; - this.warned = warned; - } - - get isLocked(): boolean { - return this.unlock == null || new Date() < this.unlock; - } - - get isUnlocked(): boolean { - return !this.isLocked; - } - - get isUnlocking(): boolean { - return this.unlock != null && new Date() < this.unlock; - } -} - -export class LotteryPotUpdateEvent { - public balance: LotFunds | null; - public balanceChange: LotFunds | null; - public escrow: LotFunds | null; - public escrowChange: LotFunds | null; - public blockNumber: number | null; - public timeStamp: Date; - public gasPrice: string; - public gasUsed: number; - public transactionHash: string; - - constructor( - balance: LotFunds | null, - balanceChange: LotFunds | null, - escrow: LotFunds | null, - escrowChange: LotFunds | null, - blockNumber: number | null, - timeStamp: Date, - gasPrice: string, - gasUsed: number, - transactionHash: string) { - this.balance = balance; - this.balanceChange = balanceChange; - this.escrow = escrow; - this.escrowChange = escrowChange; - this.blockNumber = blockNumber; - this.timeStamp = timeStamp; - this.gasPrice = gasPrice; - this.gasUsed = gasUsed; - this.transactionHash = transactionHash; - } -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/api/orchid-eth-web3.ts b/web-ethereum/orchid_dapp/src/api/orchid-eth-web3.ts deleted file mode 100644 index c810f3df4..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-eth-web3.ts +++ /dev/null @@ -1,401 +0,0 @@ -// -// Orchid Web3 Provider API -// -import Web3 from "web3"; -import "../i18n/i18n_util"; -import {BehaviorSubject} from "rxjs"; -import Web3Modal from "web3modal"; -import WalletConnectProvider from "@walletconnect/web3-provider"; -import {OrchidAPI} from "./orchid-api"; -import {ChainInfo, EVMChains} from "./chains/chains"; -import {GasFunds, LotFunds, TokenType} from "./orchid-eth-token-types"; - -declare global { - interface Window { - ethereum: any - web3: any - } -} - -export enum WalletProviderState { - // Status not yet determined - Unknown, - - // No injected ethereum provider - NoWalletProvider, - - // Ethererum provider injected but no accounts yet offered - NotConnected, - - // Ethereum provider injected and accounts available - Connected, - - // There was an error when attempting to ask the ethereum provider for accounts - Error, -} - -// The web3 provider status -export class WalletProviderStatus { - state: WalletProviderState; - account: string | undefined - chainId: number | undefined - networkId: number | undefined - - get chainInfo(): ChainInfo | null { - return this.chainId ? EVMChains.getChain(this.chainId) : null; - } - - get fundsToken(): TokenType | null { - return this.chainInfo?.fundsToken ?? null - } - - get gasToken(): TokenType | null { - return this.chainInfo?.gasToken ?? null - } - - static unknown = new WalletProviderStatus(WalletProviderState.Unknown) - static noWalletProvider = new WalletProviderStatus(WalletProviderState.NoWalletProvider) - static error = new WalletProviderStatus(WalletProviderState.Error) - - static connected(account: string, chainId?: number, networkId?: number) { - return new WalletProviderStatus(WalletProviderState.Connected, account, chainId, networkId) - } - - static notConnected(chainId?: number, networkId?: number) { - return new WalletProviderStatus(WalletProviderState.NotConnected, undefined, chainId, networkId) - } - - constructor(state: WalletProviderState, account?: string, chainId?: number, networkId?: number) { - this.state = state; - this.account = account; - this.chainId = chainId - this.networkId = networkId - } -} - - -/// Discovery and initialization of the web3 provider. -/// Relevant standards: -/// https://eips.ethereum.org/EIPS/eip-1193 (eth provider events) -/// https://eips.ethereum.org/EIPS/eip-1102 (account authorization) -/// https://nodejs.org/api/events.html (event emitter API) -export class OrchidWeb3API { - - private static instance: OrchidWeb3API; - - static shared() { - if (!OrchidWeb3API.instance) { - OrchidWeb3API.instance = new OrchidWeb3API(); - } - return OrchidWeb3API.instance; - } - - web3: Web3 | null = null; - web3Modal: Web3Modal; - - // Wallet connection or error status. - walletStatus = new BehaviorSubject(WalletProviderStatus.unknown); - - private deregisterListeners: (() => void) | undefined; - - private constructor() { - // web3modal providers - const providerOptions = { - walletconnect: { - package: WalletConnectProvider, - options: { - infuraId: "63c2f3be7b02422d821307f1270e5baf" - } - }, - }; - - // web3modal - this.web3Modal = new Web3Modal({ - cacheProvider: true, - providerOptions, - disableInjectedProvider: false, - }); - - this.init().then(); - } - - /// Init the Web3 environment and the Orchid contracts. - /// The wallet status should be monitored for connection status. - async init() { - //console.log("eth: orchidInitEthereum") - // Look for a cached or default provider - this.connect().then(); - } - - currentProvider: any | null = null; - - // Connect to a web3 provider. If userInitiatedConnection is true the provider may prompt - // for a wallet choice or show a dialog initiating authorization of an account. - async connect(userInitiatedConnect: boolean = false) { - - this.currentProvider = null; - let provider: any | null = null; - - // Init the web3modal provider if there is a cached wallet selection (no modal) - // or to prompt for a user-inititated wallet choice (show the modal). - if (userInitiatedConnect || this.web3Modal.cachedProvider) { - try { - // TODO: TESTING: disable web3modal - provider = await this.connectWeb3Modal() - console.log("web3: connected web3modal, provider: ", provider) - } catch (err) { - console.log("web3: error connecting web3modal") - } - } - - // If no web3modal provider was found use the default injected environment. - // Note: If we do this there is currently no way to disconnect metmask once authorized. - /* - if (!provider) { - provider = window.ethereum - // If the user is asking for a connection, prompt the default provider to connect - // an account, else fall througn and wait to see if a previously connected account - // is injected. - if (userInitiatedConnect) { - await this.connectDefaultProvider(provider) - } - }*/ - - // No provider found, give up. - if (!provider) { - this.walletStatus.next(WalletProviderStatus.noWalletProvider); - return; - } - this.currentProvider = provider; - - // Finish web3 init with the provider - console.log("web3: provider = ", provider) - this.web3 = new Web3(provider); - (window as any).web3 = this.web3; // replace any injected version - - // We now have either a web3modal provider or we should look for a default injected environment - await this.registerListeners(provider); - } - - async disconnect() { - console.log("web3: disconnect, provider = ", this.currentProvider) - console.log("web3: disconnect, window.ethereum = ", window.ethereum) - if (this.currentProvider?.close) { - await this.currentProvider.close(); - } - if (this.currentProvider?.disable) { - await this.currentProvider.disable(); - } - if (window.ethereum.disable) { - await window.ethereum?.disable(); - } - await this.web3Modal.clearCachedProvider(); - this.currentProvider = null; - this.web3 = null; - this.walletStatus.next(WalletProviderStatus.noWalletProvider); - await OrchidAPI.shared().clear(); - } - - private async registerListeners(provider: any) { - console.log("web3: register listeners"); - - if (this.deregisterListeners) { - console.log("web3: de-registering old listeners") - this.deregisterListeners(); - } - - if (!provider.on) { - // Fall back to the old provider APIs here. - console.log("No EIP-1193 event emitter available"); - try { - await this.connectDefaultProvider(provider); - } catch (err) { - console.log("web3: error: ", err); - } - return; - } - - const accountsChangedCallback = (accounts: Array) => { - console.log("web3: listener accounts changed") - this.accountsChanged(accounts) - } - const chainOrNetworkChangedCallback = (props: any) => { - console.log("web3 provider chain or network changed: ", props) - this.chainOrNetworkChanged().then(); - } - const disconnectOrCloseCallback = () => { - console.log("web3 provider disconnectOrClose") - this.walletStatus.next(WalletProviderStatus.noWalletProvider); - } - - this.deregisterListeners = () => { - provider.removeListener('accountsChanged', accountsChangedCallback); - provider.removeListener('chainChanged', chainOrNetworkChangedCallback) - provider.removeListener('networkChanged', chainOrNetworkChangedCallback) - provider.removeListener('disconnect', disconnectOrCloseCallback) - provider.removeListener('close', disconnectOrCloseCallback) - } - - // EIP-1193 listeners using Node event emitter API (https://nodejs.org/api/events.html) - try { - console.log("registering eip-1193 listeners"); - provider.on('accountsChanged', accountsChangedCallback); - provider.on('chainChanged', chainOrNetworkChangedCallback) - provider.on('networkChanged', chainOrNetworkChangedCallback) - provider.on('disconnect', disconnectOrCloseCallback) - provider.on('close', disconnectOrCloseCallback) - } catch (err) { - console.log("error registering listener: ", err) - } - - // EIP-1193 initial accounts fetch - if (provider.send) { - console.log("web3: initializing provider send") - - try { - let response = await provider.send('eth_accounts') - console.log("web3: request eth_accounts result: ", response.result) - await this.accountsChanged(response.result) - } catch (err: any) { - console.log("web3: request eth_accounts err: ", err) - if (err.code === 4100) { // EIP 1193 unauthorized error - console.log('Error 4100.') - this.accountsChanged([]); - } else { - console.error('web3: eth_accounts: ', err); - } - this.walletStatus.next(WalletProviderStatus.error); - } - - /* - // Trust wallet appears to support EIP-1193 listeners but doesn't support send properly. - // EIP-1193 initial accounts fetch - console.log("web3: send eth_accounts") - try { - provider.send('eth_accounts', (response: any) => { - console.log("web3: request eth_accounts result: ", response.result) - this.accountsChanged(response.result) - }) - } catch (err: any) { - console.log("web3: request eth_accounts err: ", err) - if (err.code === 4100) { // EIP 1193 unauthorized error - console.log('Error 4100.') - this.accountsChanged([]); - } else { - console.error('web3: eth_accounts: ', err); - //this.walletStatus.next(WalletProviderStatus.error); - } - }*/ - - // EIP-1193 chain fetch - try { - await provider.send('eth_chainId') - this.chainOrNetworkChanged().then(); - } catch (err: any) { - console.error('web3: eth_chainId', err); - this.walletStatus.next(WalletProviderStatus.error); - } - /* - // EIP-1193 chain fetch - // Trust wallet appears to support EIP-1193 listeners but doesn't support send properly. - console.log("web3: send eth_chainId") - try { - provider.send('eth_chainId', () => { - this.chainOrNetworkChanged().then(); - }) - } catch (err: any) { - console.error('web3: eth_chainId', err); - //this.walletStatus.next(WalletProviderStatus.error); - } - */ - - console.log("web3: Setting timer for checking provider state") - setTimeout(() => { - console.log("web3: Checking provider state") - if (this.walletStatus.value.state !== WalletProviderState.Connected) { - this.connectDefaultProvider(provider).then(); - } - }, 750); - } else { - console.log("web3: provider has no send method, falling back to default.") - this.connectDefaultProvider(provider).then(); - } - } - - /// Handle web3 provider account changes. - async accountsChanged(accountsIn: Array | null) { - console.log("web3: provider accounts changed: ", accountsIn) - let accounts: Array = accountsIn || []; - if (accounts.length === 0) { - try { - // Attempt to re-fetch the accounts. - accounts = (this.web3 && await this.web3.eth.getAccounts()) ?? []; - console.log("web3 re-fetched accounts: ", accounts) - } catch (err) { - console.log("web3: error attempting to fetch accounts"); - } - } - let state = accounts.length > 0 ? WalletProviderState.Connected : WalletProviderState.NotConnected; - let account = accounts.length > 0 ? accounts[0] : undefined - this.walletStatus.next( - new WalletProviderStatus( - state, account, - this.walletStatus.value.chainId, - this.walletStatus.value.networkId - )); - } - - /// Check for the main network - /// We expect this to be called at least once on page load (eip-1193) - async chainOrNetworkChanged() { - console.log("web3: chain or network changed, provider: ", this.web3?.currentProvider) - let networkId = this.web3 && await this.web3.eth.net.getId(); - let chainId = this.web3 && await this.web3.eth.getChainId(); - if (networkId === this.walletStatus.value.networkId - && chainId === this.walletStatus.value.chainId) { - console.log("ignoring duplicate") - return; // ignore duplicate - } - this.walletStatus.next( - new WalletProviderStatus( - this.walletStatus.value.state, - this.walletStatus.value.account, - chainId ?? undefined, - networkId ?? undefined - )); - } - - /// Prompt account connection UI on the provider - private async connectDefaultProvider(provider: any) { - console.log("web3: trying to connect default provider.") - try { - if (provider.on) { - // This is the recommended way to trigger the account connection - // https://eips.ethereum.org/EIPS/eip-1102 (request accounts) - console.log("init eth connection"); - await provider.request({method: 'eth_requestAccounts'}) - } else { - // This is the legacy enable method. - console.log("legacy init eth connection"); - await provider.enable(); - } - } catch (error) { - this.walletStatus.next(WalletProviderStatus.noWalletProvider); - console.log("User denied account access..."); - } - await this.chainOrNetworkChanged(); - await this.accountsChanged([]); - } - - /// Prompt account connection UI on the provider - /// EIP-1102 user authorization / connection - private async connectWeb3Modal(): Promise { - try { - return await this.web3Modal.connect(); - } catch (e) { - console.log("Could not get a wallet connection: ", e); - this.web3Modal.clearCachedProvider() - return null; - } - } -} diff --git a/web-ethereum/orchid_dapp/src/api/orchid-eth.ts b/web-ethereum/orchid_dapp/src/api/orchid-eth.ts deleted file mode 100644 index 3c05a9429..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-eth.ts +++ /dev/null @@ -1,119 +0,0 @@ -// -// Orchid Ethereum Contracts Lib -// -import Web3 from "web3"; -import "../i18n/i18n_util"; -import {EthAddress, LotteryPot, LotteryPotUpdateEvent, Signer, Wallet} from "./orchid-eth-types"; -import {GasFunds, LotFunds, TokenType} from "./orchid-eth-token-types"; -import {MarketConditionsSource} from "./orchid-market-conditions"; - -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export {LotteryPot, Signer, Wallet} - -export type Web3Wallet = any; - -export const ORCHID_SIGNER_KEYS_WALLET = "orchid-signer-keys"; - -export interface OrchidEthereumAPI { - - // Using the V0 lottery contract (supporting small UI differences) - isV0: boolean - - // todo: change to ChainInfo here - chainId: number - fundsTokenType: TokenType - gasTokenType: TokenType - - orchidGetSigners(wallet: Wallet): Promise - - orchidGetSignerKeys(): Web3Wallet - - orchidCreateSigner(wallet: Wallet): Signer - - orchidGetWallet(): Promise - - orchidGetLotteryPot(funder: Wallet, signer: Signer): Promise - - orchidAddFunds(funder: EthAddress, signer: EthAddress, amount: LotFunds, escrow: LotFunds, wallet: Wallet): Promise - - orchidMoveFundsToEscrow(funder: EthAddress, signer: EthAddress, amount: LotFunds, potBalance: LotFunds): Promise - - orchidWithdrawFunds(funder: EthAddress, signer: EthAddress, targetAddress: EthAddress, amount: LotFunds, potBalance: LotFunds): Promise - - orchidWithdrawFundsAndEscrow(pot: LotteryPot, targetAddress: EthAddress): Promise - - orchidLock(pot: LotteryPot, funder: EthAddress, signer: EthAddress): Promise - - orchidUnlock(pot: LotteryPot, funder: EthAddress, signer: EthAddress): Promise - - orchidStakeFunds(funder: EthAddress, stakee: EthAddress, amount: LotFunds, wallet: Wallet, delay: BigInt): Promise - - orchidGetStake(stakee: EthAddress): Promise - - orchidReset(funder: Wallet): Promise - - getGasPrice(): Promise - - getAccountCreationGasRequired(): Promise - - getLotteryUpdateEvents(funder: EthAddress, signer: EthAddress): Promise - - marketConditions: MarketConditionsSource - contractsOverridden: boolean - requiredConfirmations: number - -} - -export class GasPricingStrategy { - - /// Choose a gas price taking into account current gas price and the wallet balance. - /// This strategy uses a multiple of the current median gas price up to a hard limit on - /// both gas price and fraction of the wallet's remaining gas funds balance. - // Note: Some of the usage of BigInt in here is convoluted due to the need to import the polyfill. - static chooseGasPrice( - targetGasAmount: number, currentMedianGasPrice: GasFunds, currentGasFundsBalance: GasFunds): number | undefined { - let maxPriceGwei = 200.0; - let minPriceGwei = 5.0; - let medianMultiplier = 1.2; - let maxWalletFrac = 1.0; - - // Target our multiple of the median price - let targetPrice: BigInt = currentMedianGasPrice.multiply(medianMultiplier).intValue; - - // Don't exceed max price - let maxPrice: BigInt = BigInt(maxPriceGwei).multiply(1e9); - if (maxPrice < targetPrice) { - console.log("Gas price calculation: limited by max price to : ", maxPriceGwei) - } - targetPrice = BigInt.min(targetPrice, maxPrice); - - // Don't fall below min price - let minPrice: BigInt = BigInt(minPriceGwei).multiply(1e9); - if (minPrice > targetPrice) { - console.log("Gas price calculation: limited by min price to : ", minPriceGwei) - } - targetPrice = BigInt.max(targetPrice, minPrice); - - // Don't exceed max wallet fraction - let targetSpend: BigInt = BigInt(targetPrice).multiply(targetGasAmount); - let maxSpend = BigInt(Math.floor(currentGasFundsBalance.floatValue * maxWalletFrac)); - if (targetSpend > maxSpend) { - console.log("Gas price calculation: limited by wallet balance: ", currentGasFundsBalance) - } - targetSpend = BigInt.min(targetSpend, maxSpend); - - // Recalculate the price - let price = BigInt(targetSpend).divide(targetGasAmount); - - console.log(`Gas price calculation, ` - + `targetGasAmount: ${targetGasAmount}, medianGasPrice: ${currentMedianGasPrice.floatValue}, ethBalance: ${currentGasFundsBalance}, chose price: ${BigInt(price).divide(1e9)}` - ); - - return price.toJSNumber(); - } -} - -export function isEthAddress(str: string): boolean { - return Web3.utils.isAddress(str) -} diff --git a/web-ethereum/orchid_dapp/src/api/orchid-lottery.ts b/web-ethereum/orchid_dapp/src/api/orchid-lottery.ts deleted file mode 100644 index a1dd7dbb9..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-lottery.ts +++ /dev/null @@ -1,84 +0,0 @@ -import {min, LotFunds} from "./orchid-eth-token-types"; - -export class OrchidLottery { - // The default ticket win probility - static ticketWinProbability = 1e-5 - - // This is an artifact of the implementation that limits tha maximum balance to deposit ratio - // for which we can display expected value results. - static maxPrecomputedEFRatio = 15 - - // - // Estimate the survival probability for Orchid accounts given: - // n -- number of nanopayments sent - // p -- winrate of a nanopayment - // F -- face value backing a nanopayment - // E -- initial payment escrow (lottery pot balance) - // - static psurv(n: number, p: number, F: number, E: number): number { - return 1 - OrchidLottery.pbust(n, p, F, E) - } - - // Return a table of the expected number of tickets that can be written on an account - // with the default ticket winrate and various account composition ratios. - static getAccountSurvivalTable(): Array { - //const memoizedValue = useMemo(() => OrchidLottery._generateAccountSurvivalTable(), []); - if (!this._table) { - this._table = this._generateAccountSurvivalTable(); - } - return this._table - } - - // The expected number of tickets that can be written at the default ticket win rate and default - // survival probabilty target. Returns null if the value cannot be determined. - static expectedTickets(balance: LotFunds, deposit: LotFunds): number | null { - let table = this.getAccountSurvivalTable(); - let efRatio = Math.floor(balance.floatValue / this.maxTicketFaceValue(balance, deposit).floatValue); - return efRatio < table.length ? table[efRatio] : null - } - - // The expected cumulative value of tickets that can be written with this account composition - // at the expected ticket count. - static expectedTicketValue(balance: LotFunds, deposit: LotFunds): LotFunds | null { - let n = this.expectedTickets(balance, deposit); - return n ? - (this.maxTicketFaceValue(balance, deposit).multiply(n).multiply(this.ticketWinProbability)) - : null; - } - - private static pbust(n: number, p: number, F: number, E: number): number { - function D(p: number, q: number) { - let result = p * Math.log(p / q) + (1 - p) * Math.log((1 - p) / (1 - q)) - if (isNaN(result)) { return 0 } - return result - } - return Math.exp(-n * D(E / (n * F), p)) - } - - // Find n for various ratios of E/F by brute force in the appropriate range - // and with an appropriate default ticket win rate and target survival rate. - // (The function itself is not invertible). - private static _generateAccountSurvivalTable(): Array { - console.log("val: computing val") - let target_survival = 0.8 // target survival rate - let table: Array = [] - let F = 1; let p = OrchidLottery.ticketWinProbability; - for (let E = 1; E <= this.maxPrecomputedEFRatio; E++) { - for (let n = 1e3; n <= 1e8; n++) { - let val = OrchidLottery.psurv(n, p, F, E); - if (val < target_survival) { - table[E] = n; - console.log(E, n); - break - } - } - } - return table; - } - - private static _table: Array | null = null - - static maxTicketFaceValue(balance: LotFunds, deposit: LotFunds): LotFunds { - return min( balance, deposit.divide(2.0)); - } -} diff --git a/web-ethereum/orchid_dapp/src/api/orchid-market-conditions.ts b/web-ethereum/orchid_dapp/src/api/orchid-market-conditions.ts deleted file mode 100644 index 9965e7717..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-market-conditions.ts +++ /dev/null @@ -1,73 +0,0 @@ -/// A recommendation for account composition based on current market rates. -import {LotteryPot} from "./orchid-eth-types"; -import {OrchidLottery} from "./orchid-lottery"; -import {GasFunds, LotFunds} from "./orchid-eth-token-types"; - -export interface MarketConditionsSource { - - for(pot: LotteryPot): Promise - - /// Given a target efficiency and a desired number of face value multiples in the balance - /// (assuming two in the deposit) recommend balance, deposit, and required ETH amounts based - // on current market conditions. - getAccountRecommendation(targetEfficiency: number, balanceFaceValues: number): Promise - - forBalance(balance: LotFunds, escrow: LotFunds): Promise - - // Return the cost in gas funds required to redeem a ticket and the equivalent cost in lottery token funds - getCostToRedeemTicket(): Promise<{ gasCostToRedeem: GasFunds; lotCostToRedeem: LotFunds }> - - recommendedAccountComposition(): Promise - - recommendationEfficiency: number - recommendationBalanceFaceValues: number - - minViableAccountComposition(): Promise -} - -export class MarketConditions { - public ticketUnderwater: boolean - public efficiency: number - public limitedByBalance: boolean - - public efficiencyPerc(): string { - return (this.efficiency * 100).toFixed() + "%"; - } - - constructor(ticketUnderwater: boolean, efficiency: number, limitedByBalance: boolean) { - this.ticketUnderwater = ticketUnderwater; - this.efficiency = efficiency; - this.limitedByBalance = limitedByBalance; - } -} - -export class AccountRecommendation { - public balance: LotFunds; - public deposit: LotFunds; - public txGasFundsRequired: GasFunds; // e.g. ETH required for the funding transaction - - // The max face value of a ticket that can be written with this account composition. - get maxFaceValue(): LotFunds { - return OrchidLottery.maxTicketFaceValue(this.balance, this.deposit); - } - - // The expected number of tickets that can be written with this account composition at the - // default ticket win rate and default survival probabilty target. Returns null if the value - // cannot be determined. - get expectedTickets(): number | null { - return OrchidLottery.expectedTickets(this.balance, this.deposit); - } - - // The expected cumulative value of tickets that can be written with this account composition - // at the expected ticket count. - get expectedTicketValue(): LotFunds | null { - return OrchidLottery.expectedTicketValue(this.balance, this.deposit); - } - - constructor(balance: LotFunds, deposit: LotFunds, txEth: GasFunds) { - this.balance = balance; - this.deposit = deposit; - this.txGasFundsRequired = txEth; - } -} - diff --git a/web-ethereum/orchid_dapp/src/api/orchid-pricing.ts b/web-ethereum/orchid_dapp/src/api/orchid-pricing.ts deleted file mode 100644 index c02aa3a78..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-pricing.ts +++ /dev/null @@ -1,60 +0,0 @@ -/// Pricing captures exchange rates at a point in time and supports conversion. -import {GasFunds, LotFunds, TokenType} from "./orchid-eth-token-types"; - -export class USD { - static zero: USD = new USD(0); - - // TODO: This should probably stored as int cents - dollars: number; - - private constructor(dollars: number) { - this.dollars = dollars; - } - - public static fromNumber(dollars: number): USD { - return new USD(dollars); - } - - public lt(other: USD): boolean { - return this.dollars < other.dollars; - } -} - -export class Pricing { - fundsTokenType: TokenType - gasTokenType: TokenType - - public date: Date; - public lotFundsToUsdRate: number; // e.g. OXT per USD - public gasFundsToUsdRate: number; // e.g. ETH per USD - - constructor( - fundsTokenType: TokenType, - gasTokenType: TokenType, - gasFundsToUsdRate: number, - lotFundsToUsdRate: number) - { - this.fundsTokenType = fundsTokenType; - this.gasTokenType = gasTokenType; - this.date = new Date(); - this.lotFundsToUsdRate = lotFundsToUsdRate; - this.gasFundsToUsdRate = gasFundsToUsdRate; - } - - public toUSD(val: LotFunds): USD | null { - return USD.fromNumber(val.floatValue * this.lotFundsToUsdRate); - } - - public toFunds(usd: USD): LotFunds | null { - return this.fundsTokenType.fromNumber(usd.dollars / this.lotFundsToUsdRate); - } - - gasFundsToFunds(eth: GasFunds): LotFunds { - return this.fundsTokenType.fromNumber(this.lotFundsToUsdRate / this.gasFundsToUsdRate * eth.floatValue); - } - - gasFundsToUsd(eth: GasFunds): USD { - return USD.fromNumber(eth.floatValue * this.gasFundsToUsdRate); - } -} - diff --git a/web-ethereum/orchid_dapp/src/api/orchid-tx.ts b/web-ethereum/orchid_dapp/src/api/orchid-tx.ts deleted file mode 100644 index 721e8e385..000000000 --- a/web-ethereum/orchid_dapp/src/api/orchid-tx.ts +++ /dev/null @@ -1,228 +0,0 @@ -import {TransactionReceipt} from "web3-core"; -import {OrchidWeb3API} from "./orchid-eth-web3"; -import Web3 from "web3"; -import {OrchidAPI} from "./orchid-api"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -const ORCHID_ETH_TX_KEY = "orchid-eth-tx"; - -export enum EthereumTransactionStatus { - PENDING, SUCCESS, FAILURE -} - -export class EthereumTransaction { - - hash: string; - requiredConfirmations: number - confirmations: number; - - // An indication that the transaction failed or threw an error in the contract. - failed: boolean; - - - constructor(hash: string, requiredConfirmations: number, confirmations: number, failed: boolean) { - this.hash = hash; - this.requiredConfirmations = requiredConfirmations; - this.confirmations = confirmations; - this.failed = failed; - } - - static fromReceipt(currentBlock: number, receipt: TransactionReceipt, requiredConfirmations: number): EthereumTransaction { - let confirmations = currentBlock - receipt.blockNumber + 1; - return new EthereumTransaction( - receipt.transactionHash, requiredConfirmations, confirmations, - // TODO: - // Note: receipt.status may be undefined here, contrary to the API. - receipt.status === false); - } - - static pending(hash: string): EthereumTransaction { - return new EthereumTransaction(hash, 1, 0, false); - } - - get status(): EthereumTransactionStatus { - if (this.failed) { - return EthereumTransactionStatus.FAILURE; - } - if (this.confirmations < this.requiredConfirmations) { - return EthereumTransactionStatus.PENDING; - } - return EthereumTransactionStatus.SUCCESS; - } - - public getLink() { - return `https://etherscan.io/tx/${this.hash}`; - } - - public toString = (): string => { - return `Eth TX: hash: ${this.hash}, status: ${this.status}, confirmations: ${this.confirmations}, failed: ${this.failed}`; - } -} - -export enum OrchidTransactionType { - AddFunds, WithdrawFunds, Lock, Unlock, MoveFundsToEscrow, Reset, StakeFunds -} - -/// A Orchid transaction that may be composed of multiple ETH transactions. -export class OrchidTransaction { - // Date monitoring began - submitted: Date; - - // The composite type of the overall transaction - type: OrchidTransactionType; - - // The chain for this transaction - chainId: number - - // One or more transactions that must complete for the operation to be successfull, ordered by nonce. - transactionHashes: string []; - - constructor(submitted: Date, type: OrchidTransactionType, chainId: number, transactionHashes: string[]) { - this.submitted = submitted; - this.type = type; - this.chainId = chainId; - this.transactionHashes = transactionHashes; - } - - // The hash of the composite transaction is defined to be the hash of the first child tx. - get hash(): string { - return this.transactionHashes[0]; - } - - public toString = (): string => { - return `Orchid TX: date: ${this.submitted}, type: ${this.type}`; - } -} - - -export class OrchidTransactionDetail extends OrchidTransaction { - - // Detailed transaction information, ordered by nonce. - transactions: EthereumTransaction []; - - constructor(parent: OrchidTransaction, transactions: EthereumTransaction[]) { - super(parent.submitted, parent.type, parent.chainId, parent.transactionHashes); - this.transactions = transactions; - } - -// The composite status of the overall transaction - get status(): EthereumTransactionStatus { - if (this.transactions.some(tx => tx.status === EthereumTransactionStatus.FAILURE)) { - return EthereumTransactionStatus.FAILURE; - } - if (this.transactions.some(tx => tx.status === EthereumTransactionStatus.PENDING)) { - return EthereumTransactionStatus.PENDING; - } - return EthereumTransactionStatus.SUCCESS; - } - - public toString = (): string => { - return `Orchid TX: date: ${this.submitted}, type: ${this.type}, txs: ${this.transactions}`; - } -} - -export type OrchidTransactionMonitorListener = (transactions: OrchidTransactionDetail []) => void; - -// TODO: Scope all of this per chain -/// Monitor for in-flight transactions. -/// These are persisted and then removed when the user manually dismisses them. -export class OrchidTransactionMonitor { - readonly POLLING_INTERVAL = 3000; // ms - - listener: OrchidTransactionMonitorListener | undefined; - timer: NodeJS.Timeout | undefined; - lastUpdate: Date | undefined; - - initIfNeeded(listener: OrchidTransactionMonitorListener) { - this.listener = listener; - if (!this.timer) { - this.timer = setInterval(() => this.interval(), 1000); - } - } - - /// Begin monitoring the transaction - add(tx: OrchidTransaction) { - let txs = this.load(); - txs.push(tx); - this.save(txs); - this.update(); - } - - /// Forget the transaction with the specified hash - remove(hash: string) { - let txs = this.load(); - txs = txs.filter(tx => tx.hash !== hash); - this.save(txs); - this.update(); - } - - protected load(): OrchidTransaction [] { - try { - let item = localStorage.getItem(ORCHID_ETH_TX_KEY); - if (item === null) { - return []; - } - let orcTxs: OrchidTransaction [] = JSON.parse(item); - // Note: This craziness is required in order to be able to use our TypeScript computed - // Note: property (`hash`) on the JSON deserialized objects. We have to recreate them. - return orcTxs.map(tx => new OrchidTransaction(tx.submitted, tx.type, tx.chainId, tx.transactionHashes)); - } catch (err) { - console.log("Error loading monitored orchid transactions"); - return []; - } - } - - protected save(txs: OrchidTransaction []) { - localStorage.setItem(ORCHID_ETH_TX_KEY, JSON.stringify(txs)); - } - - private async interval() { - if (!this.lastUpdate || (Date.now() - this.lastUpdate.getTime()) > this.POLLING_INTERVAL) { - try { - await this.update(); - } catch (err) { - console.log(err); - } - } - } - - private async update() { - this.lastUpdate = new Date(); - let orcTxs: OrchidTransaction [] = this.load(); - let orcDetailTxs: OrchidTransactionDetail [] = - await Promise.all(orcTxs.map(async orcTx => await this.getDetail(orcTx))); - if (this.listener) { - this.listener(orcDetailTxs); - } - } - - private async getDetail(orcTx: OrchidTransaction): Promise { - let web3: Web3 | null = OrchidWeb3API.shared().web3; - let ethTxs = orcTx.transactionHashes.map(async function (hash) { - if (!web3) { - throw Error("eth unavailable") - } - let receipt: TransactionReceipt = await web3.eth.getTransactionReceipt(hash); - //console.log("transaction receipt: ", receipt); - if (receipt) { - let currentBlock = await web3.eth.getBlockNumber(); - - // TODO: We should probably store chain info / number of required confirmations with the stored transactions - const requiredConfirmations = OrchidAPI.shared().eth?.requiredConfirmations ?? 2; - return EthereumTransaction.fromReceipt(currentBlock, receipt, requiredConfirmations); - } else { - return EthereumTransaction.pending(hash); - } - }); - return new OrchidTransactionDetail(orcTx, await Promise.all(ethTxs)); - } - - cancel() { - if (this.timer) { - clearInterval(this.timer); - } - } -} - diff --git a/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-contract-v0.ts b/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-contract-v0.ts deleted file mode 100644 index 80ec908df..000000000 --- a/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-contract-v0.ts +++ /dev/null @@ -1,1006 +0,0 @@ -import {EthAddress} from "../orchid-eth-types"; -import {getEthAddressParam} from "../../util/util"; -import {AbiItem} from "web3-utils"; - -export class OrchidContractMainNetV0 { - // The earliest block from which we look for events on chain for this contract. - static startBlock: number = 872000; - - static token_addr_final: EthAddress = '0x4575f41308EC1483f3d399aa9a2826d74Da13Deb'; // OXT Main net - static token_addr(): EthAddress { - return getEthAddressParam('token_addr', this.token_addr_final); - } - - static lottery_addr_final: EthAddress = '0xb02396f06CC894834b7934ecF8c8E5Ab5C1d12F1'; // Main net with OXT - static lottery_addr(): EthAddress { - return getEthAddressParam('lottery_addr', this.lottery_addr_final); - } - - static directory_addr_final: EthAddress = '0x918101FB64f467414e9a785aF9566ae69C3e22C5'; // OXT Directory on main net - static directory_addr(): EthAddress { - return getEthAddressParam('directory_addr', this.directory_addr_final); - } - - /// Indicates that one or more of the contract addresses have been overridden - static contracts_overridden(): boolean { - return this.token_addr() !== this.token_addr_final - || this.lottery_addr() !== this.lottery_addr_final - || this.directory_addr() !== this.directory_addr_final - } - - // This is topic[0] of the Update event. - static lottery_update_event_hash: string = - '0x3cd5941d0d99319105eba5f5393ed93c883f132d251e56819e516005c5e20dbc'; - - static token_approval_max_gas: number = 50000; - static lottery_push_max_gas: number = 175000; - static directory_push_max_gas: number = 300000; - static lottery_pull_amount_max_gas: number = 150000; - static lottery_pull_all_max_gas: number = 150000; - static lottery_lock_max_gas: number = 50000; - static lottery_warn_max_gas: number = 50000; - static lottery_move_max_gas: number = 150000; - - // Total max gas used by an add funds operation. - static add_funds_total_max_gas: number = OrchidContractMainNetV0.token_approval_max_gas + OrchidContractMainNetV0.lottery_push_max_gas; - - static stake_funds_total_max_gas: number = OrchidContractMainNetV0.add_funds_total_max_gas; - - static redeem_ticket_max_gas = 100000; - - static token_abi: AbiItem [] = [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ]; - - static lottery_abi: AbiItem [] = [ - { - "inputs": [{"internalType": "contract IERC20", "name": "token", "type": "address"}], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "funder", - "type": "address" - }, {"indexed": true, "internalType": "address", "name": "signer", "type": "address"}], - "name": "Bound", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "funder", - "type": "address" - }, {"indexed": true, "internalType": "address", "name": "signer", "type": "address"}], - "name": "Create", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "funder", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "signer", - "type": "address" - }, { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, { - "indexed": false, - "internalType": "uint128", - "name": "escrow", - "type": "uint128" - }, {"indexed": false, "internalType": "uint256", "name": "unlock", "type": "uint256"}], - "name": "Update", - "type": "event" - }, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "signer", - "type": "address" - }, { - "internalType": "contract OrchidVerifier", - "name": "verify", - "type": "address" - }, {"internalType": "bytes", "name": "shared", "type": "bytes"}], - "name": "bind", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "signer", - "type": "address" - }, {"internalType": "uint128", "name": "escrow", "type": "uint128"}], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "funder", - "type": "address" - }, { - "internalType": "address payable", - "name": "recipient", - "type": "address" - }, {"internalType": "uint128", "name": "amount", "type": "uint128"}, { - "internalType": "bytes", - "name": "receipt", - "type": "bytes" - }], - "name": "give", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "internalType": "bytes32", - "name": "reveal", - "type": "bytes32" - }, { - "internalType": "bytes32", - "name": "commit", - "type": "bytes32" - }, { - "internalType": "uint256", - "name": "issued", - "type": "uint256" - }, {"internalType": "bytes32", "name": "nonce", "type": "bytes32"}, { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, {"internalType": "bytes32", "name": "r", "type": "bytes32"}, { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - }, { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, { - "internalType": "uint128", - "name": "ratio", - "type": "uint128" - }, { - "internalType": "uint256", - "name": "start", - "type": "uint256" - }, { - "internalType": "uint128", - "name": "range", - "type": "uint128" - }, { - "internalType": "address", - "name": "funder", - "type": "address" - }, { - "internalType": "address payable", - "name": "recipient", - "type": "address" - }, { - "internalType": "bytes", - "name": "receipt", - "type": "bytes" - }, {"internalType": "bytes32[]", "name": "old", "type": "bytes32[]"}], - "name": "grab", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [{"internalType": "address", "name": "funder", "type": "address"}], - "name": "keys", - "outputs": [{"internalType": "address[]", "name": "", "type": "address[]"}], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{"internalType": "address", "name": "signer", "type": "address"}], - "name": "kill", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{"internalType": "address", "name": "signer", "type": "address"}], - "name": "lock", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "funder", - "type": "address" - }, {"internalType": "address", "name": "signer", "type": "address"}], - "name": "look", - "outputs": [{ - "internalType": "uint128", - "name": "", - "type": "uint128" - }, {"internalType": "uint128", "name": "", "type": "uint128"}, { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, { - "internalType": "contract OrchidVerifier", - "name": "", - "type": "address" - }, {"internalType": "bytes32", "name": "", "type": "bytes32"}, { - "internalType": "bytes", - "name": "", - "type": "bytes" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "signer", - "type": "address" - }, {"internalType": "uint128", "name": "amount", "type": "uint128"}], - "name": "move", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "funder", - "type": "address" - }, { - "internalType": "uint256", - "name": "offset", - "type": "uint256" - }, {"internalType": "uint256", "name": "count", "type": "uint256"}], - "name": "page", - "outputs": [{"internalType": "address[]", "name": "", "type": "address[]"}], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "signer", - "type": "address" - }, { - "internalType": "address payable", - "name": "target", - "type": "address" - }, {"internalType": "bool", "name": "autolock", "type": "bool"}, { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, {"internalType": "uint128", "name": "escrow", "type": "uint128"}], - "name": "pull", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "signer", - "type": "address" - }, { - "internalType": "uint128", - "name": "total", - "type": "uint128" - }, {"internalType": "uint128", "name": "escrow", "type": "uint128"}], - "name": "push", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": false, - "inputs": [{"internalType": "address payable", "name": "target", "type": "address"}], - "name": "reset", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [{ - "internalType": "address", - "name": "funder", - "type": "address" - }, {"internalType": "uint256", "name": "offset", "type": "uint256"}], - "name": "seek", - "outputs": [{"internalType": "address", "name": "", "type": "address"}], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": true, - "inputs": [{"internalType": "address", "name": "funder", "type": "address"}], - "name": "size", - "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{"internalType": "address", "name": "signer", "type": "address"}], - "name": "warn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { - "constant": true, - "inputs": [], - "name": "what", - "outputs": [{"internalType": "contract IERC20", "name": "", "type": "address"}], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { - "constant": false, - "inputs": [{ - "internalType": "address", - "name": "signer", - "type": "address" - }, { - "internalType": "address payable", - "name": "target", - "type": "address" - }, {"internalType": "bool", "name": "autolock", "type": "bool"}], - "name": "yank", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ]; - - static directory_abi: AbiItem [] = [ - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "token", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "stakee", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "staker", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "delay", - "type": "uint128" - } - ], - "name": "Delay", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "stakee", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "staker", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "local", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "global", - "type": "uint256" - } - ], - "name": "Update", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "have", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "stakee", - "type": "address" - } - ], - "name": "heft", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "staker", - "type": "address" - }, - { - "internalType": "address", - "name": "stakee", - "type": "address" - } - ], - "name": "name", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint128", - "name": "percent", - "type": "uint128" - } - ], - "name": "pick", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "stakee", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "pull", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "stakee", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint128", - "name": "delay", - "type": "uint128" - } - ], - "name": "push", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "point", - "type": "uint256" - } - ], - "name": "seek", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint128", - "name": "delay", - "type": "uint128" - } - ], - "name": "stop", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "address payable", - "name": "target", - "type": "address" - } - ], - "name": "take", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "stakee", - "type": "address" - }, - { - "internalType": "uint128", - "name": "delay", - "type": "uint128" - } - ], - "name": "wait", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "what", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ]; - -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-market-v0.ts b/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-market-v0.ts deleted file mode 100644 index b80cb4f37..000000000 --- a/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-market-v0.ts +++ /dev/null @@ -1,96 +0,0 @@ -import {LotteryPot, OrchidEthereumAPI} from "../orchid-eth"; -import {GasFunds, LotFunds} from "../orchid-eth-token-types"; -import {OrchidLottery} from "../orchid-lottery"; -import {Pricing} from "../orchid-pricing"; -import {OrchidPricingMainNetV0} from "./orchid-eth-pricing-v0"; -import { - AccountRecommendation, - MarketConditions, - MarketConditionsSource -} from "../orchid-market-conditions"; -import {OrchidContractMainNetV0} from "./orchid-eth-contract-v0"; - -export class MarketConditionsSourceImplV0 implements MarketConditionsSource { - eth: OrchidEthereumAPI - - constructor(eth: OrchidEthereumAPI) { - this.eth = eth; - } - - async for(pot: LotteryPot): Promise { - return this.forBalance(pot.balance, pot.escrow); - } - - /// Given a target efficiency and a desired number of face value multiples in the balance - /// (assuming two in the deposit) recommend balance, deposit, and required ETH amounts based - // on current market conditions. - async getAccountRecommendation(targetEfficiency: number, balanceFaceValues: number): Promise { - let {lotCostToRedeem} = await this.getCostToRedeemTicket(); - let txGasFundsRequired: GasFunds = await this.eth.getAccountCreationGasRequired(); - return MarketConditionsSourceImplV0.getAccountRecommendation( - targetEfficiency, balanceFaceValues, lotCostToRedeem, txGasFundsRequired ); - } - - static async getAccountRecommendation( - targetEfficiency: number, - balanceFaceValues: number, - lotCostToRedeemTicket: LotFunds, - gasRequiredToCreateAccount: GasFunds - ): Promise - { - if (targetEfficiency >= 1.0) { - throw Error("Invalid efficiency target: cannot equal or exceed 1.0"); - } - let faceValue: LotFunds = lotCostToRedeemTicket.divide(1.0 - targetEfficiency); - let deposit = faceValue.multiply(2.0); - let balance = faceValue.multiply(balanceFaceValues); - // console.log(`MarketConditions account recommendation for: - // eff=${targetEfficiency}, fv=${balanceFaceValues} = - // balance: ${balance.floatValue}, deposit: ${deposit.floatValue}`); - return new AccountRecommendation(balance, deposit, gasRequiredToCreateAccount); - } - - async forBalance(balance: LotFunds, escrow: LotFunds): Promise - { - let {lotCostToRedeem} = await this.getCostToRedeemTicket(); - return MarketConditionsSourceImplV0.forBalance(balance, escrow, lotCostToRedeem ); - } - - static async forBalance( - balance: LotFunds, escrow: LotFunds, lotCostToRedeem: LotFunds - ): Promise - { - let limitedByBalance = balance.lte(escrow.divide(2.0)); - let maxFaceValue: LotFunds = OrchidLottery.maxTicketFaceValue(balance, escrow); - let ticketUnderwater = lotCostToRedeem.gte(maxFaceValue); - - // value received as a fraction of ticket face value - let efficiency = Math.max(0, maxFaceValue.subtract(lotCostToRedeem).floatValue / maxFaceValue.floatValue); - - // console.log("MarketConditions for balance: ", balance.floatValue, escrow.floatValue, " = ", lotCostToRedeem.floatValue, maxFaceValue.floatValue, ticketUnderwater, efficiency, limitedByBalance); - return new MarketConditions(ticketUnderwater, efficiency, limitedByBalance); - } - - // Return the cost in gas funds required to redeem a ticket and the equivalent cost in lottery token funds - async getCostToRedeemTicket(): Promise<{ gasCostToRedeem: GasFunds; lotCostToRedeem: LotFunds }> { - let pricing: Pricing = await OrchidPricingMainNetV0.shared().getPricing(); - let gasPrice: GasFunds = await this.eth.getGasPrice(); - let gasCostToRedeem: GasFunds = gasPrice.multiply(OrchidContractMainNetV0.redeem_ticket_max_gas); - let lotCostToRedeem: LotFunds = pricing.gasFundsToFunds(gasCostToRedeem); - return {gasCostToRedeem, lotCostToRedeem}; - } - - public recommendationEfficiency: number = 0.5; // 50% - public recommendationBalanceFaceValues: number = 1.0; - - recommendedAccountComposition(): Promise { - return this.getAccountRecommendation(this.recommendationEfficiency, this.recommendationBalanceFaceValues); - } - - - minViableAccountComposition(): Promise { - let minViableEfficiency: number = 0.01; // 1%, - let minViableBalanceFaceValues: number = 1; - return this.getAccountRecommendation(minViableEfficiency, minViableBalanceFaceValues); - } -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-pricing-v0.ts b/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-pricing-v0.ts deleted file mode 100644 index 357d09e76..000000000 --- a/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-pricing-v0.ts +++ /dev/null @@ -1,53 +0,0 @@ -/// Exchange rates -import {Pricing} from "../orchid-pricing"; -import {EVMChains} from "../chains/chains"; - -export class OrchidPricingMainNetV0 { - private static instance: OrchidPricingMainNetV0; - - static exchangeRatesProviderUrl = 'https://api.coinbase.com/v2/exchange-rates'; - - private constructor() { - } - - static shared() { - if (!OrchidPricingMainNetV0.instance) { - OrchidPricingMainNetV0.instance = new OrchidPricingMainNetV0(); - } - return OrchidPricingMainNetV0.instance; - } - - _lastPricing?: Pricing - - /// Get a snapshot of current pricing data at the current time. - /// This method may return null if no pricing data is available and the UI - /// should handle this as a routine condition by hiding displayed conversions. - /// This method is cached for a period of time and safe to call repeatedly. - async getPricing(): Promise { - - // Cache for a period of time - const cachePeriod = 3000; // ms - if (this._lastPricing != null && Date.now() - this._lastPricing.date.getTime() < cachePeriod) { - return this._lastPricing; - } - - try { - const response: Response = await fetch(OrchidPricingMainNetV0.exchangeRatesProviderUrl); - if (response.status !== 200) { - throw Error(`Error status code: ${response.status}`); - } - let body = await response.json(); - - let rates = body['data']['rates']; - this._lastPricing = new Pricing( - EVMChains.OXT_TOKEN, EVMChains.ETH_TOKEN, - /*gasToUsdRate:*/ parseFloat(rates['ETH']), - /*lotToUsdRate:*/ parseFloat(rates['OXT']) - ); - return this._lastPricing; - } catch (err) { - console.log("Error fetching pricing: $err"); - throw err; - } - } -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-v0.ts b/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-v0.ts deleted file mode 100644 index e7a0e10b4..000000000 --- a/web-ethereum/orchid_dapp/src/api/v0/orchid-eth-v0.ts +++ /dev/null @@ -1,499 +0,0 @@ -import Web3 from "web3"; -import { - EthAddress, - EthereumKey, - LotteryPot, - LotteryPotUpdateEvent, - Signer, - Wallet -} from "../orchid-eth-types"; -import {GasFunds, LotFunds, min, TokenType} from "../orchid-eth-token-types"; -import {debugV0, getParam} from "../../util/util"; -import {OrchidAPI} from "../orchid-api"; -import {OrchidTransaction, OrchidTransactionType} from "../orchid-tx"; -import {PromiEvent} from "web3-core"; -import { - GasPricingStrategy, - ORCHID_SIGNER_KEYS_WALLET, - OrchidEthereumAPI, - Web3Wallet -} from "../orchid-eth"; -import {OrchidContractMainNetV0} from "./orchid-eth-contract-v0"; -import {Contract} from "web3-eth-contract"; -import {EtherscanIO} from "../etherscan-io"; -import {EVMChains} from "../chains/chains"; -import {MarketConditionsSource} from "../orchid-market-conditions"; -import {MarketConditionsSourceImplV0} from "./orchid-eth-market-v0"; - -const BigInt = require("big-integer"); // Mobile Safari requires polyfill -export type V1 = OrchidEthereumApiV0Impl - -export class OrchidEthereumApiV0Impl implements OrchidEthereumAPI { - - public web3: Web3 - public chainId = debugV0() ? EVMChains.ganacheChain.chainId : EVMChains.ETHEREUM_MAIN_NET; - public fundsTokenType: TokenType - public gasTokenType: TokenType - public isV0 = true - - tokenContract: Contract; - lotteryContract: Contract; - directoryContract: Contract; - - constructor(web3: Web3) { - this.web3 = web3; - this.fundsTokenType = EVMChains.OXT_TOKEN; - this.gasTokenType = EVMChains.ETH_TOKEN; - this.tokenContract = new web3.eth.Contract(OrchidContractMainNetV0.token_abi, OrchidContractMainNetV0.token_addr()); - this.lotteryContract = new web3.eth.Contract(OrchidContractMainNetV0.lottery_abi, OrchidContractMainNetV0.lottery_addr()); - this.directoryContract = new web3.eth.Contract(OrchidContractMainNetV0.directory_abi, OrchidContractMainNetV0.directory_addr()); - } - - /// Get the user's wallet funds and gas token funds balances. - async orchidGetWallet(): Promise { - const accounts = await this.web3.eth.getAccounts(); - if (accounts.length === 0) { - throw Error("no accounts"); - } - - const wallet = new Wallet(this.fundsTokenType.zero, this.gasTokenType.zero); - wallet.address = accounts[0]; - - // gas funds - try { - let overrideGas: GasFunds | null = this.gasTokenType.fromString(getParam('walletGasFunds')) - wallet.gasFundsBalance = (overrideGas || this.gasTokenType.fromIntString(await this.web3.eth.getBalance(accounts[0]))); - } catch (err) { - console.log("Error getting gas funds balance", err); - throw err; - } - - // lottery funds - try { - let overrideBalance: LotFunds | null = this.fundsTokenType.fromString(getParam('walletFunds')) - wallet.fundsBalance = (overrideBalance || this.fundsTokenType.fromInt(await this.tokenContract.methods.balanceOf(accounts[0]).call())); - } catch (err) { - console.log("Error getting funds balance", err); - throw err; - } - return wallet; - } - - async orchidGetSigners(wallet: Wallet): Promise { - if (getParam("no_signers")) { - return []; - } - let signerAddresses; - try { - signerAddresses = await this.lotteryContract.methods.keys(wallet.address).call(); - } catch (err) { - console.log("Error getting signers list", err); - throw err; - } - console.log("orchidGetSigners: orchid signers: ", signerAddresses); - - let signerKeys = this.orchidGetSignerKeys() as EthereumKey []; - return OrchidEthereumApiV0Impl.addKeysToSigners(signerAddresses, signerKeys, wallet); - } - - public static addKeysToSigners( - signerAddresses: EthAddress [], - signerKeys: EthereumKey [], - wallet: Wallet - ): Signer [] { - // Add the signer keys for any signers created in this wallet. - return signerAddresses.map((address: EthAddress) => { - let found = Array.from(signerKeys).find(key => key.address === address); - let secret = found === undefined ? undefined : found.privateKey; - return new Signer(wallet, address, secret); - }); - } - -/// Get the Orchid signer keys wallet in local storage. - orchidGetSignerKeys(): Web3Wallet { - return OrchidEthereumApiV0Impl.orchidGetSignerKeys(this.web3); - } - - static orchidGetSignerKeys(web3: Web3): Web3Wallet { - return web3.eth.accounts.wallet.load("", ORCHID_SIGNER_KEYS_WALLET); - } - - /// Create a new signer keypair and save it in the Orchid signer keys wallet in local storage. - orchidCreateSigner(wallet: Wallet): Signer { - return OrchidEthereumApiV0Impl.orchidCreateSigner(this.web3, wallet); - } - - static orchidCreateSigner(web3: Web3, wallet: Wallet): Signer { - let signersWallet = OrchidEthereumApiV0Impl.orchidGetSignerKeys(web3); - let signerAccount = web3.eth.accounts.create(); - signersWallet.add(signerAccount); - signersWallet.save("", ORCHID_SIGNER_KEYS_WALLET); - return new Signer(wallet, signerAccount.address, signerAccount.privateKey); - } - - /// Transfer the int amount from the user to the specified lottery pot address. - /// If the total exceeds walletBalance the amount value is automatically reduced. - async orchidAddFunds( - funder: EthAddress, signer: EthAddress, amount: LotFunds, escrow: LotFunds, wallet: Wallet - ): Promise { - //return fakeTx(false); - - // Choose a gas price - let medianGasPrice: GasFunds = await this.getGasPrice(); - let gasPrice: number | undefined = GasPricingStrategy.chooseGasPrice( - OrchidContractMainNetV0.add_funds_total_max_gas, medianGasPrice, wallet.gasFundsBalance); - if (!gasPrice) { - console.log("addfunds: gas price potentially too low."); - } - - // Don't attempt to add more than the wallet balance. - // This mitigates the potential for rounding errors in calculated amounts. - const total: LotFunds = min(amount.add(escrow), wallet.fundsBalance); - console.log("Add funds signer: ", signer, " amount: ", (total.subtract(escrow)), " escrow: ", escrow); - - const thisCapture = this; - - async function doApproveTx() { - return new Promise(function (resolve, reject) { - thisCapture.tokenContract.methods.approve( - OrchidContractMainNetV0.lottery_addr(), - total.intValue.toString() - ).send({ - from: funder, - gas: OrchidContractMainNetV0.token_approval_max_gas, - gasPrice: gasPrice - }) - // An approval tx resolves immediately after the user submits. - .on("transactionHash", (hash: any) => { - console.log("Approval hash: ", hash); - resolve(hash); - }) - .on('confirmation', (confirmationNumber: any, receipt: any) => { - console.log("Approval confirmation ", confirmationNumber, JSON.stringify(receipt)); - }) - .on('error', (err: any) => { - console.log("Approval error: ", JSON.stringify(err)); - // If there is an error in the approval assume Funding will fail. - reject(err['message']); - }); - }); - } - - // If approvalHash is provided it will be supplied to the transaction monitor as part of a - // the composite Orchid transaction. - async function doFundTx(approvalHash: string | null) { - return new Promise(function (resolve, reject) { - thisCapture.lotteryContract.methods.push( - signer, - total.intValue.toString(), - escrow.intValue.toString() - ).send({ - from: funder, - gas: OrchidContractMainNetV0.lottery_push_max_gas, - gasPrice: gasPrice - }) - .on("transactionHash", (hash: any) => { - console.log("doFundTx: Fund hash: ", hash); - OrchidAPI.shared().transactionMonitor.add( - new OrchidTransaction(new Date(), OrchidTransactionType.AddFunds, thisCapture.chainId, - approvalHash ? [approvalHash, hash] : [hash]) - ); - }) - .on('confirmation', (confirmationNumber: any, receipt: any) => { - console.log("doFundTx: Fund confirmation", confirmationNumber, JSON.stringify(receipt)); - // Wait for confirmations on the funding tx. - if (confirmationNumber >= thisCapture.requiredConfirmations) { - const hash = receipt['transactionHash']; - resolve(hash); - } else { - console.log("doFundTx: waiting for more confirmations..."); - } - }) - .on('error', (err: any) => { - console.log("doFundTx: Fund error: ", JSON.stringify(err)); - reject(err['message']); - }); - }); - } - - // Check allowance and skip approval if sufficient. - const oxtAllowance = this.fundsTokenType.fromIntString( - await this.tokenContract.methods.allowance(funder, OrchidContractMainNetV0.lottery_addr()).call()); - let approvalHash = oxtAllowance.lt(total) ? await doApproveTx() : null; - - // Introduce a short artificial delay before issuing the second tx - // Issue: We have had reports of problems where only one dialog is presented to the user. - // Issue: Trying this to see if it mitigates any race conditions in the wallet. - await new Promise(r => setTimeout(r, 1000)); - - // The UI monitors the funding tx. - return doFundTx(approvalHash); - } - - /// Transfer the int amount from the user to the specified directory address. - /// Amount won't exceed walletBalance. - async orchidStakeFunds( - funder: EthAddress, stakee: EthAddress, amount: LotFunds, wallet: Wallet, delay: BigInt - ): Promise { - - amount = min(amount, wallet.fundsBalance); - const delay_value = BigInt(delay); - console.log("Stake funds amount: ", amount); - - // Choose a gas price - let medianGasPrice = await this.getGasPrice(); - let gasPrice = GasPricingStrategy.chooseGasPrice( - OrchidContractMainNetV0.stake_funds_total_max_gas, medianGasPrice, wallet.gasFundsBalance); - if (!gasPrice) { - console.log("Add funds: gas price potentially too low."); - } - - const thisCapture = this; - - async function doApproveTx() { - return new Promise(function (resolve, reject) { - thisCapture.tokenContract.methods.approve( - OrchidContractMainNetV0.directory_addr(), - amount.intValue.toString() - ).send({ - from: funder, - gas: OrchidContractMainNetV0.token_approval_max_gas, - gasPrice: gasPrice - }) - .on("transactionHash", (hash: any) => { - console.log("Approval hash: ", hash); - resolve(hash); - }) - .on('confirmation', (confirmationNumber: any, receipt: any) => { - console.log("Approval confirmation ", confirmationNumber, JSON.stringify(receipt)); - }) - .on('error', (err: any) => { - console.log("Approval error: ", JSON.stringify(err)); - // If there is an error in the approval assume Funding will fail. - reject(err['message']); - }); - }); - } - - async function doFundTx(approvalHash: string) { - return new Promise(function (resolve, reject) { - thisCapture.directoryContract.methods.push( - stakee, amount.intValue.toString(), delay_value.toString() - ).send({ - from: funder, - gas: OrchidContractMainNetV0.directory_push_max_gas, - gasPrice: gasPrice - }) - .on("transactionHash", (hash: any) => { - console.log("Stake hash: ", hash); - OrchidAPI.shared().transactionMonitor.add( - new OrchidTransaction(new Date(), OrchidTransactionType.StakeFunds, thisCapture.chainId, [approvalHash, hash])); - }) - .on('confirmation', (confirmationNumber: any, receipt: any) => { - console.log("Stake confirmation", confirmationNumber, JSON.stringify(receipt)); - // Wait for confirmations on the funding tx. - if (confirmationNumber >= thisCapture.requiredConfirmations) { - const hash = receipt['transactionHash']; - resolve(hash); - } else { - console.log("waiting for more confirmations..."); - } - }) - .on('error', (err: any) => { - console.log("Stake error: ", JSON.stringify(err)); - reject(err['message']); - }); - }); - } - - // The approval tx resolves immediately after the user submits. - - let approvalHash = await doApproveTx(); - - // Introduce a short artificial delay before issuing the second tx - // Issue: We have had reports of problems where only one dialog is presented to the user. - // Issue: Trying this to see if it mitigates any race conditions in the wallet. - await new Promise(r => setTimeout(r, 1000)); - - // The UI monitors the funding tx. - return doFundTx(approvalHash); - } - - async orchidGetStake(stakee: EthAddress): Promise { - console.log("orchid get stake"); - let stake = await this.directoryContract.methods.heft(stakee).call(); - return this.fundsTokenType.fromInt(stake) || this.fundsTokenType.zero - } - - evalOrchidTx(promise: PromiEvent, type: OrchidTransactionType): Promise { - return OrchidEthereumApiV0Impl.evalOrchidTx(promise, type, this.chainId); - } - - /// Evaluate an Orchid method call, returning the confirmation transaction has or error. - static evalOrchidTx(promise: PromiEvent, type: OrchidTransactionType, chainId: number): Promise { - return new Promise(function (resolve, reject) { - promise - .on("transactionHash", (hash) => { - console.log("hash: ", hash); - if (type) { - OrchidAPI.shared().transactionMonitor.add( - new OrchidTransaction(new Date(), type, chainId, [hash])); - } - }) - .on('confirmation', (confirmationNumber, receipt) => { - console.log("confirmation", confirmationNumber, JSON.stringify(receipt)); - // Wait for one confirmation on the tx. - const hash = receipt['transactionHash']; - resolve(hash); - }) - .on('error', (err) => { - console.log("error: ", JSON.stringify(err)); - reject(err['message']); - }); - }); - } - - /// Move `amount` from balance to escrow, not exceeding `potBalance`. - async orchidMoveFundsToEscrow( - funder: EthAddress, signer: EthAddress, amount: LotFunds, potBalance: LotFunds): Promise { - console.log(`moveFunds amount: ${amount.toString()}`); - - // Don't take more than the pot balance. This check mitigates rounding errors. - amount = min(amount, potBalance); - - return this.evalOrchidTx( - this.lotteryContract.methods.move(signer, amount.intValue.toString()).send({ - from: funder, - gas: OrchidContractMainNetV0.lottery_move_max_gas, - }), OrchidTransactionType.MoveFundsToEscrow - ); - } - - /// Withdraw `amount` from the lottery pot to the specified eth address, not exceeding `potBalance`. - async orchidWithdrawFunds( - funder: EthAddress, signer: EthAddress, targetAddress: EthAddress, amount: LotFunds, potBalance: LotFunds - ): Promise { - // pull(address signer, address payable target, bool autolock, uint128 amount, uint128 escrow) external - let autolock = true; - let escrow = this.fundsTokenType.zero; - - // Don't take more than the pot balance. This check mitigates rounding errors. - amount = min(amount, potBalance); - console.log(`withdrawFunds to: ${targetAddress} amount: ${amount}`); - - return this.evalOrchidTx( - this.lotteryContract.methods.pull(signer, targetAddress, autolock, amount.intValue.toString(), escrow.intValue.toString()).send({ - from: funder, - gas: OrchidContractMainNetV0.lottery_pull_amount_max_gas, - }), OrchidTransactionType.WithdrawFunds - ); - } - - /// Pull all funds and escrow, subject to lock time. - async orchidWithdrawFundsAndEscrow(pot: LotteryPot, targetAddress: EthAddress): Promise { - console.log("withdrawFundsAndEscrow"); - let autolock = true; - const funder = pot.signer.wallet.address; - const signer = pot.signer.address; - return this.evalOrchidTx( - this.lotteryContract.methods.yank(signer, targetAddress, autolock).send({ - from: funder, - gas: OrchidContractMainNetV0.lottery_pull_all_max_gas - }), OrchidTransactionType.WithdrawFunds - ); - } - - async orchidLock(_: LotteryPot, funder: EthAddress, signer: EthAddress): Promise { - return this.evalOrchidTx( - this.lotteryContract.methods.lock(signer).send({ - from: funder, - gas: OrchidContractMainNetV0.lottery_lock_max_gas - }), OrchidTransactionType.Lock - ); - } - - /// Start the unlock / warn time period (one day in the future). - async orchidUnlock(_: LotteryPot, funder: EthAddress, signer: EthAddress): Promise { - return this.evalOrchidTx( - this.lotteryContract.methods.warn(signer).send({ - from: funder, - gas: OrchidContractMainNetV0.lottery_warn_max_gas - }), OrchidTransactionType.Unlock - ); - } - - /// Get the lottery pot balance and escrow amount for the specified address. - async orchidGetLotteryPot(funder: Wallet, signer: Signer): Promise { - // Allow overrides - let overrideBalance: LotFunds | null = this.fundsTokenType.fromString(getParam("balance")); - let overrideDeposit: LotFunds | null = this.fundsTokenType.fromString(getParam("deposit")); - //console.log("get lottery pot for signer: ", signer); - let result = await this.lotteryContract.methods - .look(funder.address, signer.address) - .call({from: funder.address}); - if (result == null || result.length < 3) { - console.log("get lottery pot failed"); - throw new Error("Unable to get lottery pot"); - } - const balance: LotFunds = overrideBalance || this.fundsTokenType.fromInt(result[0]); - const escrow: LotFunds = overrideDeposit || this.fundsTokenType.fromInt(result[1]); - const unlock: number = Number(result[2]); - const unlockDate: Date | null = unlock > 0 ? new Date(unlock * 1000) : null; - //console.log("Pot info: ", balance, "escrow: ", escrow, "unlock: ", unlock, "unlock date:", unlockDate); - return LotteryPot.from(signer, balance, escrow, unlockDate); - } - - // Exercise the reset account feature of the lotter_test_reset contract. - async orchidReset(funder: Wallet): Promise { - return this.evalOrchidTx( - this.lotteryContract.methods.reset(funder.address) - .send({ - from: funder.address, - gas: OrchidContractMainNetV0.lottery_move_max_gas, - }), OrchidTransactionType.Reset - ); - } - - // The current median gas price for the past few blocks - async getGasPrice(): Promise { - return OrchidEthereumApiV0Impl.getGasPrice(this.gasTokenType, this.web3); - } - - static async getGasPrice(gasTokenType: TokenType, web3: Web3): Promise { - try { - let gasPrice = gasTokenType.fromIntString(await web3.eth.getGasPrice()); - // console.log("gasPrice = ", gasPrice.floatValue) - return gasPrice - } catch (err) { - console.log("WARNING: defaulting gas price in disconnected state. Testing only!") - let GWEI = 1e9; - return gasTokenType.fromNumber(50 / GWEI); - } - } - - get contractsOverridden(): boolean { - return OrchidContractMainNetV0.contracts_overridden(); - } - - get requiredConfirmations(): number { - return this.contractsOverridden ? 1 : 2 - }; - - async getAccountCreationGasRequired(): Promise { - let gasPrice = await this.getGasPrice(); - return gasPrice.multiply(OrchidContractMainNetV0.add_funds_total_max_gas); - }; - - async getLotteryUpdateEvents(funder: EthAddress, signer: EthAddress): Promise { - return await new EtherscanIO().getLotteryUpdateEvents( - OrchidContractMainNetV0.lottery_addr(), - OrchidContractMainNetV0.lottery_update_event_hash, - OrchidContractMainNetV0.startBlock, - funder, signer, this.fundsTokenType - ); - } - - get marketConditions(): MarketConditionsSource { - return new MarketConditionsSourceImplV0(this) as MarketConditionsSource; - } -} diff --git a/web-ethereum/orchid_dapp/src/api/v1/orchid-eth-contract-v1.ts b/web-ethereum/orchid_dapp/src/api/v1/orchid-eth-contract-v1.ts deleted file mode 100644 index 43a46c78d..000000000 --- a/web-ethereum/orchid_dapp/src/api/v1/orchid-eth-contract-v1.ts +++ /dev/null @@ -1,246 +0,0 @@ -import {EthAddress} from "../orchid-eth-types"; -import {getEthAddressParam} from "../../util/util"; -import {AbiItem} from "web3-utils"; - -export class OrchidContractV1 { - // TODO: Set to a reasonable number closer to deployment - // The earliest block from which we look for events on chain for this contract. - static startBlock: number = 0; - static lottery_addr_final: EthAddress = '0x6dB8381b2B41b74E17F5D4eB82E8d5b04ddA0a82'; - - static lottery_addr(): EthAddress { - return getEthAddressParam('lottery_addr', this.lottery_addr_final); - } - - /// Indicates that one or more of the contract addresses have been overridden - static contracts_overridden(): boolean { - return this.lottery_addr() !== this.lottery_addr_final - } - - static lottery_pull_amount_max_gas: number = 150000; - static lottery_pull_all_max_gas: number = 150000; - static lottery_lock_max_gas: number = 50000; - static lottery_warn_max_gas: number = 50000; - static lottery_move_max_gas: number = 175000; - - // Total max gas used by an add funds operation. - static add_funds_total_max_gas: number = OrchidContractV1.lottery_move_max_gas; - static stake_funds_total_max_gas: number = OrchidContractV1.add_funds_total_max_gas; - - static redeem_ticket_max_gas = 100000; - - static lottery_abi: AbiItem [] = - [{ - "inputs": [{"internalType": "uint64", "name": "day", "type": "uint64"}], - "stateMutability": "nonpayable", - "type": "constructor" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "contract IERC20", - "name": "token", - "type": "address" - }, { - "indexed": true, - "internalType": "address", - "name": "funder", - "type": "address" - }, {"indexed": true, "internalType": "address", "name": "signer", "type": "address"}], - "name": "Create", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "bytes32", - "name": "key", - "type": "bytes32" - }, {"indexed": false, "internalType": "uint256", "name": "unlock_warned", "type": "uint256"}], - "name": "Delete", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "address", - "name": "funder", - "type": "address" - }, {"indexed": true, "internalType": "address", "name": "recipient", "type": "address"}], - "name": "Enroll", - "type": "event" - }, { - "anonymous": false, - "inputs": [{ - "indexed": true, - "internalType": "bytes32", - "name": "key", - "type": "bytes32" - }, {"indexed": false, "internalType": "uint256", "name": "escrow_amount", "type": "uint256"}], - "name": "Update", - "type": "event" - }, { - "inputs": [{ - "internalType": "contract IERC20", - "name": "token", - "type": "address" - }, { - "internalType": "address", - "name": "recipient", - "type": "address" - }, { - "components": [{ - "internalType": "bytes32", - "name": "data", - "type": "bytes32" - }, { - "internalType": "bytes32", - "name": "reveal", - "type": "bytes32" - }, { - "internalType": "uint256", - "name": "packed0", - "type": "uint256" - }, { - "internalType": "uint256", - "name": "packed1", - "type": "uint256" - }, {"internalType": "bytes32", "name": "r", "type": "bytes32"}, { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - }], "internalType": "struct OrchidLottery1.Ticket[]", "name": "tickets", "type": "tuple[]" - }, {"internalType": "bytes32[]", "name": "refunds", "type": "bytes32[]"}], - "name": "claim", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { - "inputs": [{ - "internalType": "contract IERC20", - "name": "token", - "type": "address" - }, { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, { - "internalType": "address", - "name": "signer", - "type": "address" - }, {"internalType": "int256", "name": "adjust", "type": "int256"}, { - "internalType": "int256", - "name": "warn", - "type": "int256" - }, {"internalType": "uint256", "name": "retrieve", "type": "uint256"}], - "name": "edit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { - "inputs": [{ - "internalType": "address", - "name": "signer", - "type": "address" - }, {"internalType": "int256", "name": "adjust", "type": "int256"}, { - "internalType": "int256", - "name": "warn", - "type": "int256" - }, {"internalType": "uint256", "name": "retrieve", "type": "uint256"}], - "name": "edit", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, { - "inputs": [{ - "internalType": "bool", - "name": "cancel", - "type": "bool" - }, {"internalType": "address[]", "name": "recipients", "type": "address[]"}], - "name": "enroll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { - "inputs": [{ - "internalType": "address", - "name": "funder", - "type": "address" - }, {"internalType": "address", "name": "recipient", "type": "address"}], - "name": "enrolled", - "outputs": [{"internalType": "uint256", "name": "", "type": "uint256"}], - "stateMutability": "view", - "type": "function" - }, { - "inputs": [{ - "internalType": "contract IERC20", - "name": "token", - "type": "address" - }, { - "internalType": "address", - "name": "signer", - "type": "address" - }, {"internalType": "uint64", "name": "marked", "type": "uint64"}], - "name": "mark", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { - "inputs": [{ - "internalType": "address", - "name": "sender", - "type": "address" - }, {"internalType": "uint256", "name": "amount", "type": "uint256"}, { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }], - "name": "onTokenTransfer", - "outputs": [{"internalType": "bool", "name": "", "type": "bool"}], - "stateMutability": "nonpayable", - "type": "function" - }, { - "inputs": [{ - "internalType": "contract IERC20", - "name": "token", - "type": "address" - }, { - "internalType": "address", - "name": "funder", - "type": "address" - }, {"internalType": "address", "name": "signer", "type": "address"}], - "name": "read", - "outputs": [{ - "internalType": "uint256", - "name": "", - "type": "uint256" - }, {"internalType": "uint256", "name": "", "type": "uint256"}], - "stateMutability": "view", - "type": "function" - }, { - "inputs": [{ - "internalType": "uint256", - "name": "count", - "type": "uint256" - }, {"internalType": "bytes32", "name": "seed", "type": "bytes32"}], - "name": "save", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { - "inputs": [{ - "internalType": "address", - "name": "sender", - "type": "address" - }, {"internalType": "uint256", "name": "amount", "type": "uint256"}, { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }], - "name": "tokenFallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }]; - -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/api/v1/orchid-eth-market-v1.ts b/web-ethereum/orchid_dapp/src/api/v1/orchid-eth-market-v1.ts deleted file mode 100644 index c423e41df..000000000 --- a/web-ethereum/orchid_dapp/src/api/v1/orchid-eth-market-v1.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { - AccountRecommendation, - MarketConditions, - MarketConditionsSource -} from "../orchid-market-conditions"; -import {LotteryPot, OrchidEthereumAPI} from "../orchid-eth"; -import {GasFunds, LotFunds} from "../orchid-eth-token-types"; -import {OrchidContractV1} from "./orchid-eth-contract-v1"; -import {MarketConditionsSourceImplV0} from "../v0/orchid-eth-market-v0"; - -export class MarketConditionsSourceImplV1 implements MarketConditionsSource { - eth: OrchidEthereumAPI - - constructor(eth: OrchidEthereumAPI) { - this.eth = eth; - } - - async for(pot: LotteryPot): Promise { - return this.forBalance(pot.balance, pot.escrow); - } - - /// Given a target efficiency and a desired number of face value multiples in the balance - /// (assuming two in the deposit) recommend balance, deposit, and required ETH amounts based - // on current market conditions. - async getAccountRecommendation(targetEfficiency: number, balanceFaceValues: number): Promise { - let {lotCostToRedeem} = await this.getCostToRedeemTicket(); - let txGasFundsRequired: GasFunds = await this.eth.getAccountCreationGasRequired(); - return MarketConditionsSourceImplV0.getAccountRecommendation( - targetEfficiency, balanceFaceValues, lotCostToRedeem, txGasFundsRequired ); - } - - async forBalance(balance: LotFunds, escrow: LotFunds): Promise { - let {lotCostToRedeem} = await this.getCostToRedeemTicket(); - return MarketConditionsSourceImplV0.forBalance(balance, escrow, lotCostToRedeem ); - } - - // Return the cost in gas funds required to redeem a ticket and the equivalent cost in lottery token funds - async getCostToRedeemTicket(): Promise<{ gasCostToRedeem: GasFunds; lotCostToRedeem: LotFunds }> { - let gasPrice: GasFunds = await this.eth.getGasPrice(); - let gasCostToRedeem: GasFunds = gasPrice.multiply(OrchidContractV1.redeem_ticket_max_gas); - // For v1 these will be the same token. - if (this.eth.gasTokenType.symbol !== this.eth.fundsTokenType.symbol) { throw Error() } - let lotCostToRedeem: LotFunds = this.eth.fundsTokenType.fromInt(gasCostToRedeem.intValue); - return {gasCostToRedeem, lotCostToRedeem}; - } - - public recommendationEfficiency: number = 0.5; // 50% - public recommendationBalanceFaceValues: number = 1.0; - - recommendedAccountComposition(): Promise { - let recommendationEfficiency: number = 0.5; // 50% - let recommendationBalanceFaceValues: number = 1.0; - return this.getAccountRecommendation(recommendationEfficiency, recommendationBalanceFaceValues); - } - - minViableAccountComposition(): Promise { - let minViableEfficiency: number = 0.01; // 1%, - let minViableBalanceFaceValues: number = 1; - return this.getAccountRecommendation(minViableEfficiency, minViableBalanceFaceValues); - } -} diff --git a/web-ethereum/orchid_dapp/src/api/v1/orchid-eth-v1.ts b/web-ethereum/orchid_dapp/src/api/v1/orchid-eth-v1.ts deleted file mode 100644 index ba3883cce..000000000 --- a/web-ethereum/orchid_dapp/src/api/v1/orchid-eth-v1.ts +++ /dev/null @@ -1,449 +0,0 @@ -import Web3 from "web3"; -import { - EthAddress, EthereumAddress, - EthereumKey, - LotteryPot, - LotteryPotUpdateEvent, - Signer, - Wallet -} from "../orchid-eth-types"; -import {GasFunds, LotFunds, min, TokenType} from "../orchid-eth-token-types"; -import {getParam} from "../../util/util"; -import {GasPricingStrategy, OrchidEthereumAPI, Web3Wallet} from "../orchid-eth"; -import {OrchidContractV1} from "./orchid-eth-contract-v1"; -import {Contract} from "web3-eth-contract"; -import {OrchidEthereumApiV0Impl} from "../v0/orchid-eth-v0"; -import {PromiEvent} from "web3-core"; -import {OrchidTransaction, OrchidTransactionType} from "../orchid-tx"; -import {Pricing} from "../orchid-pricing"; -import {OrchidAPI} from "../orchid-api"; -import {ChainInfo} from "../chains/chains"; -import {MarketConditionsSource} from "../orchid-market-conditions"; -import {MarketConditionsSourceImplV1} from "./orchid-eth-market-v1"; -import {Transaction} from "web3-core"; - -const abiDecoder = require('abi-decoder'); - -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export class OrchidEthereumApiV1Impl implements OrchidEthereumAPI { - - public web3: Web3 - public isV0 = false - chainInfo: ChainInfo - lotteryContract: Contract - - public get chainId(): number { - return this.chainInfo.chainId; - } - - public get fundsTokenType(): TokenType { - return this.chainInfo.fundsToken - } - - public get gasTokenType(): TokenType { - return this.chainInfo.gasToken - } - - constructor(web3: Web3, chainInfo: ChainInfo) { - this.web3 = web3; - this.chainInfo = chainInfo - this.lotteryContract = new web3.eth.Contract(OrchidContractV1.lottery_abi, OrchidContractV1.lottery_addr()); - abiDecoder.addABI(OrchidContractV1.lottery_abi); - } - - /// Get the user's wallet funds and gas token funds balances. - async orchidGetWallet(): Promise { - const accounts = await this.web3.eth.getAccounts(); - if (accounts.length === 0) { - throw Error("no accounts"); - } - const wallet = new Wallet(this.fundsTokenType.zero, this.gasTokenType.zero); - wallet.address = accounts[0]; - - // gas funds - try { - let overrideGas: GasFunds | null = this.gasTokenType.fromString(getParam('walletGasFunds')) - wallet.gasFundsBalance = (overrideGas || this.gasTokenType.fromIntString(await this.web3.eth.getBalance(accounts[0]))); - } catch (err) { - console.log("Error getting gas funds balance", err); - throw err; - } - - // lottery funds - try { - // On v1 lottery funds == gas funds - wallet.fundsBalance = this.fundsTokenType.fromInt(wallet.gasFundsBalance.intValue); - } catch (err) { - console.log("Error getting funds balance", err); - throw err; - } - return wallet; - } - - async orchidGetSigners(wallet: Wallet): Promise { - if (getParam("no_signers")) { - return []; - } - - let events = await this.lotteryContract.getPastEvents('Create', { - filter: {funder: wallet.address}, - fromBlock: OrchidContractV1.startBlock, - toBlock: 'latest' - }); - let signerAddresses = events.map(e => { - return e.returnValues['signer'] - }); - console.log("orchidGetSigners v1: orchid signers: ", signerAddresses); - - let signerKeys = this.orchidGetSignerKeys() as EthereumKey []; - return OrchidEthereumApiV0Impl.addKeysToSigners(signerAddresses, signerKeys, wallet); - } - - /// Get the Orchid signer keys wallet in local storage. - orchidGetSignerKeys(): Web3Wallet { - return OrchidEthereumApiV0Impl.orchidGetSignerKeys(this.web3); - } - - /// Create a new signer keypair and save it in the Orchid signer keys wallet in local storage. - orchidCreateSigner(wallet: Wallet): Signer { - return OrchidEthereumApiV0Impl.orchidCreateSigner(this.web3, wallet); - } - - /// Transfer the int amount from the user to the specified lottery pot address. - /// If the total exceeds walletBalance the amount value is automatically reduced. - async orchidAddFunds( - funder: EthAddress, signer: EthAddress, addBalance: LotFunds, addEscrow: LotFunds, wallet: Wallet - ): Promise { - //return fakeTx(false); - - // Don't attempt to add more than the wallet balance. - // This mitigates the potential for rounding errors in calculated amounts. - const total: LotFunds = min(addBalance.add(addEscrow), wallet.fundsBalance); - console.log("Add funds signer: ", signer, " amount: ", (total.subtract(addEscrow)), " escrow: ", addEscrow); - - // Choose a gas price - let medianGasPrice: GasFunds = await this.getGasPrice(); - let gasPrice: number | undefined = GasPricingStrategy.chooseGasPrice( - OrchidContractV1.add_funds_total_max_gas, medianGasPrice, wallet.gasFundsBalance); - if (!gasPrice) { - console.log("addfunds: gas price potentially too low."); - } - - // 'adjust' specifies how much to move from balance to escrow (positive) - // or escrow to balance (negative) - // 'retrieve' specifies an amount to extract from balance to the funder address - let adjust = addEscrow.intValue; - let warn = BigInt.zero; - let retrieve = BigInt.zero; - - const thisCapture = this; - - async function doFundTx() { - return new Promise(function (resolve, reject) { - // function edit(address signer, int256 adjust, int256 warn, uint256 retrieve) { - thisCapture.lotteryContract.methods - .edit( - signer, adjust.toString(), warn.toString(), retrieve.toString(), - ).send({ - from: funder, - gas: OrchidContractV1.lottery_move_max_gas, - gasPrice: gasPrice, - value: total.intValue.toString(), - }) - .on("transactionHash", (hash: any) => { - console.log("Fund hash: ", hash); - OrchidAPI.shared().transactionMonitor.add( - new OrchidTransaction(new Date(), OrchidTransactionType.AddFunds, thisCapture.chainId, [hash])); - }) - .on('confirmation', (confirmationNumber: any, receipt: any) => { - console.log("Fund confirmation", confirmationNumber, JSON.stringify(receipt)); - // Wait for confirmations on the funding tx. - if (confirmationNumber >= thisCapture.requiredConfirmations) { - const hash = receipt['transactionHash']; - resolve(hash); - } else { - console.log("waiting for more confirmations..."); - } - }) - .on('error', (err: any) => { - console.log("Fund error: ", JSON.stringify(err)); - reject(err['message']); - }); - }); - } - - // The UI monitors the funding tx. - return doFundTx(); - } - - /// Transfer the int amount from the user to the specified directory address. - /// Amount won't exceed walletBalance. - async orchidStakeFunds( - funder: EthAddress, stakee: EthAddress, amount: LotFunds, wallet: Wallet, delay: BigInt - ): Promise { - throw Error("unimplemented") - } - - async orchidGetStake(stakee: EthAddress): Promise { - throw Error("unimplemented") - } - - evalOrchidTx(promise: PromiEvent, type: OrchidTransactionType): Promise { - return OrchidEthereumApiV0Impl.evalOrchidTx(promise, type, this.chainId); - } - - /// Move `amount` from balance to escrow, not exceeding `potBalance`. - async orchidMoveFundsToEscrow( - funder: EthAddress, signer: EthAddress, amount: LotFunds, potBalance: LotFunds): Promise { - - console.log(`moveFunds amount: ${amount.toString()}`); - - // Don't take more than the pot balance. This check mitigates rounding errors. - amount = min(amount, potBalance); - - // positive adjust moves from balance to escrow - const adjust = BigInt(amount.intValue); - const retrieve = BigInt.zero; - const warn = BigInt.zero; - - return this.evalOrchidTx( - this.lotteryContract.methods - .edit(signer, adjust.toString(), warn.toString(), retrieve.toString()) - .send({ - from: funder, - gas: OrchidContractV1.lottery_move_max_gas, - }), OrchidTransactionType.MoveFundsToEscrow - ); - } - - /// For v1 the target address must be the funder address or an error will be thrown. - async orchidWithdrawFunds( - funder: EthAddress, signer: EthAddress, targetAddress: EthAddress, amount: LotFunds, potBalance: LotFunds - ): Promise { - if (funder !== targetAddress) { - throw Error("orchdiWithdrawFunds: v1 contract target address must be funder."); - } - - // Don't take more than the pot balance. This check mitigates rounding errors. - amount = min(amount, potBalance); - console.log(`withdrawFunds to: ${targetAddress} amount: ${amount}`); - - const adjust = BigInt.zero; - const warn = BigInt.zero; - const retrieve = amount.intValue; - - // function edit(address signer, int256 adjust, int256 warn, uint256 retrieve) { - return this.evalOrchidTx( - this.lotteryContract.methods - .edit(signer, adjust.toString(), warn.toString(), retrieve.toString()) - .send({ - from: funder, - gas: OrchidContractV1.lottery_pull_amount_max_gas, - }), OrchidTransactionType.WithdrawFunds - ); - } - - /// For v1 the target address must be the funder address or an error will be thrown. - async orchidWithdrawFundsAndEscrow(pot: LotteryPot, targetAddress: EthAddress): Promise { - const funder = pot.signer.wallet.address; - const signer = pot.signer.address; - - if (funder !== targetAddress) { - throw Error("orchdiWithdrawFunds: v1 contract target address must be funder."); - } - - // adjust = negative escrow (move from escrow->balance) - const adjust = BigInt(pot.escrow.intValue).multiply(-1); - const retrieve = BigInt(pot.balance.add(pot.escrow).intValue); - const warn = BigInt.zero; - - return this.evalOrchidTx( - this.lotteryContract.methods - .edit(signer, adjust.toString(), warn.toString(), retrieve.toString()) - .send({ - from: funder, - gas: OrchidContractV1.lottery_pull_amount_max_gas, - }), OrchidTransactionType.WithdrawFunds - ); - } - - // "Warn" (unlock) the full escrow amount or whatever fraction of it remains un-warned. - // This starts the unlock / warn time period (one day in the future). - async orchidUnlock(pot: LotteryPot, funder: EthAddress, signer: EthAddress): Promise { - - const adjust = BigInt.zero; - const retrieve = BigInt.zero; - // warn amount is the full escrow minus already warned - const warn = BigInt(pot.escrow.intValue).subtract(pot.warned?.intValue ?? BigInt.zero); - console.log(`orchidLock: escrow = ${pot.escrow.floatValue}, warned = ${pot.warned?.floatValue}, to warn = ${warn.toJSNumber()}`) - - return this.evalOrchidTx( - this.lotteryContract.methods - .edit(signer, adjust.toString(), warn.toString(), retrieve.toString()) - .send({ - from: funder, - gas: OrchidContractV1.lottery_warn_max_gas - }), OrchidTransactionType.Unlock - ); - } - - // "Un-warn" (lock) the full warned (unlocked) amount. - async orchidLock(pot: LotteryPot, funder: EthAddress, signer: EthAddress): Promise { - const adjust = BigInt.zero; - const retrieve = BigInt.zero; - // warn amount is negative the currently warned amount - const warned = BigInt(pot.warned?.intValue ?? BigInt.zero); - const warn: BigInt = warned.multiply(BigInt(-1)); - console.log(`orchidUnock: warn = ${warn}`) - - return this.evalOrchidTx( - this.lotteryContract.methods - .edit(signer, adjust.toString(), warn.toString(), retrieve.toString()) - .send({ - from: funder, - gas: OrchidContractV1.lottery_lock_max_gas - }), OrchidTransactionType.Lock - ); - } - - /// Get the lottery pot balance and escrow amount for the specified address. - async orchidGetLotteryPot(funder: Wallet, signer: Signer): Promise { - // Allow overrides - let overrideBalance: LotFunds | null = this.fundsTokenType.fromString(getParam("balance")); - console.log("override balance = ", overrideBalance, getParam("balance")) - let overrideDeposit: LotFunds | null = this.fundsTokenType.fromString(getParam("deposit")); - //console.log("get lottery pot for signer: ", signer); - // function read(IERC20 token, address funder, address signer) external view - // returns (uint256, uint256) - let result = await this.lotteryContract.methods - .read(EthereumAddress.zeroString, funder.address, signer.address, - ).call({from: funder.address}); - if (result == null || result.length < 3) { - console.log("get lottery pot failed"); - throw new Error("Unable to get lottery pot"); - } - const escrow_amount = BigInt(result[0]); - let mask128 = BigInt(2).pow(128).minus(1); - const balance: LotFunds = overrideBalance || this.fundsTokenType.fromInt(escrow_amount.and(mask128)); - const deposit: LotFunds = overrideDeposit || this.fundsTokenType.fromInt(escrow_amount.shiftRight(BigInt(128))); - // console.log(`getlotterypot: escrow_amount = ${escrow_amount}, balance=${balance.intValue}, deposit=${deposit.intValue}`) - - const unlock_warned = BigInt(result[1]); - const unlock = unlock_warned.shiftRight(128); - console.log(`getlotterypot: warned = ${unlock}`) - const unlockDate: Date | null = unlock > 0 ? new Date(unlock * 1000) : null; - const warned = this.fundsTokenType.fromInt(unlock_warned.and(mask128)); - - console.log("Pot info: ", balance, "escrow: ", deposit, "unlock:", unlock, "warned: ", warned, "unlock date:", unlockDate); - return new LotteryPot(signer, balance, deposit, unlockDate, warned); - } - - // Exercise the reset account feature of the lotter_test_reset contract. - async orchidReset(funder: Wallet): Promise { - throw Error("unimplemented") - /* - return this.evalOrchidTx( - this.lottery.methods.reset(funder.address) - .send({ - from: funder.address, - gas: OrchidContractV1.lottery_move_max_gas, - }), OrchidTransactionType.Reset - ); - */ - } - - // The current median gas price for the past few blocks - async getGasPrice(): Promise { - return OrchidEthereumApiV0Impl.getGasPrice(this.gasTokenType, this.web3); - } - - getPricing(): Promise { - console.log("TESTING: FAKE PRICING!") - let pricing: Pricing = new Pricing( - this.fundsTokenType, - this.gasTokenType, - 1.0, - 1.0 - ); - return new Promise(async function (resolve, reject) { - await new Promise(resolve => setTimeout(resolve, 300)); - resolve(pricing); - }); - } - - get contractsOverridden(): boolean { - return OrchidContractV1.contracts_overridden(); - } - - get requiredConfirmations(): number { - if (this.chainInfo.isGanache) { - return 1 - } - return this.contractsOverridden ? 1 : 2 - }; - - async getAccountCreationGasRequired(): Promise { - let gasPrice = await this.getGasPrice(); - return gasPrice.multiply(OrchidContractV1.add_funds_total_max_gas); - }; - - async getLotteryUpdateEvents(funder: EthAddress, signer: EthAddress): Promise { - - let events = await this.lotteryContract.getPastEvents('Update', { - filter: {funder: funder, signer: signer}, - fromBlock: OrchidContractV1.startBlock, - toBlock: 'latest' - }); - - let txs: Transaction [] = await Promise.all( - events.map(e => { - return this.web3.eth.getTransaction(e.transactionHash) - })); - - let items = txs.map(tx => { - try { - let input: any = abiDecoder.decodeMethod(tx.input); - // console.log("input = ", input); - - if (input['name'] !== "move") { - return null; - } - // todo: handle more complex move operations - // The adjustments made between balance and escrow - let adjust_retrieve = input['params'][1]['value'] - if (!BigInt(adjust_retrieve).isZero()) { - return null; - } - if (!tx.blockNumber) { - return null; - } - - // The payable amount sent into the move operation - let amount = this.fundsTokenType.fromIntString(tx.value); - console.log("amount = ", amount); - - // todo: get the date from the block - // let block = await this.web3.eth.getBlock(tx.blockNumber) - let timestamp = new Date(0); - - return new LotteryPotUpdateEvent( - null, amount, null, null, - tx.blockNumber, timestamp, tx.gasPrice, tx.gas, tx.hash - ); - } catch (err) { - console.log("err parsing transaction = ", err); - return null; - } - }) - .filter((e) => { - return e !== null - }) as LotteryPotUpdateEvent [] - - return items; - } - - get marketConditions(): MarketConditionsSource { - return new MarketConditionsSourceImplV1(this) as MarketConditionsSource; - } -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/assets/add-outlined.svg b/web-ethereum/orchid_dapp/src/assets/add-outlined.svg deleted file mode 100644 index f0f6a84ae..000000000 --- a/web-ethereum/orchid_dapp/src/assets/add-outlined.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/add.svg b/web-ethereum/orchid_dapp/src/assets/add.svg deleted file mode 100644 index ab7d6b42a..000000000 --- a/web-ethereum/orchid_dapp/src/assets/add.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/ants.svg b/web-ethereum/orchid_dapp/src/assets/ants.svg deleted file mode 100644 index 4579f24c7..000000000 --- a/web-ethereum/orchid_dapp/src/assets/ants.svg +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/beaver1.svg b/web-ethereum/orchid_dapp/src/assets/beaver1.svg deleted file mode 100644 index 3a2fc7ea7..000000000 --- a/web-ethereum/orchid_dapp/src/assets/beaver1.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/bugs.png b/web-ethereum/orchid_dapp/src/assets/bugs.png deleted file mode 100644 index 0320ae0b80b9845694bde8d4017c0cf76c8e05f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140211 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 diff --git a/web-ethereum/orchid_dapp/src/assets/coinbase.jpg b/web-ethereum/orchid_dapp/src/assets/coinbase.jpg deleted file mode 100644 index 334202029056003e8c9cd25d62c51cdc41affdb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55265 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%0Afkr!lZN<$a}K-9eW_tmhkidpBC-|N6)CEd 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 diff --git a/web-ethereum/orchid_dapp/src/assets/more-outlined.svg b/web-ethereum/orchid_dapp/src/assets/more-outlined.svg deleted file mode 100644 index dcce1be63..000000000 --- a/web-ethereum/orchid_dapp/src/assets/more-outlined.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/more.svg b/web-ethereum/orchid_dapp/src/assets/more.svg deleted file mode 100644 index 60f628096..000000000 --- a/web-ethereum/orchid_dapp/src/assets/more.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/name-logo.svg b/web-ethereum/orchid_dapp/src/assets/name-logo.svg deleted file mode 100644 index a7c09d8e5..000000000 --- a/web-ethereum/orchid_dapp/src/assets/name-logo.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/orchid-token-purple.svg b/web-ethereum/orchid_dapp/src/assets/orchid-token-purple.svg deleted file mode 100644 index abc4f62ae..000000000 --- a/web-ethereum/orchid_dapp/src/assets/orchid-token-purple.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/overview-outlined.svg b/web-ethereum/orchid_dapp/src/assets/overview-outlined.svg deleted file mode 100644 index 5d62985c7..000000000 --- a/web-ethereum/orchid_dapp/src/assets/overview-outlined.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/overview.svg b/web-ethereum/orchid_dapp/src/assets/overview.svg deleted file mode 100644 index ce2f4f878..000000000 --- a/web-ethereum/orchid_dapp/src/assets/overview.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/wallet-logos/coinbasewallet.svg b/web-ethereum/orchid_dapp/src/assets/wallet-logos/coinbasewallet.svg deleted file mode 100644 index b0e089d30..000000000 --- a/web-ethereum/orchid_dapp/src/assets/wallet-logos/coinbasewallet.svg +++ /dev/null @@ -1 +0,0 @@ -coinbase-wallet \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/assets/wallet-logos/metamask.png b/web-ethereum/orchid_dapp/src/assets/wallet-logos/metamask.png deleted file mode 100644 index a1ed75571fb1f3c70619c3385125f2d44c448dd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6756 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 - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/assets/withdraw.svg b/web-ethereum/orchid_dapp/src/assets/withdraw.svg deleted file mode 100644 index e52b09a8f..000000000 --- a/web-ethereum/orchid_dapp/src/assets/withdraw.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/web-ethereum/orchid_dapp/src/components/AccountQRCode.css b/web-ethereum/orchid_dapp/src/components/AccountQRCode.css deleted file mode 100644 index 037258b0c..000000000 --- a/web-ethereum/orchid_dapp/src/components/AccountQRCode.css +++ /dev/null @@ -1,8 +0,0 @@ - -.qrcode canvas { - margin-bottom: 0; - border-style: solid; - border-radius: 16px; - border-width: 1px; - border-color: #E7EAF4; -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/components/AccountQRCode.tsx b/web-ethereum/orchid_dapp/src/components/AccountQRCode.tsx deleted file mode 100644 index dea94f4a3..000000000 --- a/web-ethereum/orchid_dapp/src/components/AccountQRCode.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import React, {useState} from "react"; -import {Button} from "react-bootstrap"; -import {copyTextToClipboard} from "../util/util"; -import {S} from "../i18n/S"; -import './AccountQRCode.css' - -const QRCode = require('qrcode.react'); - -export const AccountQRCode: React.FC<{ - data: string | null, -}> = (props) => { - const [revealed, setRevealed] = useState(false); - - function copyCode() { - if (props.data == null) { - return; - } - copyTextToClipboard(props.data); - } - - return ( -
-
-
- -
-
setRevealed(true)} - >{S.revealQR} -
-
- - - -
- ); -}; - diff --git a/web-ethereum/orchid_dapp/src/components/AddFunds.css b/web-ethereum/orchid_dapp/src/components/AddFunds.css deleted file mode 100644 index 7c77a5899..000000000 --- a/web-ethereum/orchid_dapp/src/components/AddFunds.css +++ /dev/null @@ -1,86 +0,0 @@ - -.total-row.nomargin { - margin-top: 0; -} - -.total-row label { - height: 22px; - font-size: 17px; - font-weight: 600; - font-stretch: normal; - font-style: normal; - line-height: 1.29; - letter-spacing: -0.41px; - color: #5f45ba; -} - -.divider { - margin-bottom: 16px; - margin-top: 8px; -} - -.modal-content { - border-radius: 13px; - padding: 16px; -} - -.submit-button button { - margin-top: 8px; - margin-bottom: 24px; - height: 36px; - width: 215px; -} - -.save-your-key { - margin-bottom: 16px; -} - -.save-your-key .title { - font-size: 14px; - font-weight: 700; - color: #5f45ba; -} - -.save-your-key .body { - font-size: 14px; - font-weight: 400; - color: #5f45ba; -} - -.funder-panel .warn { - color: #BE092A; -} - -.size-picker-button { - font-size: 56px; - font-weight: 700; - text-align: center; - color: #5F45BA; - border: none; - background-color: inherit; - cursor: pointer; - display: inline-block; - - /* make the button label text not selectable */ - -webkit-user-select: none; /* Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+/Edge */ - user-select: none; /* Standard */ -} - -/* Turn off the selected outline. */ -.size-picker-button:focus { - outline: 0; -} - -.size-picker-button:hover { - background-color: #5F45BA; - color: white; -} - -.size-picker-label { - font-size: 38px; - font-weight: 700; - text-align: center; - color: black -} diff --git a/web-ethereum/orchid_dapp/src/components/AddFunds.tsx b/web-ethereum/orchid_dapp/src/components/AddFunds.tsx deleted file mode 100644 index e32ea2896..000000000 --- a/web-ethereum/orchid_dapp/src/components/AddFunds.tsx +++ /dev/null @@ -1,813 +0,0 @@ -import React, {FC, useCallback, useContext, useEffect, useState} from "react"; -import { - Divider, - errorClass, useInterval, - Visibility -} from "../util/util"; -import {TransactionProgress, TransactionStatus} from "./TransactionProgress"; -import {SubmitButton} from "./SubmitButton"; -import {Col, Container, Modal, Row} from "react-bootstrap"; -import './AddFunds.css' -import {isEthAddress, LotteryPot, Signer, Wallet} from "../api/orchid-eth"; -import {S} from "../i18n/S"; -import {colorForEfficiency, EfficiencyMeter} from "./EfficiencyMeter"; -import {EfficiencySlider} from "./EfficiencySlider"; -import antsImage from '../assets/ants.svg' -import {AccountQRCode} from "./AccountQRCode"; -import {Route, RouteContext} from "./RouteContext"; -import {WalletProviderState} from "../api/orchid-eth-web3"; -import {OrchidLottery} from "../api/orchid-lottery"; -import {AccountRecommendation, MarketConditions} from "../api/orchid-market-conditions"; -import {EthAddress} from "../api/orchid-eth-types"; -import {max, LotFunds, GasFunds} from "../api/orchid-eth-token-types"; -import {AccountContext, ApiContext, WalletContext, WalletProviderContext} from "../index"; -import {Cancellable, makeCancellable} from "../util/async-util"; -import {Spacer} from "./Spacer"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export const CreateAccount: FC = () => { - return -} -export const AddFunds: FC = () => { - return -} - -interface AddOrCreateProps { - createAccount: boolean -} - -const AddOrCreate: FC = (props) => { - - // Create account state - const [newSignerAddress, setNewSignerAddress] = useState(null); - const [signerKeyError, setSignerKeyError] = useState(true); - - // Existing account state - const [potMarketConditions, setPotMarketConditions] = useState(null); - - // Form state: User entered values - const [userEnteredBalance, setUserEnteredBalance] = useState(null); - const [editingBalance, setEditingBalance] = useState(false); - const [userEnteredDeposit, setUserEnteredDeposit] = useState(null); - const [editingDeposit, setEditingDeposit] = useState(false); - const [userEnteredSizePickerValue, setUserEnteredSizePickerValue] = useState(null); - // TODO: We should probably do this for consistency: - //const [userEnteredEfficiencySliderValue, setUserEnteredEfficiencySliderValue] = useState(null); - - const [sizePickerValue, setSizePickerValue] = useState(null); - - // Form state: Controlled values - // TODO: addXXX is derived state that can be removed now. - const [addBalance, setAddBalance] = useState(null); - const [addDeposit, setAddDeposit] = useState(null); - const [balanceError, setBalanceError] = useState(props.createAccount); - const [escrowError, setEscrowError] = useState(props.createAccount); - const [tx, setTx] = useState(new TransactionStatus()); - const txResult = React.createRef(); - - const [efficiencySliderValue, setEfficiencySliderValue] = useState(null); - const [accountRecommendation, setAccountRecommendation] = useState(null); - const [showSignerAddressInstructions, setShowSignerAddressInstructions] = useState(false); - const [generatedSigner, setGeneratedSigner] = useState(null); - const [generatingSigner, setGeneratingSigner] = useState(false); - - - // Contexts - let {setRoute} = useContext(RouteContext); - let {fundsToken, gasToken} = useContext(WalletProviderContext); - let api = useContext(ApiContext); - let wallet = useContext(WalletContext); - let pot = useContext(AccountContext); - - // Initialization - useEffect(() => { - // Default to recommended efficiency for create - let cancellablePromises: Array = []; - if (props.createAccount) { - (async () => { - try { - if (api.eth) { - setAccountRecommendation( - await makeCancellable(api.eth.marketConditions.recommendedAccountComposition(), cancellablePromises).promise); - setEfficiencySliderValue(api.eth.marketConditions.recommendationEfficiency * 100) - } - } catch (err) { - if (err.isCanceled) { - //console.log("addfunds: fetch recommended account cancelled") - } else { - console.log("addfunds: unable to fetch recommended account composition") - } - } - })(); - } - - return () => { - cancellablePromises.forEach(p => p.cancel()); - }; - }, [api.eth, props.createAccount]); - - // return the current user balance/escrow ratio or zero if undefined - const currentPotRatio: () => number = useCallback(() => { - if (!pot?.balance || !pot.escrow || pot.escrow.isZero()) { - return 0 - } - // escrow is two face values - return Math.floor(pot.balance.floatValue / ((pot.escrow.floatValue) / 2)); - }, [pot]); - - // Update market conditions for the current account (if any) - // (This is wrapped in useCallback to allow it to be used from both useInterval and useEffect below.) - const fetchMarketConditions = useCallback(async () => { - //console.log("addfunds: fetch market conditions"); - if (pot == null) { - setPotMarketConditions(null); - return; - } - // TODO: This needs to be cancellable (have it return the promise) - // Market conditions for prospective pot composition - if (api.eth) { - const mc = await api.eth.marketConditions.forBalance(pot.balance, pot.escrow); - setPotMarketConditions(mc); - - // Default the efficiency picker for the user's current account - if (efficiencySliderValue == null) { - //console.log("addfunds: setting efficiency slider") - setEfficiencySliderValue(mc?.efficiency * 100 ?? 0) - } - } - - // Default the size ratio picker for the user's current account if reasonable - if (sizePickerValue == null) { - const current: number = currentPotRatio() - setSizePickerValue(current <= OrchidLottery.maxPrecomputedEFRatio ? current : 1) - } - }, [currentPotRatio, api.eth, pot, efficiencySliderValue, sizePickerValue]); - - - // Fetch market conditions when the pot changes - useEffect(() => { - fetchMarketConditions().then().catch(e => { - }); - }, [fetchMarketConditions, pot]) - - // Fetch market conditions periodically - useInterval(() => { - fetchMarketConditions().then().catch(e => { - }); - }, 15000); - - // Update account composition recommendation on user changes to the efficiency and size pickers, - // using the user's current balance and deposit as a floor on the recommendation. - // (desired efficiency, desired size ratio) => nominal recommendation - // recommendation = max(nominal recommendation, user pot values) - useEffect(() => { - if (!gasToken) { - setAccountRecommendation(null); - return; - } - const minEfficiencyChange = 3.0; // perc - - // TODO: throttle this - (async () => { - if (!api.eth) { - return; - } - // Get the account recommendation for the efficiency and size picker values - let recommendation: AccountRecommendation - try { - let marketConditions = api.eth.marketConditions; - recommendation = await marketConditions.getAccountRecommendation( - ( - (efficiencySliderValue && efficiencySliderValue > 0 ? efficiencySliderValue : null) - ?? (marketConditions.recommendationEfficiency * 100.0)) / 100.0, - (userEnteredSizePickerValue ?? sizePickerValue) ?? marketConditions.recommendationBalanceFaceValues - ) - } catch (err) { - console.log("addfunds: unable to fetch market conditions: ", err) - return; - } - - // If we don't have an account yet just go with the recommended values - if (pot == null || efficiencySliderValue == null || sizePickerValue == null || potMarketConditions == null) { - setAccountRecommendation(recommendation); - return; - } - - // We have an account so take into account current balances in the recommendation. - const minChange = - Math.abs(efficiencySliderValue - potMarketConditions.efficiency * 100) < minEfficiencyChange - && (userEnteredSizePickerValue ?? sizePickerValue) === currentPotRatio(); - if (minChange) { - // We are within the min efficiency change just put the original values back. - setAccountRecommendation(new AccountRecommendation(pot.balance, pot.escrow, gasToken.zero)); - } else { - // recommend the higher of recommended or current balances - setAccountRecommendation( - new AccountRecommendation( - max(recommendation.balance, pot.balance), - max(recommendation.deposit, pot.escrow), - recommendation.txGasFundsRequired) - ); - } - })(); - }, [currentPotRatio, api.eth, efficiencySliderValue, sizePickerValue, userEnteredSizePickerValue, pot, potMarketConditions, gasToken]) - - // Handle user entered balance and deposit values updating the efficiency slider and size picker to match. - // user entered values, account recommendation => slider value, picker value - // TODO: The "add" amounts are derived state that we can get rid of now. - useEffect(() => { - if (!fundsToken) { - setAddBalance(null) - setAddDeposit(null) - return; - } - const zero = fundsToken.zero; - - if (userEnteredBalance != null) { - // We have a user entered desired balance amount - setAddBalance( - max(zero, userEnteredBalance.subtract(pot?.balance ?? zero)) - ); - } else { - // Use the recommendation - if (accountRecommendation != null) { - setAddBalance( - max(zero, accountRecommendation.balance.subtract(pot?.balance ?? zero)) - ); - } else { - setAddBalance(null); - } - } - - if (userEnteredDeposit != null) { - // We have a user entered desired deposit amount - setAddDeposit( - max(zero, userEnteredDeposit.subtract(pot?.escrow ?? zero)) - ); - } else { - if (accountRecommendation != null) { - setAddDeposit( - max(zero, accountRecommendation.deposit.subtract(pot?.escrow ?? zero)) - ); - } else { - setAddDeposit(null); - } - } - - // Update efficiency slider for the new values - if (userEnteredBalance != null || userEnteredDeposit != null) { - let newBalance: LotFunds = userEnteredBalance ?? (accountRecommendation?.balance ?? zero); - let newDeposit: LotFunds = userEnteredDeposit ?? (accountRecommendation?.deposit ?? zero); - (async () => { - if (api.eth) { - const mc = await api.eth.marketConditions.forBalance(newBalance, newDeposit); - //console.log("update slider for user entered values: ", newBalance, newDeposit, mc.efficiency * 100); - setEfficiencySliderValue(mc.efficiency * 100) - } - })(); - } - - // Update the size picker for the new values - if (!userEnteredSizePickerValue && pot) { - const balance = userEnteredBalance || pot.balance - const deposit = userEnteredDeposit || pot.escrow - const value = Math.floor(balance.floatValue / ((deposit.floatValue) / 2)); - setSizePickerValue(value <= OrchidLottery.maxPrecomputedEFRatio ? value : 1) - } - - }, [api.eth, fundsToken, userEnteredBalance, userEnteredDeposit, userEnteredSizePickerValue, accountRecommendation, pot]) - - // Validate the balance and deposit form fields - useEffect(() => { - if (!fundsToken) { - return; - } - const zero = fundsToken.zero; - let walletBalance: LotFunds = wallet?.fundsBalance ?? zero; - // console.log("validate: ", addAmount, addEscrow) - - let totalSpend: LotFunds = (addBalance || zero).add(addDeposit || zero); - - // console.log("total spend = ", BigInt(totalSpend) / 1e18) - let overSpend = totalSpend.gt(walletBalance); - setBalanceError(overSpend); - setEscrowError(overSpend); - }, [fundsToken, wallet, addBalance, addDeposit]) - - async function submitAddFunds() { - if (!wallet || !fundsToken || !api.eth) { - return; - } - const zero = fundsToken.zero; - let walletAddress = wallet.address; - console.log("submit add funds: ", walletAddress, addBalance, addDeposit); - let signerAddress = - props.createAccount ? - (generatedSigner?.address ?? newSignerAddress) - : (api.signer.value?.address) - - if (walletAddress == null || signerAddress == null) { - return; - } - if (props.createAccount && (addBalance == null || addDeposit == null)) { - return; - } - - setRoute(props.createAccount ? Route.CreateAccount : Route.AddFunds); // Keep the user on this page until further navigation - setTx(TransactionStatus.running()); - if (txResult.current != null) { - txResult.current.scrollIntoView(); - } - try { - const amount = addBalance ?? zero; - const deposit = addDeposit ?? zero - let txId = await api.eth.orchidAddFunds(walletAddress, signerAddress, amount, deposit, wallet); - - if (props.createAccount) { - await api.updateSigners(); - } else { - await api.updateLotteryPot(); - } - setTx(TransactionStatus.result(txId, S.transactionComplete)); - api.updateWallet().then().catch(e => { - }); - api.updateTransactions().then(); - } catch (err) { - setTx(TransactionStatus.error(`${S.transactionFailed}: ${err}`)); - throw err - } - } - - // Handle user input in the signer key field - function signerKeyInputChanged(e: any) { - setGeneratedSigner(null) - const address = e.currentTarget.value - const valid = isEthAddress(address) - setNewSignerAddress(valid ? address : null) - setSignerKeyError(!valid) - } - - // Generate a new signer for the user - async function generateSigner() { - setGeneratingSigner(true) - // defer this expensive operation a bit so that the button can show the disabled state. - setTimeout(() => { - if (wallet == null) { - return - } - console.log("set interval") - if (!api.eth) { - return - } - const signer = api.eth.orchidCreateSigner(wallet) - setGeneratedSigner(signer) - setGeneratingSigner(false) - }, 500); - setSignerKeyError(false) - } - - // useTraceUpdate( - // [currentPotRatio, api.eth, efficiencySliderValue, sizePickerValue, pot, potMarketConditions, gasToken] - // ); - - /// - /// Render - /// - - let totalSpend: LotFunds | null = addBalance && addDeposit ? addBalance.add(addDeposit) : null; - let submitEnabled = - wallet !== null - && !tx.isRunning - && !(balanceError || escrowError) - && (addBalance != null || addDeposit != null) - && (totalSpend?.gtZero() ?? false) - // create account needs a signer key - && !(props.createAccount && signerKeyError) - // need pot info unless we are creating an account - && (pot != null || props.createAccount) - ; - - let newBalanceStr = userEnteredBalance?.toFixedLocalized() - ?? (accountRecommendation?.balance?.toFixedLocalized() ?? null) - let newDepositStr = userEnteredDeposit?.toFixedLocalized() - ?? (accountRecommendation?.deposit.toFixedLocalized() ?? null) - - const maxEfficiency = 99.0; - let totalFundsRequired: LotFunds | null = (addBalance != null && addDeposit != null) ? - addBalance.add(addDeposit) : null - - const estGas: GasFunds | null = - (totalFundsRequired === null || totalFundsRequired.isZero()) - ? (gasToken?.zero ?? null) - : (accountRecommendation?.txGasFundsRequired ?? null) - - const warnFunds = - (fundsToken && (wallet?.fundsBalance ?? fundsToken.zero).lt(totalFundsRequired ?? fundsToken.zero)) ?? false - const warnGas = - (gasToken && (wallet?.gasFundsBalance ?? gasToken.zero).lt(accountRecommendation?.txGasFundsRequired ?? gasToken.zero)) ?? false - - let provider = api.provider; - let walletConnected = provider.walletStatus.value.state === WalletProviderState.Connected - let generateSignerEnabled = !generatingSigner && walletConnected - - return ( - - - - {props.createAccount ? - /*New Account Signer Address*/ - setShowSignerAddressInstructions(true)} - generatedSigner={generatedSigner} - enabled={generateSignerEnabled} - generateSigner={generateSigner} - /> - : - /*Existing Orchid Account*/ - - } - - - - {/*funder wallet*/} - - - - {/*efficiency picker*/} - - - - { - // Clear the user entered values and set the slider value - setUserEnteredBalance(null); - setUserEnteredDeposit(null); - setEfficiencySliderValue(Math.min(parseFloat(changeEvent.target.value), maxEfficiency)); - }}/> - - {/*deposit field*/} - - - - - - { - setUserEnteredDeposit( - (fundsToken?.fromString(e.currentTarget.value) ?? fundsToken?.zero) ?? null); - // When the user enters one value adopt the corresponding pot value - // if (!userEnteredBalance && accountRecommendation?.balance) { - // setUserEnteredBalance(accountRecommendation?.balance ?? null) - // } - }} - type={editingDeposit ? "number" : undefined} - value={editingDeposit ? undefined : newDepositStr ?? fundsToken?.zero.toFixedLocalized()} - onFocus={(e) => setEditingDeposit(true)} - onBlur={(e) => setEditingDeposit(false)} - /> - - - - {/*deposit instructions*/} -

- {S.yourDepositSecuresAccessInstruction} {/*efficiencyText*/} -

- - - - - - - {/*size picker*/} - { - setUserEnteredBalance(null) - setUserEnteredSizePickerValue(size) - }} - /> - -

- This ratio limits the number of payments that can be made with the account and - affects its longevity, subject to both the random nature of the payment system - and market conditions. -

- - {/*balance field*/} - - - - - - { - setUserEnteredSizePickerValue(null) - setUserEnteredBalance( - (fundsToken?.fromString(e.currentTarget.value) ?? fundsToken?.zero) ?? null); - // When the user enters a balance value adopt the corresponding pot value - if (!userEnteredDeposit && accountRecommendation?.deposit) { - setUserEnteredDeposit(accountRecommendation?.deposit ?? null) - } - return true; - }} - type={editingDeposit ? "number" : undefined} - value={editingBalance ? undefined : newBalanceStr ?? fundsToken?.zero.toFixedLocalized()} - onFocus={(e) => setEditingBalance(true)} - onBlur={(e) => setEditingBalance(false)} - /> - - - - - - {/*Totals*/} - - - - - -
{ - totalFundsRequired?.toFixedLocalized() ?? "..." - }
- -
- - - - - -
{estGas?.toFixedLocalized() ?? "..."}
- -
- - - submitAddFunds()} enabled={submitEnabled}> - {props.createAccount ? S.createAccount : S.addFunds} - - - - - setShowSignerAddressInstructions(false)} - /> -
- ); -}; - -function OrchidAccountPanel(props: { pot: LotteryPot | null, marketConditions: MarketConditions | null }) { - return <> - - - {/*balance*/} - - - - - -
- {props.pot?.balance.toFixedLocalized() ?? "..."} -
- -
- {/*deposit*/} - - - - - -
- {props.pot?.escrow.toFixedLocalized() ?? "..."} -
- -
- {/*efficiency meter*/} - - - - - - - - - - - ; -} - -function FunderWalletPanel(props: { - wallet: Wallet | null, - warnFunds: boolean, - warnGas: boolean, - singleToken: boolean -}) { - let {fundsToken: funds, gasToken: gas} = useContext(WalletProviderContext); - - let fundTypesText: string | null = null; - if (props.warnFunds && !props.warnGas) { - fundTypesText = funds?.symbol ?? "funds" - } - if (!props.warnFunds && props.warnGas) { - fundTypesText = gas?.symbol ?? "funds" - } - if (props.warnFunds && props.warnGas) { - if (funds?.symbol && gas?.symbol) { - fundTypesText = `${funds.symbol} and ${gas.symbol}` - } else { - fundTypesText = "funds" - } - } - const warning: string | null = fundTypesText ? - "You'll need additional " + fundTypesText + " to complete a transaction." : null - - return <> -
- - - -
- {props.wallet?.address ?? "..."} -
- -
- - - -
- {props.wallet?.fundsBalance.toFixedLocalized() ?? "..."}
- -
- - - -
- {props.wallet?.gasFundsBalance.toFixedLocalized() ?? "..."} -
- -
- {fundTypesText ?

{warning}

: ""} -
- ; -} - -function SignerAddressInstructions(props: any) { - return ( - - - What is a signer address? - - -

- The signer address refers to one part of a key-pair that the Orchid app uses to pay for - decentralized service. The Orchid app requires the signer key to sign valid payments, and - Orchid DApp requires the signer address to store on-chain with account's funds. -

-

- You can generate the signer in the DApp, and then scan it into the app by linking the - account. You can also generate the signer in the app (Android only) and then paste in the - signer address into the DApp when you create and fund the account on-chain. -

-
- {"ants"} -
-
-
- ); -} - -// TODO: The state we have to pass in here is kind of ridiculous. -// TODO: Should we make this a memoized function in the render function so that it has access -// TODO: to the state? That function is already too large... -function NewAccountPanel(props: { - signerKeyError: boolean, - signerKeyChange: (e: any) => void, - showSignerAddressInstructions: () => void, - generateSigner: () => void, - enabled: boolean, - generatedSigner: Signer | null, -}) { - // const [editing, setEditing] = useState(false); - return <> - - - - - - - - setEditing(true)} - // onBlur={(e)=>setEditing(false)} - /> - - - - - - - {"Generate Signer"} - - - - - {/*generated signer pane*/} - - {/*save instructions */} -
-

- Save your key now! -

-

- Browser memory is volatile and this signer key is not stored securely. Open up the Orchid - app - and link this account now, or copy & paste the account keys somewhere safe. -

-
- - {/*account QR Code*/} - -
- -} - -function SizePicker(props: { - value: number, min: number, max: number, - label: string, - sizeChanged: (size: number) => void -}) { - return - - - - { - // props.value >= props.min && props.value <= props.max ? props.label : "..." - props.label - } - - - - ; -} diff --git a/web-ethereum/orchid_dapp/src/components/DebugPanel.css b/web-ethereum/orchid_dapp/src/components/DebugPanel.css deleted file mode 100644 index 5e2c0807a..000000000 --- a/web-ethereum/orchid_dapp/src/components/DebugPanel.css +++ /dev/null @@ -1,17 +0,0 @@ - -.DebugPanel-container { - border: 1px solid gray; - padding: 5px; - max-height: 450px; - min-height: 100px; - overflow-x: auto; - overflow-y: scroll; - margin-top: 5px; -} - -.DebugPanel-log { - width: 100%; - color: gray; - font-size: 8pt; - font-family: monospace -} diff --git a/web-ethereum/orchid_dapp/src/components/DebugPanel.tsx b/web-ethereum/orchid_dapp/src/components/DebugPanel.tsx deleted file mode 100644 index 46d08942f..000000000 --- a/web-ethereum/orchid_dapp/src/components/DebugPanel.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from "react"; -import './DebugPanel.css' -import {OrchidAPI} from "../api/orchid-api"; -import {Container} from "react-bootstrap"; -import {SubmitButton} from "./SubmitButton"; -import {S} from "../i18n/S"; - -export const DebugPanel: React.FC = () => { - let api = OrchidAPI.shared(); - function doReset() { - let wallet = api.wallet.value - if (!api.eth || !wallet) { return; } - api.eth.orchidReset(wallet).then(); - } - let resetOption =
; - // If we are on a test contract offer the reset button - if (api.eth?.contractsOverridden) { - resetOption = ( - {doReset()}} enabled={true}>{S.resetAccount} - ); - } - return ( -
- - -
-
-
-
-
-
-

- -

- {resetOption} -

- ); -}; - diff --git a/web-ethereum/orchid_dapp/src/components/EfficiencyMeter.tsx b/web-ethereum/orchid_dapp/src/components/EfficiencyMeter.tsx deleted file mode 100644 index c69174a11..000000000 --- a/web-ethereum/orchid_dapp/src/components/EfficiencyMeter.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React, {FC} from "react"; -import {Visibility} from "../util/util"; -import {Col, Row} from "react-bootstrap"; -import ProgressLine from "./ProgressLine"; -import {MarketConditions} from "../api/orchid-market-conditions"; - -export function colorForEfficiency(efficiency: number | null): string { - if (efficiency == null) { return 'grey'} - - if (efficiency <= 0.2) { - return "#BE092A"; - } - if (efficiency > 0.2 && efficiency <= 0.6) { - return"#FFD147"; - } - return 'green'; -} - -export const EfficiencyMeter: FC<{ marketConditions: MarketConditions | null }> - = (props) => { - - let marketConditions = props.marketConditions; - let efficiencyPerc: string = marketConditions?.efficiencyPerc() ?? ""; - let efficiencyColor: string = colorForEfficiency(marketConditions?.efficiency ?? 0) - - return ( -
- {/**/} -
- -
-
{efficiencyPerc}
-
- ); -} - -export const EfficiencyMeterRow: FC<{ marketConditions: MarketConditions | null, label?: string }> - = (props) => { - return ( - - - - - - - - - - - ); -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/components/EfficiencySlider.css b/web-ethereum/orchid_dapp/src/components/EfficiencySlider.css deleted file mode 100644 index 0c55f8e5f..000000000 --- a/web-ethereum/orchid_dapp/src/components/EfficiencySlider.css +++ /dev/null @@ -1,55 +0,0 @@ - -/* Range Slider */ - -.efficiency-slider { - margin-top: 15px; -} - -/* Don't combine -webkit and -moz below because one is always invalid. */ -/* Webkit */ -.efficiency-slider input[type="range"].range-slider.range-slider--lg::-webkit-slider-thumb { - height: 20px; - width: 20px; - background: #5F45BA; - margin-top: -7px; - border-radius: 50%; -} -/* Webkit */ -.efficiency-slider input[type="range"].range-slider.range-slider--lg::-moz-range-thumb { - height: 20px; - width: 20px; - background: #5F45BA; - margin-top: -7px; - border-radius: 50%; -} - -/* Tooltip */ -.efficiency-slider .range-slider__tooltip__label { - background-color: #5F45BA !important; - border-radius: 1.0rem !important; - opacity: 1 !important; - padding: 0 0.4rem !important; - margin-top: 4px; -} -/* Tooltip arrow */ -.efficiency-slider .range-slider__wrap .range-slider__tooltip .range-slider__tooltip__arrow { - opacity: 1 !important; -} -.efficiency-slider .range-slider__tooltip__arrow::before { - margin-top: 2px; - border-top-color: #5F45BA !important; -} - - -.efficiency-slider.faded input[type="range"].range-slider.range-slider--lg::-webkit-slider-thumb { - background: #777777; -} -.efficiency-slider.faded input[type="range"].range-slider.range-slider--lg::-moz-range-thumb { - background: #777777; -} -.efficiency-slider.faded .range-slider__tooltip__label { - background-color: #777777 !important; -} -.efficiency-slider.faded .range-slider__tooltip__arrow::before { - border-top-color: #777777 !important; -} diff --git a/web-ethereum/orchid_dapp/src/components/EfficiencySlider.tsx b/web-ethereum/orchid_dapp/src/components/EfficiencySlider.tsx deleted file mode 100644 index e2da1112b..000000000 --- a/web-ethereum/orchid_dapp/src/components/EfficiencySlider.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import {Col, Row} from "react-bootstrap"; -import RangeSlider from "react-bootstrap-range-slider"; -import React from "react"; -import 'react-bootstrap-range-slider/dist/react-bootstrap-range-slider.css'; -// import '../css/react-bootstrap-range-slider.css'; -import './EfficiencySlider.css' - -export function EfficiencySlider(props: { - value: number | null, minValue?: number, - onChange: (changeEvent: any) => void, - faded?: boolean, - enabled?: boolean -}) { - const value = Math.round(props.value ?? 0); - const disabledClass = (value === null) ? " disabled" : ""; - const fadedClass = (props.faded === true) ? " faded" : ""; - return
- { - if (parseFloat(e.currentTarget.value) >= (props.minValue ?? 0)-0.5) { - props.onChange(e) - } - }} - tooltip={"on"} - tooltipPlacement={"top"} - tooltipLabel={(value) => { - return {value} - }} - variant={"secondary"} - />
-} - -export function EfficiencySliderRow(props: { value: number, onChange: (changeEvent: any) => void }) { - return - - - { - return {value} - }} - variant={"secondary"} - /> - - ; -} diff --git a/web-ethereum/orchid_dapp/src/components/Header.css b/web-ethereum/orchid_dapp/src/components/Header.css deleted file mode 100644 index d4329fbd1..000000000 --- a/web-ethereum/orchid_dapp/src/components/Header.css +++ /dev/null @@ -1,24 +0,0 @@ - -.header-balance { - margin-top: 5px; - font-size: 11px; - font-weight: normal; - font-stretch: normal; - font-style: normal; - line-height: 1.18; - letter-spacing: 1px; - text-align: right; - color: #3a3149; -} - - -.header-balance-value { - font-size: 15px; - font-weight: bold; - font-stretch: normal; - font-style: normal; - line-height: 1.33; - letter-spacing: -0.24px; - text-align: right; - color: #3a3149; -} diff --git a/web-ethereum/orchid_dapp/src/components/Header.tsx b/web-ethereum/orchid_dapp/src/components/Header.tsx deleted file mode 100644 index 001dd48f0..000000000 --- a/web-ethereum/orchid_dapp/src/components/Header.tsx +++ /dev/null @@ -1,199 +0,0 @@ -import React, {useContext, useEffect, useState} from "react"; -import logo from '../assets/name-logo.svg' -import tokenLogo from '../assets/orchid-token-purple.svg' -import { - Col, - Container, - ListGroup, - ListGroupItem, - OverlayTrigger, - Popover, - Row -} from "react-bootstrap"; -import './Header.css'; -import {OrchidAPI} from "../api/orchid-api"; -import {Signer} from "../api/orchid-eth"; -import {Route, RouteContext} from "./RouteContext"; -import {S} from "../i18n/S"; -import {Subscription} from "rxjs"; -import {WalletProviderState} from "../api/orchid-eth-web3"; -import {LotFunds} from "../api/orchid-eth-token-types"; -import {AccountContext, WalletProviderContext} from "../index"; -import {ChainInfo} from "../api/chains/chains"; - -export const Header: React.FC = () => { - const [newUser, setNewUser] = useState(undefined); - const [signers, setSigners] = useState(null); - const [connecting, setConnecting] = useState(false); - - let pot = useContext(AccountContext); - let fundsBalance = pot?.balance; - let walletStatus = useContext(WalletProviderContext); - //let {fundsToken, gasToken} = walletStatus; - - useEffect(() => { - let subscriptions: Subscription [] = []; - let api = OrchidAPI.shared(); - subscriptions.push(api.newUser.subscribe(setNewUser)); - subscriptions.push(api.signersAvailable.subscribe(setSigners)); - return () => { - subscriptions.forEach(sub => { - sub.unsubscribe() - }) - }; - }, []); - - let showAccountSelector = !newUser && fundsBalance; - //if (walletStatus) { console.log("header: wallet connection status: ", WalletProviderState[walletStatus.state], walletStatus.account); } - let showConnectButton = !showAccountSelector - //&& (walletStatus?.state === WalletProviderState.NoWalletProvider || walletStatus?.state === WalletProviderState.NotConnected) - && (walletStatus?.state === WalletProviderState.NoWalletProvider); - let showNewAccount = !showAccountSelector && walletStatus.state === WalletProviderState.Connected; - return ( - - - - {/*Logo*/} - - Orchid Account - - - {/*right column*/} - - - {/*Account / Balance*/} - { - showAccountSelector ? - : null - } - { - showNewAccount ? New Account : null - } - { - showConnectButton ? - { - setConnecting(true); - OrchidAPI.shared().provider.connect(true).finally(() => { - setConnecting(false); - }); - }}/> - : null - } - - - {/*show chain info*/} - - - {walletStatus.chainInfo?.name ?? ""} - - - - - - ); -}; - -function AccountSelector(props: { - signers: Signer [], fundsBalance: LotFunds | null, chainInfo: ChainInfo | null -}) { - let {setRoute} = useContext(RouteContext); - return ( - - {/*Select Account*/} - document.body.click()}> - - { - props.signers.map((signer: Signer) => { - let len = signer.address.length; - let address = signer.address.substring(0, 4) + "..." + signer.address.substring(len - 5, len); - return { - let api = OrchidAPI.shared(); - let wallet = api.wallet.value; - if (!wallet) { - return; - } - console.log("Account selector chose signer: ", signer.address); - api.signer.next(new Signer(wallet, signer.address)) - }} - key={signer.address}> - {S.account}: {address} - - }) - } - { - setRoute(Route.CreateAccount); - }} - key={"new-item"} - style={{ - fontWeight: 'bold', - backgroundColor: 'transparent' - }}> - {S.createNewAccount} - - { - // disconnect - OrchidAPI.shared().provider.disconnect() - }} - key={"disconnect-item"} - style={{ - fontWeight: 'bold', - backgroundColor: 'transparent' - }}> - {"Disconnect"} - - - - - }> -
- - {/*{props.chainInfo?.name ?? ""}*/} -
-
- ); -} - -function AccountBalance(props: { fundsBalance: LotFunds | null }) { - return ( - - - - -
{S.balanceCaps}
-
{props.fundsBalance?.formatCurrency() ?? ""}
- - - Orchid Account - -
- -
- ); -} - -function ConnectButton(props: { disabled: boolean, onClick: () => void }) { - return
- -
; -} diff --git a/web-ethereum/orchid_dapp/src/components/Info.css b/web-ethereum/orchid_dapp/src/components/Info.css deleted file mode 100644 index 9c1d7293b..000000000 --- a/web-ethereum/orchid_dapp/src/components/Info.css +++ /dev/null @@ -1,7 +0,0 @@ - -.Balances { -} - -.Balances-bold { - font-weight: bold -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/components/Info.tsx b/web-ethereum/orchid_dapp/src/components/Info.tsx deleted file mode 100644 index 44262af7c..000000000 --- a/web-ethereum/orchid_dapp/src/components/Info.tsx +++ /dev/null @@ -1,255 +0,0 @@ -import React, {Component, useContext} from 'react'; -import {OrchidAPI} from "../api/orchid-api"; -import {LockStatus} from "./LockStatus"; -import {errorClass, Visibility} from "../util/util"; -import './Info.css' -import {Button, Col, Container, Row} from "react-bootstrap"; -import {Subscription} from "rxjs"; -import {AccountQRCode} from "./AccountQRCode"; -import {S} from "../i18n/S"; -import {EfficiencyMeterRow} from "./EfficiencyMeter"; -import {Spacer} from "./Spacer"; -import {AccountRecommendation} from "../api/orchid-market-conditions"; -import {WalletProviderContext} from "../index"; -import {WalletProviderStatus} from "../api/orchid-eth-web3"; -import {CancellablePromise, makeCancellable} from "../util/async-util"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export function Info() { - let walletContext: WalletProviderStatus = useContext(WalletProviderContext); - return -} - -export class InfoImpl extends Component<{ - walletContext: WalletProviderStatus -}, any> { - state = { - signerAddress: "", - signerConfigString: null, - walletAddress: "", - gasBalance: "", - gasBalanceError: true, - lotBalance: "", - lotBalanceError: true, - potBalance: "", - potEscrow: "", - accountRecommendationBalanceMin: null, - accountRecommendationBalance: null, - accountRecommendationDepositMin: null, - accountRecommendationDeposit: null, - marketConditions: null - }; - subscriptions: Subscription [] = []; - cancellablePromises: Array> = []; - walletAddressInput = React.createRef(); - signerAddressInput = React.createRef(); - - componentDidMount(): void { - let api = OrchidAPI.shared(); - - this.subscriptions.push( - api.signer.subscribe(signer => { - this.setState({ - signerAddress: signer != null ? signer.address : "", - signerConfigString: signer != null ? signer.toConfigString() : null - }); - })); - - this.subscriptions.push( - api.wallet.subscribe(wallet => { - this.setState({ - walletAddress: wallet?.address ?? "", - gasBalance: wallet?.gasFundsBalance.toFixedLocalized(4) ?? "", - gasBalanceError: wallet?.gasFundsBalance.lteZero() ?? false, - lotBalance: wallet?.fundsBalance.toFixedLocalized(4) ?? "", - lotBalanceError: wallet?.fundsBalance.lteZero() ?? false, - }); - })); - - this.subscriptions.push( - api.lotteryPot.subscribe(pot => { - if (!pot) { - this.setState({ - potBalance: "", - potEscrow: "", - marketConditions: null - }); - } else { - this.setState({ - potBalance: pot.balance.toFixedLocalized(4), - potEscrow: pot.escrow.toFixedLocalized(4), - }); - try { - if (api.eth) { - api.eth.marketConditions.for(pot).then(marketConditions => { - this.setState({marketConditions: marketConditions}); - }); - } else { - this.setState({marketConditions: null}); - } - } catch (err) { - console.log(err) - } - } - })); - - (async () => { - if (!api.eth) { - return - } - try { - let minViableAccountRecommendation = - await makeCancellable(api.eth.marketConditions.minViableAccountComposition(), this.cancellablePromises).promise; - let accountRecommendation = - await makeCancellable(api.eth.marketConditions.recommendedAccountComposition(), this.cancellablePromises).promise; - this.setState({ - accountRecommendationBalanceMin: minViableAccountRecommendation.balance.toFixedLocalized(), - accountRecommendationDepositMin: minViableAccountRecommendation.deposit.toFixedLocalized(), - accountRecommendationBalance: accountRecommendation.balance.toFixedLocalized(), - accountRecommendationDeposit: accountRecommendation.deposit.toFixedLocalized() - }); - } catch (err) { - console.log("unable to fetch min viable account info: ", err) - } - })(); - } - - componentWillUnmount(): void { - this.cancellablePromises.forEach(p => p.cancel()); - this.subscriptions.forEach(sub => { - sub.unsubscribe() - }) - } - - copyWalletAddress() { - if (this.walletAddressInput.current == null) { - return; - } - this.walletAddressInput.current.select(); - document.execCommand('copy'); - }; - - copySignerAddress() { - if (this.signerAddressInput.current == null) { - return; - } - this.signerAddressInput.current.select(); - document.execCommand('copy'); - }; - - render() { - const {fundsToken: funds, gasToken: gas} = this.props.walletContext; - - return ( - - - - {/*wallet address*/} - - - - - - - - - - - {/*wallet balance*/} - - - - - - - - - - - - {/*signer address*/} - - - - - - - - - - - {/*account QR Code*/} - - - - - {/*pot balance and deposit*/} - - - - - - - - - - - - - {/*recommended account balance and deposit*/} - - - - - - - - - - - - - - - - {/*pot lock status*/} -
- - - {/*disconnect button*/} -
- - -
Version 0.9.23
- - ) - } -} - diff --git a/web-ethereum/orchid_dapp/src/components/Layout.css b/web-ethereum/orchid_dapp/src/components/Layout.css deleted file mode 100644 index c270ac1b0..000000000 --- a/web-ethereum/orchid_dapp/src/components/Layout.css +++ /dev/null @@ -1,109 +0,0 @@ - -.main-content { - padding-top: 24px; - max-width: 700px; -} - -.page-content { - padding-top: 8px; - padding-bottom: 16px; -} - -.navbar { - justify-content: space-between; -} - -.nav-link { - color: rgb(118, 109, 134) !important; - padding: 6px 0 0; -} - -.nav-link.selected { - color: rgb(95 69 186) !important; -} - -.Layout-nav-button:hover, -.Layout-nav-button:active, -.Layout-nav-button { - display: flex; - align-items: center; - flex-direction: column !important; - font-family: -apple-system, sans-serif; - background-color: transparent !important; - border-color: transparent !important; - - font-size: 12px; - font-weight: normal; - font-stretch: normal; - font-style: normal; - line-height: 1.33; - letter-spacing: normal; - text-align: center; - color: #766d86; -} - -.Layout-nav-button img { - height: 30px; - object-fit: contain; -} - -.Layout-nav-row { - height: 50px; - font-size: 14pt !important; - font-family: -apple-system, sans-serif; - align-items: center; - letter-spacing: 0.0pt; -} - -.dropdown-menu { - background-color: white; -} - -.dropdown .btn-primary.dropdown-toggle, -.dropdown .btn-primary.dropdown-toggle:active, -.dropdown .btn-primary { - background-color: transparent; - color: gray; - border-color: transparent; - box-shadow: none; -} - -.dropdown .btn-primary:hover { - color: transparent !important; -} - -.dropdown .btn-primary:active { - background-color: transparent; -} - -.dropdown .nav-link { - color: rebeccapurple !important; -} - -.more-items { - margin-top: 24px; -} - -.back-button { - font-size: 14pt !important; - font-family: -apple-system, sans-serif; - color: rgb(95 69 186); -} - -.push-left { - transform: translate(-100%); - transition: transform 300ms ease-in-out; -} - -.onscreen{ - transform: translate(0%); - transition: transform 300ms ease-in-out; -} - -.hidden{ - display: none; - /*opacity: 0.0;*/ - /*transition: opacity 300ms;*/ -} - - diff --git a/web-ethereum/orchid_dapp/src/components/Layout.tsx b/web-ethereum/orchid_dapp/src/components/Layout.tsx deleted file mode 100644 index b8d233801..000000000 --- a/web-ethereum/orchid_dapp/src/components/Layout.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import React, {FC, useContext, useEffect, useState} from "react"; -import { - Button, Col, Container, Image, ListGroup, ListGroupItem, - Nav, Navbar, OverlayTrigger, Popover, Row -} from "react-bootstrap"; -import {Transactions} from "./Transactions"; -import {AddFunds, CreateAccount} from "./AddFunds"; -import {WithdrawFunds} from "./WithdrawFunds"; -import {Info} from "./Info"; -import {DebugPanel} from "./DebugPanel"; -import {MoveFunds} from "./MoveFunds"; -import {LockFunds} from "./LockFunds"; -import {Header} from "./Header"; -import './Layout.css' - -import moreIcon from '../assets/more-outlined.svg' -import moreIconSelected from '../assets/more.svg' -import homeIcon from '../assets/overview-outlined.svg' -import homeIconSelected from '../assets/overview.svg' -import addIcon from '../assets/add-outlined.svg' -import addIconSelected from '../assets/add.svg' -import withdrawIcon from '../assets/withdraw-outlined.svg' -import withdrawIconSelected from '../assets/withdraw.svg' -import {Divider, hashPath, Visibility} from "../util/util"; -import {OrchidAPI} from "../api/orchid-api"; -import {pathToRoute, Route, RouteContext, RouteContextType} from "./RouteContext"; -import {TransactionPanel} from "./TransactionPanel"; -import {OrchidTransactionDetail} from "../api/orchid-tx"; -import {S} from "../i18n/S"; -import {StakeFunds} from "./StakeFunds"; -import {MarketConditionsPanel} from "./MarketConditionsPanel"; -import {LowFundsPanel} from "./LowFundsPanel"; -import {WalletProviderContext} from "../index"; - -export const Layout: FC = () => { - - const [isNewUser, setIsNewUser] = useState(true); - const [orchidTransactions, setOrchidTransactions] = useState([]); - const moreMenuItems = new Map([ - [Route.Info, S.info], - [Route.Transactions, S.transactions], - [Route.MoveFunds, S.moveFunds], - [Route.LockFunds, S.lockUnlockFunds], - [Route.DebugPanel, S.advanced] - ]); - const {route, setRoute}: RouteContextType = useContext(RouteContext); - let {chainId} = useContext(WalletProviderContext); - - useEffect(() => { - let api = OrchidAPI.shared(); - // new user defaults - let newUserSub = api.newUser.subscribe(isNew => { - //console.log("user is new: ", isNew) - setIsNewUser(isNew); - }); - let orchidTransactionsSub = api.orchid_transactions.subscribe(txs => { - let filteredTx = (txs ?? []).filter((tx) => { - return tx.chainId === chainId - }) - setOrchidTransactions(filteredTx); - }); - - // update the route on user entered url hash changes - window.onhashchange = function () { - console.log("user changed hash path") - setRoute(pathToRoute(hashPath()) ?? Route.None); - } - - return () => { - newUserSub.unsubscribe(); - orchidTransactionsSub.unsubscribe(); - window.onhashchange = null; - }; - }, [chainId, route, setRoute]); - - let bannerTransactions = orchidTransactions.map(orcTx => { - return (); - }); - - // @formatter:off - let moreItemsSelected = Array.from(moreMenuItems.keys()).includes(route); - let navEnabled = true; - return ( - - - -
- - - {S.overview} - {S.add} - {S.withdraw} - - - document.body.click()}> - { - Array.from(moreMenuItems.entries()).map(([key,value])=>{ - return {value} - }) - } - - - }> - - - - - - - - - {bannerTransactions} - - - - - - - - - - - - - - {/**/} - - ); - // @formatter:on -}; - -const NavButton: FC<{ route: Route, icon: any, iconSelected: any }> = (props) => { - let {route, setRoute} = useContext(RouteContext); - let selected = route === props.route; - let showIcon = selected ? props.iconSelected : props.icon; - return ( - - ); -}; - -const NavRow: FC<{ route: Route }> = (props) => { - let {route, setRoute} = useContext(RouteContext); - let selected = route === props.route; - return ( - setRoute(props.route)}> - {props.children} - - ); -}; - - diff --git a/web-ethereum/orchid_dapp/src/components/LockFunds.tsx b/web-ethereum/orchid_dapp/src/components/LockFunds.tsx deleted file mode 100644 index 19f5ea5e2..000000000 --- a/web-ethereum/orchid_dapp/src/components/LockFunds.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import React, {Component} from "react"; -import {LockStatus} from "./LockStatus"; -import {LotteryPot} from "../api/orchid-eth"; -import {OrchidAPI} from "../api/orchid-api"; -import {TransactionStatus, TransactionProgress} from "./TransactionProgress"; -import {Container} from "react-bootstrap"; -import {S} from "../i18n/S"; -import {Subscription} from "rxjs"; - -export class LockFunds extends Component { - - state = { - pot: null as LotteryPot | null, - tx: new TransactionStatus() - }; - subscriptions: Subscription [] = []; - - componentDidMount(): void { - let api = OrchidAPI.shared(); - this.subscriptions.push( - api.lotteryPot_wait.subscribe((pot: LotteryPot) => { - this.setState({ - pot: pot - }); - })); - } - - componentWillUnmount(): void { - this.subscriptions.forEach(sub => { - sub.unsubscribe() - }) - } - - private async lockOrUnlock() - { - let api = OrchidAPI.shared(); - if (!api.eth) { return } - const wallet = api.wallet.value; - const signer = api.signer.value; - - if (!this.state.pot || !wallet || !signer ) { - return; - } - this.setState({tx: TransactionStatus.running()}); - try { - let pot = this.state.pot; - let txId = (pot.isUnlocked || pot.isUnlocking) ? - await api.eth.orchidLock(pot, wallet.address, signer.address) : - await api.eth.orchidUnlock(pot, wallet.address, signer.address); - this.setState({tx: TransactionStatus.result(txId, S.transactionComplete)}); - api.updateLotteryPot().then(); - } catch (err) { - console.log("error: ", err); - this.setState({tx: TransactionStatus.error(`${S.transactionFailed}: ${err}`)}); - } - } - - render() { - if (this.state.pot == null) { - return
; - } - let text = (this.state.pot.isUnlocked || this.state.pot.isUnlocking) ? S.lock : S.unlock; - let api = OrchidAPI.shared(); - let submitEnabled = !api.eth || !this.state.tx.isRunning; - return ( - - -

- {S.toWithdrawYourFullBalance + " "} - {S.fundsWillBeAvailableAt+ " "} - {S.ifYouWishToCancelWithdrawal} -

- -
- -
- -
- ); - } -} - diff --git a/web-ethereum/orchid_dapp/src/components/LockStatus.tsx b/web-ethereum/orchid_dapp/src/components/LockStatus.tsx deleted file mode 100644 index 1175eb244..000000000 --- a/web-ethereum/orchid_dapp/src/components/LockStatus.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import React, {Component} from "react"; -import {LotteryPot} from "../api/orchid-eth"; -import {OrchidAPI} from "../api/orchid-api"; -import {S} from "../i18n/S"; -import {Subscription} from "rxjs"; - -export class LockStatus extends Component { - state = { - pot: null as LotteryPot | null - }; - subscriptions: Subscription [] = []; - - componentDidMount(): void { - let api = OrchidAPI.shared(); - this.subscriptions.push( - api.lotteryPot_wait.subscribe((pot: LotteryPot) => { - this.setState({ - pot: pot - }); - })); - } - - componentWillUnmount(): void { - this.subscriptions.forEach(sub => { - sub.unsubscribe() - }) - } - - render() { - if (this.state.pot === null) { - return
; - } - let icon: string, text: string; - if (this.state.pot.unlock == null) { - icon = "🔒"; - text = S.locked; - } else { - if (this.state.pot.unlock > new Date()) { - icon = "🔒"; - text = `${S.lockedUntil}: ${this.state.pot.unlock.toLocaleString()}`; - } else { - icon = "🔓"; - text = S.unlocked; - } - } - // language=HTML - return ( -
- - {text} -
- ); - } -} - - diff --git a/web-ethereum/orchid_dapp/src/components/LowFundsPanel.tsx b/web-ethereum/orchid_dapp/src/components/LowFundsPanel.tsx deleted file mode 100644 index 1d1939324..000000000 --- a/web-ethereum/orchid_dapp/src/components/LowFundsPanel.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Col, Collapse, Container, Row} from "react-bootstrap"; -import {LotteryPot} from "../api/orchid-eth"; -import {AccountRecommendation} from "../api/orchid-market-conditions"; -import {AccountContext, ApiContext} from "../index"; -import {CancellablePromise, makeCancellable} from "../util/async-util"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export const LowFundsPanel: React.FC = () => { - const [shown, setShown] = useState(false); - const [expanded, setExpanded] = useState(false); - const [accountRecommendation, setAccountRecommendation] = useState(null); - - let api = useContext(ApiContext); - let pot = useContext(AccountContext); - - // update recommendation when pot changes - useEffect(() => { - let cancellablePromises: Array> = []; - (async () => { - if (!pot || !api.eth) { - return - } - try { - let accountRecommendation = await makeCancellable( - api.eth.marketConditions.minViableAccountComposition(), cancellablePromises).promise; - setAccountRecommendation(accountRecommendation); - setShown(isBalanceLow(pot, accountRecommendation) || isDepositLow(pot, accountRecommendation)); - } catch (err) { - if (err.isCanceled) { - //console.log("recommendation cancelled") - } else { - //console.log("unable to fetch min viable account info", err) - } - } - })(); - - return () => { - cancellablePromises.forEach(p => p.cancel()); - }; - }, [api.eth, pot]); - - if (!pot || accountRecommendation == null) { - return
- } - - //let pot = Mocks.lotteryPot(1.0, 20.0) - - let balance = pot.balance; - let balanceStr = balance.formatCurrency(); - let deposit = pot.escrow; - let depositStr = deposit.formatCurrency(); - let addBalanceStr = accountRecommendation.balance.subtract(balance).formatCurrency(); - let addDepositStr = accountRecommendation.deposit.subtract(deposit).formatCurrency(); - - let title; - let text; - - let balanceLow = isBalanceLow(pot, accountRecommendation); - let depositLow = isDepositLow(pot, accountRecommendation); - - if (balanceLow) { - title = "Balance too low"; - text = `Your balance of ${balanceStr} is too low. Add at least ${addBalanceStr} to your balance for the Orchid app to function.`; - } - if (depositLow) { - title = "Deposit too low"; - text = `Your deposit of ${depositStr} is too low. Add at least ${addDepositStr} to your deposit for the Orchid app to function.`; - } - if (depositLow && balanceLow) { - title = "Balance & Deposit too low"; - text = `Your deposit and balance are too low. ` + - `Add at least ${addDepositStr} to your deposit and ${addBalanceStr} to your balance for the Orchid app to function.`; - } - - let alertIcon = - - - - - - - - ; - - return ( - - - { - setExpanded(!expanded) - }}> - -
{expanded ? "▾" : "▸"}
- - - {alertIcon}{title} - - - -
- - - - {text} - - - -
-
- ); -}; - -function isBalanceLow(pot: LotteryPot, accountRecommendation: AccountRecommendation): boolean { - return pot.balance.lt(accountRecommendation.balance); -} - -function isDepositLow(pot: LotteryPot, accountRecommendation: AccountRecommendation): boolean { - return pot.escrow.lt(accountRecommendation.deposit); -} - diff --git a/web-ethereum/orchid_dapp/src/components/MarketConditionsPanel.tsx b/web-ethereum/orchid_dapp/src/components/MarketConditionsPanel.tsx deleted file mode 100644 index 5a0196b00..000000000 --- a/web-ethereum/orchid_dapp/src/components/MarketConditionsPanel.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import React, {useContext, useEffect, useState} from "react"; -import {Col, Collapse, Container, Row} from "react-bootstrap"; -import {OrchidAPI} from "../api/orchid-api"; -import {LotteryPot} from "../api/orchid-eth"; -import {MarketConditions} from "../api/orchid-market-conditions"; -import {WalletProviderContext} from "../index"; -import {Cancellable, makeCancellable} from "../util/async-util"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export const MarketConditionsPanel: React.FC = () => { - - const [shown, setShown] = useState(false); - const [expanded, setExpanded] = useState(false); - const [pot, setPot] = useState(); - const [marketConditions, setMarketConditions] = useState(); - let {fundsToken: funds} = useContext(WalletProviderContext); - - useEffect(() => { - let cancellablePromises: Array = []; - let api = OrchidAPI.shared(); - let fetch = (async () => { - if (!pot || !api.eth) { - return; - } - try { - let marketConditions = await makeCancellable( - api.eth.marketConditions.for(pot), cancellablePromises).promise; - setMarketConditions(marketConditions); - setShown(marketConditions.ticketUnderwater); - } catch (err) { - // console.log("error getting market conditions: ", err); - } - }); - let potSubscription = api.lotteryPot.subscribe(async pot => { - setPot(pot) - fetch().then(); - }); - fetch().then(); - - // todo: is this closing over stale state? Switch to useInterval. - let timer = setInterval(fetch, 15000/*ms*/); - return () => { - cancellablePromises.forEach(p => p.cancel()); - clearInterval(timer); - potSubscription.unsubscribe(); - }; - }, [pot]); - - if (!pot || marketConditions === undefined || !(funds?.symbol)) { - return
- } - - //let gasPrice = new ETH.fromNumberAsGwei(5.0); - //let pricing = new Pricing(0.004, 5.0) - //let pot = Mocks.lotteryPot(1.0, 20.0) - - let title = "Abnormal Market Conditions" - let text = `Due to market conditions, which take into account network gas costs, ` + - `and the price of ${funds?.symbol}, your account will not function. \n` - - let alertIcon = - - - - - - - - - - return ( - - - { - setExpanded(!expanded) - }}> - -
{expanded ? "▾" : "▸"}
- - - {alertIcon}{title} - - - -
- - - - {text} - - - -
-
- ); -}; - - diff --git a/web-ethereum/orchid_dapp/src/components/MoveFunds.tsx b/web-ethereum/orchid_dapp/src/components/MoveFunds.tsx deleted file mode 100644 index 67f0f0e20..000000000 --- a/web-ethereum/orchid_dapp/src/components/MoveFunds.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import React, {Component, useContext} from "react"; -import {OrchidAPI} from "../api/orchid-api"; -import {errorClass, parseFloatSafe} from "../util/util"; -import {TransactionStatus, TransactionProgress} from "./TransactionProgress"; -import {SubmitButton} from "./SubmitButton"; -import {Container} from "react-bootstrap"; -import {S} from "../i18n/S"; -import {Subscription} from "rxjs"; -import {LotFunds} from "../api/orchid-eth-token-types"; -import {WalletProviderContext} from "../index"; -import {WalletProviderStatus} from "../api/orchid-eth-web3"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export function MoveFunds() { - let walletContext: WalletProviderStatus = useContext(WalletProviderContext); - return -}; - -export class MoveFundsImpl extends Component<{ - walletContext: WalletProviderStatus -}, { - potBalance: LotFunds | null; - amountError: boolean; - tx: TransactionStatus; - moveAmount: number | null -}> { - state = { - moveAmount: null as number | null, - amountError: true, - potBalance: null as LotFunds | null, - tx: new TransactionStatus() - }; - subscriptions: Subscription [] = []; - - componentDidMount(): void { - let api = OrchidAPI.shared(); - this.subscriptions.push( - api.lotteryPot.subscribe(pot => { - this.setState(current => ({...current, potBalance: pot?.balance ?? null})); - })); - } - - componentWillUnmount(): void { - this.subscriptions.forEach(sub => { - sub.unsubscribe() - }) - } - - async submitMoveFunds() { - let api = OrchidAPI.shared(); - let {fundsToken: funds} = this.props.walletContext; - if (!api.eth || !funds) { return } - let wallet = api.wallet.value; - let signer = api.signer.value; - if (!wallet || !signer - || this.state.moveAmount == null - || this.state.potBalance == null - ) { - return; - } - this.setState(current => ({...current, tx: TransactionStatus.running()})); - - try { - const moveEscrow = funds.fromNumber(this.state.moveAmount); - let txId = await api.eth.orchidMoveFundsToEscrow( - wallet.address, signer.address, moveEscrow, this.state.potBalance); - await api.updateLotteryPot(); - this.setState(current => ({ - ...current, - tx: TransactionStatus.result(txId, S.transactionComplete) - })); - } catch (err) { - this.setState(current => ({ - ...current, - tx: TransactionStatus.error(`${S.transactionFailed}: ${err}`) - })); - } - } - - render() { - let api = OrchidAPI.shared(); - let {fundsToken: funds} = this.props.walletContext; - let submitEnabled = api.wallet.value !== null - && !this.state.tx.isRunning - && this.state.moveAmount != null - && funds != null - && funds.fromNumber(this.state.moveAmount).lte(this.state.potBalance ?? funds.zero) - - let amountText = "Amount in " + (funds?.symbol ?? "Funds"); - return ( - - -

- {S.moveFundsFromYourLotteryPot + " "} - {S.balanceFundsAreUsedByOrchid + " "} - {S.depositFundsAreRequiredToParticipate} -

- - - - { - let amount = parseFloatSafe(e.currentTarget.value); - const valid = amount != null && amount > 0 - && (this.state.potBalance == null || funds?.fromNumber(amount).lte(this.state.potBalance)); - this.setState(current => ({ - ...current, - moveAmount: amount, - amountError: !valid - })); - }} - /> - this.submitMoveFunds().then()} enabled={submitEnabled}/> - -
- ); - } -} - diff --git a/web-ethereum/orchid_dapp/src/components/NoWallet.css b/web-ethereum/orchid_dapp/src/components/NoWallet.css deleted file mode 100644 index cf1b38d53..000000000 --- a/web-ethereum/orchid_dapp/src/components/NoWallet.css +++ /dev/null @@ -1,90 +0,0 @@ - -.WrongNetwork, .NoWallet { - padding-left: 30px; - padding-right: 30px; - max-width: 400px; -} - -.WrongNetwork-title { - margin-top: 56px; - font-size: 28px; - font-weight: bold; - font-stretch: normal; - font-style: normal; - line-height: normal; - letter-spacing: 0.36px; - text-align: center; - color: #5f45ba; -} -.WrongNetwork-text { - margin-top: 20px; - font-size: 15px; - font-weight: normal; - font-stretch: normal; - font-style: normal; - line-height: 1.33; - letter-spacing: -0.24px; - text-align: center; - color: #000000; -} -.WrongNetwork-image { - margin-top: 40px; - width: 256px; - height: 244px; - object-fit: contain; -} - -.NoWallet-title { - font-style: normal; - font-weight: bold; - font-size: 28px; - text-align: center; - letter-spacing: 0.36px; - margin: 50px 0 21px 0; - color: #5F45BA; -} - -.NoWallet-text { - font-size: 15px; - margin-bottom: 8px; -} - -.NoWallet-images { - display: flex; - align-items: center; - justify-content: space-between; - flex-wrap: wrap; - margin: 24px 0; -} -.NoWallet-images > a > img { - max-width: 100%; -} -.NoWallet-images > a { - display: block; - width: 40%; - margin: 10px; - overflow: hidden; - background-size: contain; - background-position: center; - background-repeat: no-repeat; -} -.NoWallet-images > a.metamask { - width: 148px; -} -.NoWallet-images > a.coinbasewallet { - width: 150px; -} - -.NoWallet-smalltext { - font-size: 11px; -} - -.NoWallet .submit-button button { - width: 100%; - margin: 40px 0; -} - -.NoWallet-fullguide { - font-size: 15px; -} - diff --git a/web-ethereum/orchid_dapp/src/components/NoWallet.tsx b/web-ethereum/orchid_dapp/src/components/NoWallet.tsx deleted file mode 100644 index 93fa95d21..000000000 --- a/web-ethereum/orchid_dapp/src/components/NoWallet.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import React, {FC, useState} from "react"; -import {Container} from "react-bootstrap"; -import './NoWallet.css'; -import bugs from '../assets/bugs.png'; -import metamask from '../assets/wallet-logos/metamask.png'; -import coinbasewallet from '../assets/wallet-logos/coinbasewallet.svg'; -import {SubmitButton} from "./SubmitButton"; -import {copyTextToClipboard} from "../util/util"; -import {S} from "../i18n/S"; -import {WalletProviderStatus} from "../api/orchid-eth-web3"; -import {Header} from "./Header"; - -export const NoWallet: FC<{ walletStatus: WalletProviderStatus }> = (props) => { - const [buttonCopiedState, setButtonCopiedState] = useState(false); - - function copyUrl() { - let text = window.location.href; - copyTextToClipboard(text); - - // Show copied message in the button - setButtonCopiedState(true); - setTimeout(() => { - setButtonCopiedState(false); - }, 1000); - } - - let wrongNetwork = !props.walletStatus.chainInfo?.isEthereumMainNet; - if (wrongNetwork) { - return ( - -
-
{S.youreAlmostThere}
-
{S.pleaseSelectEthNetwork}
- Bugs - - ) - } else { - - return ( - -
-
{S.letsGetStarted}
-
- Create a new Ethereum wallet address and then load account.orchid.com in that wallet's browser. -
-
- We recommend these wallets: -
-
- metamask - coinbase Wallet -
- -
- Privacy note: we recommend using a new Ethereum wallet for Orchid that is not linked to other Ethereum products or services you use. (learn more) -
- -
- - {buttonCopiedState ? "Copied!" : "Copy URL"} - -
- -
- Need more help getting started?
- See the Join Now guide on orchid.com -
- - ) - } -}; diff --git a/web-ethereum/orchid_dapp/src/components/ProgressLine.css b/web-ethereum/orchid_dapp/src/components/ProgressLine.css deleted file mode 100644 index 8d6f5590e..000000000 --- a/web-ethereum/orchid_dapp/src/components/ProgressLine.css +++ /dev/null @@ -1,18 +0,0 @@ -/* https://medium.com/@bruno.raljic/animated-multi-part-progress-bar-made-from-scratch-with-reactjs-and-css-9c1d6a4dbef7*/ - -.progressVisualFull { - display: flex; - height: 8px; - margin: 0; -} - -.progressVisualPart { - transition: width 2s; -} - -body { - margin: 20px; - padding: 20px; - border: 1px solid #e5e5e5; - border-radius: 6px; -} diff --git a/web-ethereum/orchid_dapp/src/components/ProgressLine.js b/web-ethereum/orchid_dapp/src/components/ProgressLine.js deleted file mode 100644 index 174287c9d..000000000 --- a/web-ethereum/orchid_dapp/src/components/ProgressLine.js +++ /dev/null @@ -1,44 +0,0 @@ -import React, {useEffect, useState} from "react"; -import "./ProgressLine.css"; - -/// https://medium.com/@bruno.raljic/animated-multi-part-progress-bar-made-from-scratch-with-reactjs-and-css-9c1d6a4dbef7 -export const ProgressLine = ( - {label, backgroundColor = "#e5e5e5", visualParts = [{percentage: "0%", color: "white"}]}) => { - const [widths, setWidths] = useState(visualParts.map(() => { - return 0; - })); - // const [frame, setFrame] = useState(0); // Ug. - - useEffect(() => { - // https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame - let request = requestAnimationFrame(() => { - setWidths(visualParts.map(item => { - return item.percentage; - })); - }); - // setFrame(request) - return () => { - cancelAnimationFrame(request) - } - }, [visualParts]); - - return ( -
-
{label}
-
- {visualParts.map((item, index) => { - return ( -
- ); - })} -
-
- ); -}; - -export default ProgressLine diff --git a/web-ethereum/orchid_dapp/src/components/RouteContext.tsx b/web-ethereum/orchid_dapp/src/components/RouteContext.tsx deleted file mode 100644 index 83522558d..000000000 --- a/web-ethereum/orchid_dapp/src/components/RouteContext.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from "react"; -import {camelCase} from "../util/util"; - -export enum Route { - None, Overview, Info, AddFunds, CreateAccount, WithdrawFunds, Transactions, - MoveFunds, LockFunds, DebugPanel, StakeFundsTest -} - -export interface RouteContextType { - route: Route, - setRoute: (_: Route) => void -} - -export const RouteContext = React.createContext({ - route: Route.Overview, - setRoute: (_: Route) => { - } -}); - -export function pathToRoute(path: string | undefined): Route | undefined { - if (path === undefined) { - return undefined; - } - path = path.substr(1); // remove hash - for (let route in Route) { - if (route.toLowerCase() === path.toLowerCase()) { - return Route[route as keyof typeof Route]; - } - } - return undefined; -} - -export function routeToPath(route: Route): string { - return route === Route.None ? ' ' : "#" + camelCase(Route[route]); -} - -export function setURL(route: Route) { - window.history.pushState(route, '', routeToPath(route)); -} diff --git a/web-ethereum/orchid_dapp/src/components/Spacer.tsx b/web-ethereum/orchid_dapp/src/components/Spacer.tsx deleted file mode 100644 index 8b7330d17..000000000 --- a/web-ethereum/orchid_dapp/src/components/Spacer.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from "react"; - -export const Spacer: React.FC<{height?: number, width?: number}> = (props) => { - if (props.height) { - return
- } else { - return
- } -}; - - diff --git a/web-ethereum/orchid_dapp/src/components/StakeFunds.tsx b/web-ethereum/orchid_dapp/src/components/StakeFunds.tsx deleted file mode 100644 index 5cad83c46..000000000 --- a/web-ethereum/orchid_dapp/src/components/StakeFunds.tsx +++ /dev/null @@ -1,211 +0,0 @@ -import React, {FC, useCallback, useContext, useEffect, useRef, useState} from "react"; -import {OrchidAPI} from "../api/orchid-api"; -import {errorClass, parseFloatSafe, parseIntSafe} from "../util/util"; -import {SubmitButton} from "./SubmitButton"; -import {Col, Container, Row} from "react-bootstrap"; -import './AddFunds.css' -import {isEthAddress } from "../api/orchid-eth"; -import {S} from "../i18n/S"; -import {EthAddress} from "../api/orchid-eth-types"; -import {LotFunds} from "../api/orchid-eth-token-types"; -import {WalletProviderContext} from "../index"; - -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export const StakeFunds: FC = () => { - const defaultStakeDelay = 90 * 24 * 3600; // 90 days in seconds - - // Add funds state - const [walletBalance, setWalletBalance] = useState(null); - const [currentStakeAmount, setCurrentStakeAmount] = useState(null); - - const [addStakeAmount, setAddStakeAmount] = useState(null); - const [addStakeAmountError, setAddStakeAmountError] = useState(true); - - const [stakeeAddress, setStakeeAddress] = useState(null); - const [stakeeAddressError, setStakeeAddressError] = useState(true); - - const [stakeDelaySeconds, setStakeDelaySeconds] = useState(defaultStakeDelay); - const [stakeDelayError, setStakeDelayError] = useState(false); - - const [txRunning, setTxRunning] = useState(false); - let amountInput = useRef(null); - - let {fundsToken: fundsTokenType} = useContext(WalletProviderContext); - - useEffect(() => { - let api = OrchidAPI.shared(); - let walletSubscription = api.wallet.subscribe(wallet => { - //console.log("add funds got wallet: ", wallet); - setWalletBalance(wallet?.fundsBalance ?? null); - }); - return () => { - walletSubscription.unsubscribe(); - }; - }, []); - - const updateCurrentStake = useCallback(async () => { - let api = OrchidAPI.shared(); - if (!api.eth) { return } - if (stakeeAddress === null) { - //console.log("missing stakee address"); - return; - } - let stake: LotFunds = await api.eth.orchidGetStake(stakeeAddress); - setCurrentStakeAmount(stake); - }, [stakeeAddress]); - - useEffect(() => { - updateCurrentStake().then(); - }, [updateCurrentStake, stakeeAddress]); - - function clearForm() { - let field = amountInput.current; - if (field != null) { - field.value = ""; - } - } - - async function submitAddStake() { - let api = OrchidAPI.shared(); - if (!fundsTokenType) { return } - let wallet = api.wallet.value; - if (!wallet || !api.eth) { - return; - } - let walletAddress = wallet.address; - console.log("submit add funds: ", walletAddress, addStakeAmount, stakeDelaySeconds); - if (walletAddress == null || addStakeAmount == null || stakeeAddress == null - || stakeDelaySeconds == null) { - return; - } - - try { - setTxRunning(true); - const addAmountFunds: LotFunds = fundsTokenType.fromNumber(addStakeAmount); - - let delayValue: BigInt = BigInt(stakeDelaySeconds); // seconds - await api.eth.orchidStakeFunds( - walletAddress, stakeeAddress, addAmountFunds, wallet, delayValue); - api.updateWallet().then(); - console.log("updating stake"); - updateCurrentStake().then(); - clearForm(); - } catch (err) { - console.log("error in staking: ", err); - } finally { - setTxRunning(false); - } - } - - let submitEnabled = - OrchidAPI.shared().wallet.value !== undefined - && !addStakeAmountError - && !stakeeAddressError - && !txRunning; - let stakeDelayDaysStr = - stakeDelaySeconds != null ? ((stakeDelaySeconds / (24 * 3600)).toLocaleString() + " " + S.days) : ""; - return ( - - - - {/*Available Wallet Balance*/} - - - - - -
- {walletBalance == null ? "..." : walletBalance.toFixedLocalized(2)} -
- -
- - {/*Current Stake*/} - - - - - -
- {currentStakeAmount == null ? "..." : currentStakeAmount.toFixedLocalized(2)} -
- -
- - {/*Stakee Address*/} - - - - - - { - const address = e.currentTarget.value; - const valid = isEthAddress(address); - setStakeeAddress(valid ? address : null); - setStakeeAddressError(!valid); - }} - /> - - - - {/*Add to Stake */} - - - - - - { - let amount = parseFloatSafe(e.currentTarget.value); - setAddStakeAmount(amount); - if (fundsTokenType) { - setAddStakeAmountError(amount == null || fundsTokenType.fromNumber(amount).gt(walletBalance || fundsTokenType.zero)); - } - }} - type="number" - placeholder={fundsTokenType?.symbol ?? "Funds"} - defaultValue={undefined} - /> - - - - {/*Stake Delay*/} - - - - - - { - let delay = parseIntSafe(e.currentTarget.value); - setStakeDelaySeconds(delay); - setStakeDelayError(delay == null || delay < 0); - }} - type="number" - placeholder={(0).toString()} - defaultValue={defaultStakeDelay} - /> - - - - - submitAddStake()} enabled={submitEnabled}> - {S.stake} - -
- ); -}; - - diff --git a/web-ethereum/orchid_dapp/src/components/SubmitButton.tsx b/web-ethereum/orchid_dapp/src/components/SubmitButton.tsx deleted file mode 100644 index 1942798f1..000000000 --- a/web-ethereum/orchid_dapp/src/components/SubmitButton.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from "react"; -import {S} from "../i18n/S"; - -export const SubmitButton: React.FC<{ - onClick: () => void, - enabled: boolean, - hidden?: boolean -}> = (props) => { - return ( -
- -
- ); -}; - - diff --git a/web-ethereum/orchid_dapp/src/components/TransactionPanel.tsx b/web-ethereum/orchid_dapp/src/components/TransactionPanel.tsx deleted file mode 100644 index b66ed1cb3..000000000 --- a/web-ethereum/orchid_dapp/src/components/TransactionPanel.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import React, {useContext, useState} from "react"; -import { - EthereumTransactionStatus, - OrchidTransactionDetail, - OrchidTransactionType -} from "../api/orchid-tx"; -import {Col, Collapse, Container, Row} from "react-bootstrap"; -import {OrchidAPI} from "../api/orchid-api"; -import {S} from "../i18n/S"; -import {WalletProviderContext} from "../index"; - -export const TransactionPanel: React.FC<{ - tx: OrchidTransactionDetail -}> = (props) => { - const [open, setOpen] = useState(false); - const walletStatus = useContext(WalletProviderContext); - - let running = props.tx.status === EthereumTransactionStatus.PENDING; - let type: string = ""; - switch (props.tx.type) { - case OrchidTransactionType.AddFunds: - type = S.addFunds; - break; - case OrchidTransactionType.StakeFunds: - type = S.stakeFunds; - break; - case OrchidTransactionType.WithdrawFunds: - type = S.withdrawFunds; - break; - case OrchidTransactionType.Lock: - type = S.lock; - break; - case OrchidTransactionType.Unlock: - type = S.unlock; - break; - case OrchidTransactionType.MoveFundsToEscrow: - type = S.moveFundsToDeposit; - break; - case OrchidTransactionType.Reset: - type = S.resetAccount; - break; - } - - let status: string = ""; - switch (props.tx.status) { - case EthereumTransactionStatus.PENDING: - status = S.pending; - break; - case EthereumTransactionStatus.SUCCESS: - status = S.complete; - break; - case EthereumTransactionStatus.FAILURE: - status = S.failed; - break; - - } - - let multiple = props.tx.transactions.length > 1; - if (multiple) { - type = type + ` (${props.tx.transactions.length})`; - } - - let ethTxs = props.tx.transactions.map(tx => { - - let statusTerm: string = ""; - switch (tx.status) { - case EthereumTransactionStatus.PENDING: - statusTerm = S.pending; - break; - case EthereumTransactionStatus.SUCCESS: - statusTerm = S.complete; - break; - case EthereumTransactionStatus.FAILURE: - statusTerm = S.failed; - break; - } - - let status = multiple ? - ({S.status}: {statusTerm}) : ""; - - return - -
- - - {S.hash}: {tx.hash} - - - - - {walletStatus.chainInfo?.isEthereumMainNet ? - {S.viewOnBlockchain} - : null - } - - - {status} - - - {S.confirmations}: {tx.confirmations} - - - -
- }); - - function dismiss() { - OrchidAPI.shared().transactionMonitor.remove(props.tx.hash); - } - - return ( - - - { - setOpen(!open) - }}> - -
{open ? "▾" : "▸"}
- - - {S.transaction} {status} -
{type}
- - -
- - { - dismiss(); - e.stopPropagation(); - }} - > -
×
- - - - - - {ethTxs} - - - - - - ); -}; - - diff --git a/web-ethereum/orchid_dapp/src/components/TransactionProgress.tsx b/web-ethereum/orchid_dapp/src/components/TransactionProgress.tsx deleted file mode 100644 index 94946b6e6..000000000 --- a/web-ethereum/orchid_dapp/src/components/TransactionProgress.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import React, {Component} from "react"; -import {EtherscanIO} from "../api/etherscan-io"; -import {findDOMNode} from "react-dom"; -import {Visibility} from "../util/util"; -import {Signer} from "../api/orchid-eth"; -import {AccountQRCode} from "./AccountQRCode"; -import {TransactionId} from "../api/orchid-eth-types"; - -export enum TransactionState { - New, Running, Completed, Failed -} - -export class TransactionStatus { - state: TransactionState; - result: string | null; - txId: string | null; - signer: Signer | null; - - constructor( - state: TransactionState = TransactionState.New, - result: string = "", - txId: string | null = null, - signer: Signer | null = null - ) { - this.state = state; - this.result = result; - this.txId = txId; - this.signer = signer; - } - - get isRunning(): boolean { - return this.state === TransactionState.Running; - } - - static running(txId?: string): TransactionStatus { - return new TransactionStatus( - TransactionState.Running, - "", - txId || ""); - } - - static result(txId: TransactionId, text: string = "", signer: Signer | null = null): TransactionStatus { - return new TransactionStatus( - TransactionState.Completed, text, txId, signer); - } - - static error(error: string): TransactionStatus { - return new TransactionStatus( - TransactionState.Failed, - error, - ""); - } -} - -// Note: this is a component to support the `scrollIntoView` method. -export class TransactionProgress extends Component { - - render() { - let {result, state, txId, signer} = this.props.tx; - let running = state === TransactionState.Running; - return ( -
- {/*Show the spinner when running.*/} - {/*
*/} -
- {result || ""} -
- - {txId} - -
- {/*account QR Code*/} - - - -
- ); - } - - scrollIntoView() { - (findDOMNode(this) as HTMLDivElement).scrollIntoView(); - } -} - - diff --git a/web-ethereum/orchid_dapp/src/components/Transactions.css b/web-ethereum/orchid_dapp/src/components/Transactions.css deleted file mode 100644 index dea85f6c2..000000000 --- a/web-ethereum/orchid_dapp/src/components/Transactions.css +++ /dev/null @@ -1,41 +0,0 @@ - -.transactions-header-row, -.transactions-row { - display: flex; - align-items: baseline; - overflow: hidden; - color: rebeccapurple; -} - -.transactions-header-row { - color: black; - font-weight: normal; -} - -.transactions-col3, -.transactions-col2, -.transactions-col { - margin-left: 8px !important; - margin-right: 8px !important; - min-width: 60px; - flex-grow: 1; -} - -.transactions-col3 { - flex-grow: 8; - overflow: hidden; -} - -.transactions-col2 { - min-width: 80px; -} - -.loading { - font-size: medium; - font-style: italic; - color: darkgray; -} - -.transaction-result { - margin-top: 24px; -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/components/Transactions.tsx b/web-ethereum/orchid_dapp/src/components/Transactions.tsx deleted file mode 100644 index d66f41421..000000000 --- a/web-ethereum/orchid_dapp/src/components/Transactions.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React, {FC, useContext, useEffect, useState} from "react"; -import {OrchidAPI} from "../api/orchid-api"; -import {EtherscanIO} from "../api/etherscan-io"; -import './Transactions.css' -import {Col, Container, Row} from "react-bootstrap"; -import {S} from "../i18n/S"; -import {LotteryPotUpdateEvent} from "../api/orchid-eth-types"; -import {WalletProviderContext} from "../index"; - -export const Transactions: FC = () => { - const [events, setEvents] = useState([]); - let walletStatus = useContext(WalletProviderContext) - - useEffect(() => { - let api = OrchidAPI.shared(); - let sub = api.transactions.subscribe((events) => { - setEvents(events ?? []); - }); - return () => { - sub.unsubscribe(); - }; - }, []); - - return ( - - - - -
-
- - - -
-
- {!events.length &&
{S.loading}...
} - {events.map((ev) => { - let balance = (ev.balance ? ev.balance.formatCurrency(4) : null) - ?? (ev.balanceChange ? "+"+ev.balanceChange.toFixedLocalized(4) : ""); - let date = ev.timeStamp.getTime() > 0 ? ev.timeStamp.toLocaleDateString() : ""; - let txHash = ev.transactionHash; - let isMainNet = walletStatus.chainInfo?.isEthereumMainNet - let txLink = isMainNet ? EtherscanIO.txLink(txHash) : undefined; - return ( -
- - - -
- ); - })} -
- -
-
- ); -} - diff --git a/web-ethereum/orchid_dapp/src/components/WithdrawFunds.tsx b/web-ethereum/orchid_dapp/src/components/WithdrawFunds.tsx deleted file mode 100644 index 611c8a66b..000000000 --- a/web-ethereum/orchid_dapp/src/components/WithdrawFunds.tsx +++ /dev/null @@ -1,189 +0,0 @@ -import React, {FC, useContext, useRef, useState} from "react"; -import {OrchidAPI} from "../api/orchid-api"; -import {isEthAddress} from "../api/orchid-eth"; -import {errorClass, Visibility} from "../util/util"; -import {TransactionProgress, TransactionStatus} from "./TransactionProgress"; -import {SubmitButton} from "./SubmitButton"; -import {Col, Container, Row} from "react-bootstrap"; -import {S} from "../i18n/S"; -import {EthAddress} from "../api/orchid-eth-types"; -import {AccountContext, ApiContext, WalletContext, WalletProviderContext} from "../index"; -import {LotFunds} from "../api/orchid-eth-token-types"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -export const WithdrawFunds: FC = () => { - let txResult = useRef(null); - - const [userEnteredWithdrawAmount, setUserEnteredWithdrawAmount] = useState(null); - const [withdrawAll, setWithdrawAll] = useState(false); - const [sendToAddress, setSendToAddress] = useState(null); - const [amountError, setAmountError] = useState(true); - const [addressError, setAddressError] = useState(true); - const [tx, setTx] = useState(new TransactionStatus()); - const [editingWithdrawAmount, setEditingWithdrawAmount] = useState(false); - - let api = useContext(ApiContext) - let wallet = useContext(WalletContext); - let pot = useContext(AccountContext); - let {fundsToken} = useContext(WalletProviderContext); - - const v0 = api.eth?.isV0; - const targetAddress = v0 ? sendToAddress : wallet?.address; - console.log("targetAddress = ", targetAddress); - - async function submitWithdrawFunds() { - const api = OrchidAPI.shared(); - const wallet = api.wallet.value; - const signer = api.signer.value; - - if (!wallet - || !signer - || !api.eth - || (userEnteredWithdrawAmount == null && !withdrawAll) - || targetAddress == null - || !pot - || !fundsToken - ) { - console.log("precondition error in withdraw"); - return; - } - setTx(TransactionStatus.running()); - - if (txResult?.current) { - txResult.current.scrollIntoView(); - } - - try { - let txId: string; - if (withdrawAll) { - txId = await api.eth.orchidWithdrawFundsAndEscrow(pot, targetAddress); - } else { - if (!userEnteredWithdrawAmount) { - console.log("error no withdraw amount") - return; // Shouldn't get here. - } - txId = await api.eth.orchidWithdrawFunds( - wallet.address, signer.address, targetAddress, userEnteredWithdrawAmount, pot.balance); - } - await api.updateLotteryPot(); - await api.updateWallet(); - await api.updateSigners(); - setTx(TransactionStatus.result(txId, S.transactionComplete)); - api.updateTransactions().then(); - } catch (err) { - setTx(TransactionStatus.error(`${S.transactionFailed}: ${err}`)); - } - } - - /// - /// Render - /// - - const potBalance: LotFunds | undefined = pot?.balance - let withdrawAmount: string | undefined = withdrawAll ? - (potBalance ?? fundsToken?.zero)?.toFixedLocalized(4) - : userEnteredWithdrawAmount?.toFixedLocalized(4) - - let txRunning = tx?.isRunning ?? false - let submitEnabled: boolean = - !txRunning - && !amountError - && !(addressError && v0) - && wallet !== null - && targetAddress !== null - && (withdrawAll || !!withdrawAmount); - - return ( - - - - {/*Balance*/} - - - - - -
- {potBalance ? potBalance.toFixedLocalized() : "..."} -
- -
- - {/* withdraw amount*/} - - - - - - { - let amount = fundsToken?.fromStringOrZero(e.currentTarget.value) ?? null; - const valid = amount != null && amount.gtZero() && (!potBalance || amount.lte(potBalance)); - setUserEnteredWithdrawAmount(amount) - setAmountError(!valid) - }} - value={editingWithdrawAmount ? undefined : withdrawAmount} - onFocus={(e) => setEditingWithdrawAmount(true)} - onBlur={(e) => setEditingWithdrawAmount(false)} - /> - - - - {/*target address (v0)*/} - - - - - { - const address = e.currentTarget.value; - const valid = isEthAddress(address); - setSendToAddress(valid ? address : null) - setAddressError(!valid) - }} - /> - - - - - {/*Withdraw all checkbox*/} - - -
- { - const value = e.currentTarget.checked; - setWithdrawAll(value); - }} - /> - -
- -
- -

{S.noteIfOverdraftOccurs}

-
- submitWithdrawFunds().then()} enabled={submitEnabled}> - {S.withdraw + " " + (fundsToken?.symbol ?? "Funds")} -
- - -
- ); -} - diff --git a/web-ethereum/orchid_dapp/src/css/app-style.css b/web-ethereum/orchid_dapp/src/css/app-style.css deleted file mode 100644 index 2ba58198b..000000000 --- a/web-ethereum/orchid_dapp/src/css/app-style.css +++ /dev/null @@ -1,111 +0,0 @@ -/* Layout rules */ - -html, body { - font-family: -apple-system, sans-serif; -} - -.container { -} - -.col-1-1 { - width: 100%; -} - -.col-2-3 { - width: 66.66%; -} - -.col-1-3 { - width: 33.33%; -} - -.col-1-2 { - width: 50%; -} - -.col-1-4 { - width: 25%; -} - -.col-1-8 { - width: 12.5%; -} - -.hidden { - display: none !important; -} - -.spinner { - border: 16px solid lightgray; - border-top: 16px solid mediumpurple; - border-radius: 50%; - width: 80px; - height: 80px; - animation: spin 2s linear infinite; - margin: auto; - /*position: absolute;*/ - /*transform:translate(-50%, -50%);*/ - /*top: 200px;*/ - /*left: 50%;*/ - /*position: absolute;*/ - /*margin-top: 50%;*/ - /*margin-left: 50%;*/ - /*top: 50%;*/ -} - -.spinner-small { - border: 8px solid lightgray; - border-top: 8px solid mediumpurple; - border-radius: 50%; - width: 32px; - height: 32px; - animation: spin 2s linear infinite; - margin: auto; -} - -@keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} - -.disabled { - color: #cccccc; - pointer-events: none; - opacity: 0.5; -} - -.disabled-faded { - opacity: 0.30; - pointer-events: none; -} - -.icon { - margin-right: 10px; -} - -/* Funds token label formatting */ -.funds-1-pad, -.funds-1 { - font-size: 17px; - font-weight: bold; - font-stretch: normal; - font-style: normal; - line-height: 1.29; - letter-spacing: -0.41px; - text-align: right; - color: #3a3149; -} - -.funds-1-pad { - margin-right: 16px; -} - -.address-input, -.address-input::placeholder { - /* form style beats us in precedence */ - text-align: left !important; -} diff --git a/web-ethereum/orchid_dapp/src/css/button-style.css b/web-ethereum/orchid_dapp/src/css/button-style.css deleted file mode 100755 index e9b8c0ac8..000000000 --- a/web-ethereum/orchid_dapp/src/css/button-style.css +++ /dev/null @@ -1,130 +0,0 @@ - -/* Button style */ -.submit-button button { - display: block; - border: 2px solid #6045BA; - border-radius: 40px; - -webkit-tap-highlight-color: transparent; - -webkit-transition: background-color 0.3s, color 0.3s, width 0.3s, border-width 0.3s, border-color 0.3s; - transition: background-color 0.3s, color 0.3s, width 0.3s, border-width 0.3s, border-color 0.3s; - padding: 0 48px; - margin: 32px auto 0; - height: 48px; - background-color: #5f45ba; - font-size: 14px; - font-weight: 500; - font-stretch: normal; - font-style: normal; - line-height: 1.14; - letter-spacing: normal; - text-align: center; - color: #ffffff; -} - -.submit-button button:hover { - background-color: #6045BA; - color: #fff; -} - -.submit-button button:disabled, -.submit-button button[disabled] { - border: 0; - background-color: #6d6b6d; - color: white -} - -.submit-button button:focus { - outline: none; -} - -/* Text (transition for when returning to initial state) */ -.submit-button button span { - -webkit-transition: opacity 0.3s 0.1s; - transition: opacity 0.3s 0.1s; -} - -/* Common style of SVGs */ -.submit-button svg { - position: absolute; - top: 0; - left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); - pointer-events: none; -} - -.submit-button svg path { - opacity: 0; - fill: none; -} - -.submit-button svg.progress-circle path { - stroke: #1ECD97; - stroke-width: 5; -} - -.submit-button svg.checkmark path, -.submit-button svg.cross path { - stroke: #fff; - stroke-linecap: round; - stroke-width: 4; - -webkit-transition: opacity 0.1s; - transition: opacity 0.1s; -} - -/* Loading, success and error effects */ -.loading.submit-button button { - width: 70px; /* make a circle */ - border-width: 5px; - border-color: #ddd; - background-color: transparent; - color: #fff; -} - -.loading.submit-button span { - -webkit-transition: opacity 0.15s; - transition: opacity 0.15s; -} - -.loading.submit-button span, -.success.submit-button span, -.error.submit-button span { - opacity: 0; /* keep it hidden in all states */ -} - -.success.submit-button button, -.error.submit-button button { - -webkit-transition: background-color 0.3s, width 0.3s, border-width 0.3s; - transition: background-color 0.3s, width 0.3s, border-width 0.3s; -} - -.success.submit-button button { - border-color: #1ECD97; - background-color: #1ECD97; -} - -.error.submit-button button { - border-color: #FB797E; - background-color: #FB797E; -} - -.loading.submit-button svg.progress-circle path, -.success.submit-button svg.checkmark path, -.error.submit-button svg.cross path { - opacity: 1; - -webkit-transition: stroke-dashoffset 0.3s; - transition: stroke-dashoffset 0.3s; -} - -/* Optional elastic effect for the width of the button */ -.elastic.submit-button button { - -webkit-transition: background-color 0.3s, color 0.3s, width 0.3s cubic-bezier(0.25, 0.25, 0.4, 1), border-width 0.3s, border-color 0.3s; - -webkit-transition: background-color 0.3s, color 0.3s, width 0.3s cubic-bezier(0.25, 0.25, 0.4, 1.6), border-width 0.3s, border-color 0.3s; - transition: background-color 0.3s, color 0.3s, width 0.3s cubic-bezier(0.25, 0.25, 0.4, 1.6), border-width 0.3s, border-color 0.3s; -} - -.loading.elastic.submit-button button { - -webkit-transition: background-color 0.3s, color 0.3s, width 0.3s cubic-bezier(0.6, 0, 0.75, 0.75), border-width 0.3s, border-color 0.3s; - -webkit-transition: background-color 0.3s, color 0.3s, width 0.3s cubic-bezier(0.6, -0.6, 0.75, 0.75), border-width 0.3s, border-color 0.3s; - transition: background-color 0.3s, color 0.3s, width 0.3s cubic-bezier(0.6, -0.6, 0.75, 0.75), border-width 0.3s, border-color 0.3s; -} diff --git a/web-ethereum/orchid_dapp/src/css/form-style.css b/web-ethereum/orchid_dapp/src/css/form-style.css deleted file mode 100644 index 1872b1906..000000000 --- a/web-ethereum/orchid_dapp/src/css/form-style.css +++ /dev/null @@ -1,177 +0,0 @@ - -.form-style { - margin-top: 16px; - font-family: -apple-system, sans-serif; -} - -.wide { } - -@media only screen and (min-width: 400px) { - .form-style:not(.wide) { - max-width: 400px; - margin-left: auto; - margin-right: auto; - } -} - -.form-style label { - display: block; - margin-bottom: 8px; - font-weight: normal; - font-size: 15px; - font-stretch: normal; - font-style: normal; - line-height: 1.33; - letter-spacing: -0.24px; - color: #968dA6; -} - -/* A row with a left aligned label and right aligned content field */ -.form-row { - justify-content: space-between; - align-items: baseline; -} - -.form-row > .col { - max-width: 240px -} - -.form-row > .span { - text-align: right; -} - -.form-row-label { - font-size: 15px; - font-weight: normal; - font-stretch: normal; - font-style: normal; - line-height: 1.33; - letter-spacing: -0.24px; - color: #766d86; -} - -.form-row-field { - min-width: 50px; -} - -.form-style .title { - margin-bottom: 16px; - font-size: 17px; - font-weight: 600; - font-stretch: normal; - font-style: normal; - line-height: 1.29; - letter-spacing: -0.41px; - color: #3a3149; -} - -.form-style .title.subheading { - color: #766D86; -} - -.form-style input[type="text"], -.form-style input[type="date"], -.form-style input[type="datetime"], -.form-style input[type="email"], -.form-style input[type="number"], -.form-style-number, -.form-style input[type="search"], -.form-style input[type="time"], -.form-style input[type="url"], -.form-style textarea, -.form-style select { - outline: 0; - padding: 10px; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.03) inset; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.03) inset; - margin: 0 0 8px; - width: 100%; - height: 40px; - border-radius: 12px; - border: solid 2px #d5d7e2; - background-color: #ffffff; - font-family: -apple-system, sans-serif; - font-size: 17px; - font-weight: normal; - font-stretch: normal; - font-style: normal; - line-height: 1.29; - letter-spacing: -0.41px; - text-align: right; - color: #212121; -} - -.form-style input[type="text"]:focus, -.form-style input[type="date"]:focus, -.form-style input[type="datetime"]:focus, -.form-style input[type="email"]:focus, -.form-style input[type="number"]:focus, -.form-style input[type="search"]:focus, -.form-style input[type="time"]:focus, -.form-style input[type="url"]:focus, -.form-style textarea:focus, -.form-style select:focus { - border: solid 2px #5f45ba; - /*text-align: left;*/ -} - -.form-style select { - -webkit-appearance: menulist-button; - height: 35px; -} - -.form-style input[type="submit"], -.form-style input[type="button"] { - position: relative; - display: block; - padding: 19px 39px 18px 39px; - font-size: 18px; - text-align: center; - font-style: normal; - width: 100%; - margin: 0 auto 10px; -} - -.form-style input[type="submit"]:hover, -.form-style input[type="button"]:hover { -} - -.form-style hr { - border-width: 0.5px; - color: lightslategray; -} - -.editable { } - -.error { - color: red; - margin-left: 6px; -} - -.instructions-narrow, -.instructions { - color: gray; - margin-top: 8px; - margin-bottom: 8px; - font-size: 11px; - font-weight: normal; - font-stretch: normal; - font-style: normal; - line-height: 1.18; - letter-spacing: 0.07px; - color: #766d86; -} -.instructions-narrow { - margin: 8px auto; - text-align: center; -} - -/* Pad or hide the number spinner button on number type fields */ -input::-webkit-outer-spin-button, -input::-webkit-inner-spin-button { margin-left: 20px; } -input[type=number] { - -moz-appearance:textfield; -} diff --git a/web-ethereum/orchid_dapp/src/css/jquery-ui.min.css b/web-ethereum/orchid_dapp/src/css/jquery-ui.min.css deleted file mode 120000 index aa42161fc..000000000 --- a/web-ethereum/orchid_dapp/src/css/jquery-ui.min.css +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/jquery-ui-themes/jquery-ui.min.css \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/src/i18n/S.ts b/web-ethereum/orchid_dapp/src/i18n/S.ts deleted file mode 100644 index 8096c485b..000000000 --- a/web-ethereum/orchid_dapp/src/i18n/S.ts +++ /dev/null @@ -1,200 +0,0 @@ -/// -/// GENERATED CODE: Do not modify! -/// -import {intl} from "../index"; - -export class S { - static get title() { return intl.formatMessage({id: 'title', - defaultMessage: 'This is the title'}); } - static get hello() { return intl.formatMessage({id: 'hello', - defaultMessage: 'Hello, {name}, you have {itemCount, plural, =0 {no items} one {# item} other {# items} }'}); } - static get letsGetStarted() { return intl.formatMessage({id: 'letsGetStarted', - defaultMessage: 'Let’s get started!'}); } - static get youreAlmostThere() { return intl.formatMessage({id: 'youreAlmostThere', - defaultMessage: 'You’re almost there!'}); } - static get pleaseSelectEthNetwork() { return intl.formatMessage({id: 'pleaseSelectEthNetwork', - defaultMessage: 'Please select the Ethereum Main Network in your Dapp Browser!'}); } - static get createAccount() { return intl.formatMessage({id: 'createAccount', - defaultMessage: 'Create Account'}); } - static get addFundsToYourAccount() { return intl.formatMessage({id: 'addFundsToYourAccount', - defaultMessage: 'Add Funds to your Account'}); } - static get welcomeToYourOrchidAccount() { return intl.formatMessage({id: 'welcomeToYourOrchidAccount', - defaultMessage: 'Welcome to your Orchid Account'}); } - static get yourOrchidAccountIsFunded() { return intl.formatMessage({id: 'yourOrchidAccountIsFunded', - defaultMessage: 'Your Orchid Account is funded and ready to go!'}); } - static get yourWalletIsEmpty() { return intl.formatMessage({id: 'yourWalletIsEmpty', - defaultMessage: 'Your wallet is empty.'}); } - static get youAreReadyToCreateOrchidAccount() { return intl.formatMessage({id: 'youAreReadyToCreateOrchidAccount', - defaultMessage: 'You are ready to create an Orchid account with funds from your wallet.'}); } - static get continueBelowToCreateAccount() { return intl.formatMessage({id: 'continueBelowToCreateAccount', - defaultMessage: 'Continue below to create your account.'}); } - static get yourOrchidAccountIsReadyToReceive() { return intl.formatMessage({id: 'yourOrchidAccountIsReadyToReceive', - defaultMessage: 'Your Orchid Account is ready to receive funds from your wallet.'}); } - static get proceedBelowToAddFunds() { return intl.formatMessage({id: 'proceedBelowToAddFunds', - defaultMessage: 'Proceed below to add funds to your account.'}); } - static get info() { return intl.formatMessage({id: 'info', - defaultMessage: 'Info'}); } - static get transactions() { return intl.formatMessage({id: 'transactions', - defaultMessage: 'Transactions'}); } - static get moveFunds() { return intl.formatMessage({id: 'moveFunds', - defaultMessage: 'Move Funds'}); } - static get lockUnlockFunds() { return intl.formatMessage({id: 'lockUnlockFunds', - defaultMessage: 'Lock / Unlock Funds'}); } - static get advanced() { return intl.formatMessage({id: 'advanced', - defaultMessage: 'Advanced'}); } - static get overview() { return intl.formatMessage({id: 'overview', - defaultMessage: 'Overview'}); } - static get add() { return intl.formatMessage({id: 'add', - defaultMessage: 'Add'}); } - static get withdraw() { return intl.formatMessage({id: 'withdraw', - defaultMessage: 'Withdraw'}); } - static get more() { return intl.formatMessage({id: 'more', - defaultMessage: 'More'}); } - static get balanceCaps() { return intl.formatMessage({id: 'balanceCaps', - defaultMessage: 'BALANCE'}); } - static get quickSetUp() { return intl.formatMessage({id: 'quickSetUp', - defaultMessage: 'Quick Set Up'}); } - static get createAccountWithAvailable() { return intl.formatMessage({id: 'createAccountWithAvailable', - defaultMessage: 'Create account with available Orchid tokens.'}); } - static get fromAvailable() { return intl.formatMessage({id: 'fromAvailable', - defaultMessage: 'From Available'}); } - static get enterCustomAmount() { return intl.formatMessage({id: 'enterCustomAmount', - defaultMessage: 'Enter custom amount'}); } - static get transferAvailable() { return intl.formatMessage({id: 'transferAvailable', - defaultMessage: 'Transfer Available'}); } - static get transactionComplete() { return intl.formatMessage({id: 'transactionComplete', - defaultMessage: 'Transaction Complete!'}); } - static get transactionFailed() { return intl.formatMessage({id: 'transactionFailed', - defaultMessage: 'Transaction Failed'}); } - static get addFunds() { return intl.formatMessage({id: 'addFunds', - defaultMessage: 'Add Funds'}); } - static get withdrawFunds() { return intl.formatMessage({id: 'withdrawFunds', - defaultMessage: 'Withdraw Funds'}); } - static get lock() { return intl.formatMessage({id: 'lock', - defaultMessage: 'Lock'}); } - static get unlock() { return intl.formatMessage({id: 'unlock', - defaultMessage: 'Unlock'}); } - static get moveFundsToDeposit() { return intl.formatMessage({id: 'moveFundsToDeposit', - defaultMessage: 'Move Funds To Deposit'}); } - static get resetAccount() { return intl.formatMessage({id: 'resetAccount', - defaultMessage: 'Reset Account'}); } - static get pending() { return intl.formatMessage({id: 'pending', - defaultMessage: 'Pending'}); } - static get complete() { return intl.formatMessage({id: 'complete', - defaultMessage: 'Complete'}); } - static get failed() { return intl.formatMessage({id: 'failed', - defaultMessage: 'Failed!'}); } - static get transaction() { return intl.formatMessage({id: 'transaction', - defaultMessage: 'Transaction'}); } - static get checkingWalletStatus() { return intl.formatMessage({id: 'checkingWalletStatus', - defaultMessage: 'Checking Wallet Status'}); } - static get viewOnBlockchain() { return intl.formatMessage({id: 'viewOnBlockchain', - defaultMessage: 'View on blockchain'}); } - static get status() { return intl.formatMessage({id: 'status', - defaultMessage: 'Status'}); } - static get confirmations() { return intl.formatMessage({id: 'confirmations', - defaultMessage: 'Confirmations'}); } - static get hash() { return intl.formatMessage({id: 'hash', - defaultMessage: 'Hash'}); } - static get createNewAccount() { return intl.formatMessage({id: 'createNewAccount', - defaultMessage: 'Create New Account'}); } - static get addToBalance() { return intl.formatMessage({id: 'addToBalance', - defaultMessage: 'Add to Balance'}); } - static get addToDeposit() { return intl.formatMessage({id: 'addToDeposit', - defaultMessage: 'Add to Deposit'}); } - static get signerKey() { return intl.formatMessage({id: 'signerKey', - defaultMessage: 'Signer Key'}); } - static get address() { return intl.formatMessage({id: 'address', - defaultMessage: 'Address'}); } - static get yourDepositSecuresAccessInstruction() { return intl.formatMessage({id: 'yourDepositSecuresAccessInstruction', - defaultMessage: 'Your deposit secures access to the Orchid network and demonstrates authenticity to bandwidth sellers.'}); } - static get total() { return intl.formatMessage({id: 'total', - defaultMessage: 'Total'}); } - static get withdrawFromBalance() { return intl.formatMessage({id: 'withdrawFromBalance', - defaultMessage: 'Withdraw from balance'}); } - static get balance() { return intl.formatMessage({id: 'balance', - defaultMessage: 'Balance'}); } - static get withdrawingTo() { return intl.formatMessage({id: 'withdrawingTo', - defaultMessage: 'Withdrawing to'}); } - static get withdrawFullBalanceAndDeposit() { return intl.formatMessage({id: 'withdrawFullBalanceAndDeposit', - defaultMessage: 'Withdraw Full Balance and Deposit'}); } - static get noteIfOverdraftOccurs() { return intl.formatMessage({id: 'noteIfOverdraftOccurs', - defaultMessage: 'Note: If an overdraft occurs on your Orchid balance, your deposit will be lost.'}); } - static get funderWalletAddress() { return intl.formatMessage({id: 'funderWalletAddress', - defaultMessage: 'Funder wallet address'}); } - static get copy() { return intl.formatMessage({id: 'copy', - defaultMessage: 'Copy'}); } - static get signerAddress() { return intl.formatMessage({id: 'signerAddress', - defaultMessage: 'Signer Address'}); } - static get lotteryPot() { return intl.formatMessage({id: 'lotteryPot', - defaultMessage: 'Lottery Pot'}); } - static get deposit() { return intl.formatMessage({id: 'deposit', - defaultMessage: 'Deposit'}); } - static get fundsStatus() { return intl.formatMessage({id: 'fundsStatus', - defaultMessage: 'Funds Status'}); } - static get locked() { return intl.formatMessage({id: 'locked', - defaultMessage: 'Locked'}); } - static get unlocked() { return intl.formatMessage({id: 'unlocked', - defaultMessage: 'Unlocked'}); } - static get lockedUntil() { return intl.formatMessage({id: 'lockedUntil', - defaultMessage: 'Locked until'}); } - - static get accountQRCode() { return intl.formatMessage({id: 'accountQRCode', - defaultMessage: 'Account QR Code'}); } - static get revealQR() { return intl.formatMessage({id: 'revealQR', - defaultMessage: 'Reveal QR'}); } - static get copyCode() { return intl.formatMessage({id: 'copyCode', - defaultMessage: 'Copy Code'}); } - static get date() { return intl.formatMessage({id: 'date', - defaultMessage: 'Date'}); } - static get tx() { return intl.formatMessage({id: 'tx', - defaultMessage: 'Tx'}); } - - static get loading() { return intl.formatMessage({id: 'loading', - defaultMessage: 'Loading'}); } - static get account() { return intl.formatMessage({id: 'account', - defaultMessage: 'Account'}); } - static get moveFundsFromYourLotteryPot() { return intl.formatMessage({id: 'moveFundsFromYourLotteryPot', - defaultMessage: 'Move funds from your Lottery Pot balance to your deposit.'}); } - static get balanceFundsAreUsedByOrchid() { return intl.formatMessage({id: 'balanceFundsAreUsedByOrchid', - defaultMessage: 'Balance funds are used by Orchid services and can be withdrawn at any time.'}); } - static get depositFundsAreRequiredToParticipate() { return intl.formatMessage({id: 'depositFundsAreRequiredToParticipate', - defaultMessage: 'Deposit funds are required to participate in the Orchid network and can be withdrawn after an unlock notice period.'}); } - static get availableLotteryPotBalance() { return intl.formatMessage({id: 'availableLotteryPotBalance', - defaultMessage: 'Available Lottery Pot Balance Amount'}); } - static get moveToDepositAmount() { return intl.formatMessage({id: 'moveToDepositAmount', - defaultMessage: 'Move to Deposit Amount'}); } - static get submit() { return intl.formatMessage({id: 'submit', - defaultMessage: 'Submit'}); } - static get toWithdrawYourFullBalance() { return intl.formatMessage({id: 'toWithdrawYourFullBalance', - defaultMessage: 'To withdraw your full balance including the deposit the account must be unlocked.'}); } - static get fundsWillBeAvailableAt() { return intl.formatMessage({id: 'fundsWillBeAvailableAt', - defaultMessage: 'Funds will be available at the time shown below.'}); } - static get ifYouWishToCancelWithdrawal() { return intl.formatMessage({id: 'ifYouWishToCancelWithdrawal', - defaultMessage: 'If you wish to cancel the withdrawal process and continue using your deposit re-lock funds.'}); } - static get debugOutput() { return intl.formatMessage({id: 'debugOutput', - defaultMessage: 'Debug Output'}); } - static get currentStake() { return intl.formatMessage({id: 'currentStake', - defaultMessage: 'Current Stake'}); } - - static get addToStake() { return intl.formatMessage({id: 'addToStake', - defaultMessage: 'Add to Stake'}); } - static get stakeFunds() { return intl.formatMessage({id: 'stakeFunds', - defaultMessage: 'Stake Funds'}); } - static get stake() { return intl.formatMessage({id: 'stake', - defaultMessage: 'Stake'}); } - static get stakeeAddress() { return intl.formatMessage({id: 'stakeeAddress', - defaultMessage: 'Stakee (Provider) Address'}); } - static get stakeeProvider() { return intl.formatMessage({id: 'stakeeProvider', - defaultMessage: 'Stakee (Provider)'}); } - static get delay() { return intl.formatMessage({id: 'delay', - defaultMessage: 'Delay'}); } - static get delayDays() { return intl.formatMessage({id: 'delayDays', - defaultMessage: 'Delay Days'}); } - static get delaySeconds() { return intl.formatMessage({id: 'delaySeconds', - defaultMessage: 'Delay Seconds'}); } - static get days() { return intl.formatMessage({id: 'days', - defaultMessage: 'Days'}); } - static get orchidAccount() { return intl.formatMessage({id: 'orchidAccount', - defaultMessage: 'Orchid Account'}); } -} diff --git a/web-ethereum/orchid_dapp/src/i18n/en.json b/web-ethereum/orchid_dapp/src/i18n/en.json deleted file mode 100644 index 4bd785d4f..000000000 --- a/web-ethereum/orchid_dapp/src/i18n/en.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "title": "This is the title", - "hello": "Hello, {name}, you have {itemCount, plural, =0 {no items} one {# item} other {# items} }", - "letsGetStarted": "Let’s get started!", - "youreAlmostThere": "You’re almost there!", - "pleaseSelectEthNetwork": "Please select the Ethereum Main Network in your Dapp Browser!", - "createAccount": "Create Account", - "addFundsToYourAccount": "Add Funds to your Account", - "welcomeToYourOrchidAccount": "Welcome to your Orchid Account", - - "yourOrchidAccountIsFunded": "Your Orchid Account is funded and ready to go!", - "yourWalletIsEmpty": "Your wallet is empty.", - "youAreReadyToCreateOrchidAccount": "You are ready to create an Orchid account with funds from your wallet.", - "continueBelowToCreateAccount": "Continue below to create your account.", - "yourOrchidAccountIsReadyToReceive": "Your Orchid Account is ready to receive funds from your wallet.", - "proceedBelowToAddFunds": "Proceed below to add funds to your account.", - - "info": "Info", - "transactions": "Transactions", - "moveFunds": "Move Funds", - "lockUnlockFunds": "Lock / Unlock Funds", - "advanced": "Advanced", - - "overview": "Overview", - "add": "Add", - "withdraw": "Withdraw", - "more": "More", - - "balanceCaps": "BALANCE", - - "quickSetUp": "Quick Set Up", - "createAccountWithAvailable": "Create account with available Orchid tokens.", - "fromAvailable": "From Available", - - "enterCustomAmount": "Enter custom amount", - "transferAvailable": "Transfer Available", - - "transactionComplete": "Transaction Complete!", - "transactionFailed": "Transaction Failed", - - "addFunds": "Add Funds", - "withdrawFunds": "Withdraw Funds", - "lock": "Lock", - "unlock": "Unlock", - "moveFundsToDeposit": "Move Funds To Deposit", - "resetAccount": "Reset Account", - "pending": "Pending", - "complete": "Complete", - "failed": "Failed!", - "transaction": "Transaction", - - "checkingWalletStatus": "Checking Wallet Status", - - "viewOnBlockchain": "View on blockchain", - "status": "Status", - "confirmations": "Confirmations", - "hash": "Hash", - - "createNewAccount": "Create New Account", - "addToBalance": "Add to Balance", - "addToDeposit": "Add to Deposit", - - "signerKey": "Signer Key", - "address": "Address", - - "yourDepositSecuresAccessInstruction": "Your deposit secures access to the Orchid network and demonstrates authenticity to bandwidth sellers.", - "total": "Total", - - "withdrawFromBalance": "Withdraw from balance", - "balance": "Balance", - "withdrawingTo": "Withdrawing to", - - "withdrawFullBalanceAndDeposit": "Withdraw Full Balance and Deposit", - "noteIfOverdraftOccurs": "Note: If an overdraft occurs on your Orchid balance, your deposit will be lost.", - - "funderWalletAddress": "Funder wallet address", - - "copy": "Copy", - "signerAddress": "Signer Address", - - "lotteryPot": "Lottery Pot", - "deposit": "Deposit", - "fundsStatus": "Funds Status", - "locked": "Locked", - "unlocked": "Unlocked", - "lockedUntil": "Locked until", - "@lockedUntil": { - "description": "Locked until date/time" - }, - - "accountQRCode": "Account QR Code", - "revealQR": "Reveal QR", - "copyCode": "Copy Code", - - "date": "Date", - "tx": "Tx", - "@tx": { - "description": "abbreviation for 'transactions'" - }, - "loading": "Loading", - - "account": "Account", - - "moveFundsFromYourLotteryPot": "Move funds from your Lottery Pot balance to your deposit.", - "balanceFundsAreUsedByOrchid": "Balance funds are used by Orchid services and can be withdrawn at any time.", - "depositFundsAreRequiredToParticipate": "Deposit funds are required to participate in the Orchid network and can be withdrawn after an unlock notice period.", - "availableLotteryPotBalance": "Available Lottery Pot Balance Amount", - "moveToDepositAmount": "Move to Deposit Amount", - - "submit": "Submit", - - "toWithdrawYourFullBalance": "To withdraw your full balance including the deposit the account must be unlocked.", - "fundsWillBeAvailableAt": "Funds will be available at the time shown below.", - "ifYouWishToCancelWithdrawal": "If you wish to cancel the withdrawal process and continue using your deposit re-lock funds.", - - "debugOutput": "Debug Output", - - "currentStake": "Current Stake", - "@currentStake": { - "description": "Current financial stake" - }, - "addToStake": "Add to Stake", - "stakeFunds": "Stake Funds", - "stake": "Stake", - "stakeeAddress": "Stakee (Provider) Address", - "stakeeProvider": "Stakee (Provider)", - "delay": "Delay", - "delayDays": "Delay Days", - "delaySeconds": "Delay Seconds", - "days": "Days", - "orchidAccount": "Orchid Account" -} diff --git a/web-ethereum/orchid_dapp/src/i18n/i18n_util.ts b/web-ethereum/orchid_dapp/src/i18n/i18n_util.ts deleted file mode 100644 index c8911ddf1..000000000 --- a/web-ethereum/orchid_dapp/src/i18n/i18n_util.ts +++ /dev/null @@ -1,17 +0,0 @@ -import {intl} from "../index"; - -export {} - -declare global { - interface Number { - toFixedLocalized(decimals: number, useGrouping?: boolean): string; - } -} - -(Number.prototype as any).toFixedLocalized = function (decimals: number, useGrouping?: boolean): string { - return intl.formatNumber(this, { - maximumFractionDigits: decimals, - minimumFractionDigits: 1, - useGrouping: useGrouping ?? false, - }); -}; diff --git a/web-ethereum/orchid_dapp/src/i18n/id.json b/web-ethereum/orchid_dapp/src/i18n/id.json deleted file mode 100644 index 77a84718c..000000000 --- a/web-ethereum/orchid_dapp/src/i18n/id.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "title": "Inilah judul", - "hello": "Hai {name}, Anda punya {itemCount, plural, =0 {0 item} other {# item} }", - "letsGetStarted": "Mari kita mulai!", - "youreAlmostThere": "Hampir selesai!", - "pleaseSelectEthNetwork": "Silakan pilih Ethereum Main Network (jaringan utama Ethereum) pada peramban DApp!", - "createAccount": "Buat akun", - "addFundsToYourAccount": "Tambahkan dana ke akun Anda", - "welcomeToYourOrchidAccount": "Selamat datang di akun Orchid Anda", - "yourOrchidAccountIsFunded": "Akun Orchid Anda telah didanai dan siap untuk dipakai!", - "yourWalletIsEmpty": "Dompet Anda kosong.", - "youAreReadyToCreateOrchidAccount": "Anda siap untuk membuat akun Orchid dengan dana dari dompet Anda.", - "continueBelowToCreateAccount": "Lanjutkan di bawah ini untuk membuat akun.", - "yourOrchidAccountIsReadyToReceive": "Akun Orchid Anda siap untuk menerima dana dari dompet Anda.", - "proceedBelowToAddFunds": "Lanjutkan di bawah ini untuk menambahkan dana ke akun Anda.", - "info": "Info", - "transactions": "Transaksi", - "moveFunds": "Pindahkan dana", - "lockUnlockFunds": "Kunci / buka akses ke dana", - "advanced": "Lanjutan", - "overview": "Ikhtisar", - "add": "Tambahkan", - "withdraw": "Tarik mata uang", - "more": "Lainnya", - "balanceCaps": "SALDO", - "quickSetUp": "Penyiapan cepat", - "createAccountWithAvailable": "Buat akun dengan token Orchid yang tersedia.", - "fromAvailable": "Dari yang tersedia", - "enterCustomAmount": "Masukkan jumlah khusus", - "transferAvailable": "Transfer yang tersedia", - "transactionComplete": "Transaksi selesai!", - "transactionFailed": "Transaksi gagal", - "addFunds": "Tambahkan dana", - "withdrawFunds": "Tarik dana", - "lock": "Kunci", - "unlock": "Buka", - "moveFundsToDeposit": "Pindahkan dana ke deposito", - "resetAccount": "Atur ulang akun", - "pending": "Tertunda", - "complete": "Selesai", - "failed": "Gagal!", - "transaction": "Transaksi", - "checkingWalletStatus": "Memeriksa status dompet", - "viewOnBlockchain": "Lihat di blockchain", - "status": "Status", - "confirmations": "Konfirmasi", - "hash": "Hash", - "createNewAccount": "Buat akun baru", - "addToBalance": "Tambahkan ke saldo", - "addToDeposit": "Tambahkan ke deposito", - "signerKey": "Kunci penanda tangan", - "address": "Alamat", - "yourDepositSecuresAccessInstruction": "Deposito Anda mengamankan akses ke jaringan Orchid dan menunjukkan keautentikan kepada penjual lebar pita.", - "total": "Total", - "withdrawFromBalance": "Tarik dari saldo", - "balance": "Saldo", - "withdrawingTo": "Tarik ke", - "withdrawFullBalanceAndDeposit": "Tarik semua saldo dan deposito", - "noteIfOverdraftOccurs": "Catatan: Jika cerukan terjadi pada saldo Orchid Anda, deposito Anda akan hilang.", - "walletAddress": "Alamat dompet", - "copy": "Salin", - "signerAddress": "Alamat penanda tangan", - "lotteryPot": "Saldo", - "deposit": "Deposito", - "fundsStatus": "Status dana", - "locked": "Terkunci", - "unlocked": "Terbuka", - "lockedUntil": "Dikunci sampai", - "@lockedUntil": { - "description": "Dikunci sampai tanggal/waktu" - }, - "accountQRCode": "Kode QR akun", - "revealQR": "Perlihatkan QR", - "copyCode": "Salin kode", - "date": "Tanggal", - "tx": "Tr", - "@tx": { - "description": "singkatan untuk “transaksi”" - }, - "loading": "Memuat", - "account": "Akun", - "moveFundsFromYourLotteryPot": "Pindahkan dana dari saldo pot lotre Anda ke deposito Anda.", - "balanceFundsAreUsedByOrchid": "Saldo dana digunakan oleh layanan Orchid dan dapat ditarik kapan saja.", - "depositFundsAreRequiredToParticipate": "Dana deposito diperlukan untuk berpartisipasi dalam jaringan Orchid dan dapat ditarik setelah periode notifikasi buka kunci.", - "availableLotteryPotBalance": "Jumlah saldo pot lotre yang tersedia", - "moveToDepositAmount": "Pindahkan ke jumlah deposito", - "submit": "Kirim", - "toWithdrawYourFullBalance": "Untuk menarik semua saldo Anda, termasuk deposito, akun harus dibuka kuncinya.", - "fundsWillBeAvailableAt": "Dana akan tersedia pada waktu yang tertera di bawah ini.", - "ifYouWishToCancelWithdrawal": "Jika Anda ingin membatalkan proses penarikan dan terus menggunakan deposito Anda, kunci kembali dana.", - "debugOutput": "Keluaran awakutu", - "currentStake": "Taruhan saat ini", - "@currentStake": { - "description": "Taruhan keuangan saat ini" - }, - "addToStake": "Tambahkan ke taruhan", - "stakeFunds": "Taruh dana", - "stakeeAddress": "Alamat (penyedia) peserta taruhan", - "stakeeProvider": "Peserta taruhan (penyedia)", - "delay": "Tundaan", - "delayDays": "Tundaan hari", - "delaySeconds": "Tundaan detik", - "days": "Hari" -} diff --git a/web-ethereum/orchid_dapp/src/i18n/ja.json b/web-ethereum/orchid_dapp/src/i18n/ja.json deleted file mode 100644 index 66f97704a..000000000 --- a/web-ethereum/orchid_dapp/src/i18n/ja.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "title": "これはタイトルです", - "hello": "こんにちは {name} さん、{itemCount, plural, =0 {no items} other {# items} } があります", - "letsGetStarted": "始めましょう!", - "youreAlmostThere": "あと少しで完了します!", - "pleaseSelectEthNetwork": "Dapp ブラウザでイーサリアム メイン ネットワークを選択してください!", - "createAccount": "アカウントの作成", - "addFundsToYourAccount": "アカウントに資金を追加する", - "welcomeToYourOrchidAccount": "Orchid アカウントにようこそ", - "yourOrchidAccountIsFunded": "Orchid アカウントに資金が追加され、使用する準備が完了しました!", - "yourWalletIsEmpty": "ウォレットが空です。", - "youAreReadyToCreateOrchidAccount": "あなたのウォレットの資金を使って Orchid アカウントを作成する準備が整いました。", - "continueBelowToCreateAccount": "以下の手順に従って、アカウントを作成します。", - "yourOrchidAccountIsReadyToReceive": "Orchid アカウントは、ウォレットから資金を受け取る準備が整いました。", - "proceedBelowToAddFunds": "以下に進み、アカウントに資金を追加してください。", - "info": "情報", - "transactions": "トランザクション", - "moveFunds": "資金を移動", - "lockUnlockFunds": "資金をロック/ロック解除", - "advanced": "詳細", - "overview": "概要", - "add": "追加", - "withdraw": "引き出し", - "more": "その他", - "balanceCaps": "残高", - "quickSetUp": "クイック セットアップ", - "createAccountWithAvailable": "利用可能な Orchid トークンを使用してアカウントを作成します。", - "fromAvailable": "利用可能な資金から", - "enterCustomAmount": "カスタム金額を入力", - "transferAvailable": "転送可能", - "transactionComplete": "トランザクション完了!", - "transactionFailed": "トランザクションが失敗しました", - "addFunds": "資金を追加", - "withdrawFunds": "資金の引き出し", - "lock": "ロック", - "unlock": "ロック解除", - "moveFundsToDeposit": "預金へ資金を移動", - "resetAccount": "アカウントのリセット", - "pending": "保留中", - "complete": "完了", - "failed": "失敗しました!", - "transaction": "トランザクション", - "checkingWalletStatus": "ウォレットのステータスを確認", - "viewOnBlockchain": "ブロックチェーンを表示", - "status": "ステータス", - "confirmations": "確認", - "hash": "ハッシュ", - "createNewAccount": "新しいアカウントを作成", - "addToBalance": "残高に追加", - "addToDeposit": "預金に追加", - "signerKey": "署名者キー", - "address": "アドレス", - "yourDepositSecuresAccessInstruction": "預け入れにより、Orchid ネットワークにアクセスし、帯域幅ベンダーとの信頼性を確認できます。", - "total": "合計", - "withdrawFromBalance": "残高から引き出し", - "balance": "残高", - "withdrawingTo": "引き出し先", - "withdrawFullBalanceAndDeposit": "全残高と預金を引き出す", - "noteIfOverdraftOccurs": "注:Orchid 残高で当座貸越が発生した場合、預金は失われます。", - "walletAddress": "ウォレット アドレス", - "copy": "コピー", - "signerAddress": "署名者アドレス", - "lotteryPot": "残高", - "deposit": "預金", - "fundsStatus": "資金のステータス", - "locked": "ロックされています", - "unlocked": "ロック解除されています", - "lockedUntil": "ロックの期限", - "@lockedUntil": { - "description": "日付/時刻までロック" - }, - "accountQRCode": "アカウント QR コード", - "revealQR": "QR コードを表示", - "copyCode": "コードをコピー", - "date": "日付", - "tx": "トランザクション", - "@tx": { - "description": "「トランザクション」の略称" - }, - "loading": "読み込み中", - "account": "アカウント", - "moveFundsFromYourLotteryPot": "あなたの残高から預金に資金を移動します。", - "balanceFundsAreUsedByOrchid": "残高資金は Orchid サービスによって使用され、いつでも引き出すことができます。", - "depositFundsAreRequiredToParticipate": "預け入れ資金は、Orchid ネットワークに加わるために必要で、ロック解除通知期間後に引き出すことができます。", - "availableLotteryPotBalance": "利用可能な残高額", - "moveToDepositAmount": "預金金額に移動", - "submit": "送信", - "toWithdrawYourFullBalance": "預け入れを含むあなたの全残高を引き出すには、アカウントのロックを解除する必要があります。", - "fundsWillBeAvailableAt": "資金は以下の時点で利用可能になります。", - "ifYouWishToCancelWithdrawal": "引き出しプロセスをキャンセルし、預金を使用し続ける場合は、資金を再度ロックしてください。", - "debugOutput": "デバッグ出力", - "currentStake": "現在のステーク", - "@currentStake": { - "description": "現在の金融ステーク" - }, - "addToStake": "ステークに追加", - "stakeFunds": "資金をステーク", - "stakeeAddress": "ステーキング サービス (プロバイダー) アドレス", - "stakeeProvider": "ステーキング サービス (プロバイダー)", - "delay": "遅延", - "delayDays": "遅延日数", - "delaySeconds": "遅延秒数", - "days": "日" -} diff --git a/web-ethereum/orchid_dapp/src/i18n/ko.json b/web-ethereum/orchid_dapp/src/i18n/ko.json deleted file mode 100644 index 44d1f814a..000000000 --- a/web-ethereum/orchid_dapp/src/i18n/ko.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "title": "이것은 제목입니다", - "hello": "{name} 님, 안녕하세요! {itemCount, plural, =0 {항목이 없습니다} other {#개의 항목이 있습니다} }", - "letsGetStarted": "시작해 봅시다!", - "youreAlmostThere": "거의 다 되었습니다!", - "pleaseSelectEthNetwork": "DApp 브라우저에서 이더리움 메인 네트워크를 선택하십시오!", - "createAccount": "계정 생성하기", - "addFundsToYourAccount": "계정에 자금 추가하기", - "welcomeToYourOrchidAccount": "Orchid 계정에 오신 것을 환영합니다", - "yourOrchidAccountIsFunded": "Orchid 계정에 자금이 추가되어, 사용할 준비가 되었습니다!", - "yourWalletIsEmpty": "지갑이 비어 있습니다.", - "youAreReadyToCreateOrchidAccount": "지갑의 자금을 사용해 Orchid 계정을 생성할 준비가 되었습니다.", - "continueBelowToCreateAccount": "아래에서 계속하여 계정을 생성하십시오.", - "yourOrchidAccountIsReadyToReceive": "Orchid 계정이 지갑에서 자금을 받을 준비가 되었습니다.", - "proceedBelowToAddFunds": "아래에서 계속 진행하여 계정에 자금을 추가하십시오.", - "info": "정보", - "transactions": "트랜잭션", - "moveFunds": "자금 이동", - "lockUnlockFunds": "자금 잠금 / 잠금 해제", - "advanced": "고급", - "overview": "개요", - "add": "추가", - "withdraw": "인출", - "more": "더 보기", - "balanceCaps": "잔고", - "quickSetUp": "빠른 설정", - "createAccountWithAvailable": "이용 가능한 Orchid 토큰으로 계정을 생성합니다.", - "fromAvailable": "이용 가능 자금", - "enterCustomAmount": "사용자 지정 금액 입력", - "transferAvailable": "이체 가능", - "transactionComplete": "트랜잭션 완료!", - "transactionFailed": "트랜잭션 실패", - "addFunds": "자금 추가", - "withdrawFunds": "자금 인출", - "lock": "잠금", - "unlock": "잠금 해제", - "moveFundsToDeposit": "예치금으로 자금 이동", - "resetAccount": "계정 재설정", - "pending": "대기 중", - "complete": "완료", - "failed": "실패!", - "transaction": "트랜잭션", - "checkingWalletStatus": "지갑 상태 확인 중", - "viewOnBlockchain": "블록체인에서 보기", - "status": "상태", - "confirmations": "확인", - "hash": "해시", - "createNewAccount": "새 계정 생성", - "addToBalance": "잔고에 추가", - "addToDeposit": "예치금에 추가", - "signerKey": "서명자 키", - "address": "주소", - "yourDepositSecuresAccessInstruction": "예치금을 통해 Orchid 네트워크에 대한 액세스를 확보하고, 대역폭 판매자에게 신뢰성을 부여할 수 있습니다.", - "total": "합계", - "withdrawFromBalance": "잔고에서 인출", - "balance": "잔고", - "withdrawingTo": "인출할 곳", - "withdrawFullBalanceAndDeposit": "잔고 전액 및 예치금 인출", - "noteIfOverdraftOccurs": "주의: Orchid 잔고에서 초과 인출이 발생할 경우 예치금이 손실됩니다.", - "walletAddress": "지갑 주소", - "copy": "복사", - "signerAddress": "서명자 주소", - "lotteryPot": "잔고", - "deposit": "예치금", - "fundsStatus": "자금 상태", - "locked": "잠김", - "unlocked": "잠금 해제됨", - "lockedUntil": "잠금 기한", - "@lockedUntil": { - "description": "잠금 기한 (날짜/시간)" - }, - "accountQRCode": "계정 QR 코드", - "revealQR": "QR 표시하기", - "copyCode": "코드 복사", - "date": "날짜", - "tx": "트랜잭션", - "@tx": { - "description": "'트랜잭션'의 약어" - }, - "loading": "불러오는 중", - "account": "계정", - "moveFundsFromYourLotteryPot": "잔고에서 예치금으로 자금을 이동합니다.", - "balanceFundsAreUsedByOrchid": "잔고 자금은 Orchid 서비스에 사용되며 언제든지 인출할 수 있습니다.", - "depositFundsAreRequiredToParticipate": "예치금 자금은 Orchid 네트워크에 참가할 때 필요하고 잠금 해제 통지 기간 후에 인출할 수 있습니다.", - "availableLotteryPotBalance": "이용 가능 잔고 금액", - "moveToDepositAmount": "예치금 금액으로 이동", - "submit": "제출", - "toWithdrawYourFullBalance": "예치금을 포함한 잔고 전액을 인출하려면 계정이 잠금 해제되어야 합니다.", - "fundsWillBeAvailableAt": "아래 표시된 시간에 자금을 이용할 수 있습니다.", - "ifYouWishToCancelWithdrawal": "인출 절차를 취소하고 예치금을 계속 사용하려면 자금을 다시 잠그세요.", - "debugOutput": "디버그 출력", - "currentStake": "현재 지분", - "@currentStake": { - "description": "현재 금융 지분" - }, - "addToStake": "지분에 추가", - "stakeFunds": "지분 자금", - "stakeeAddress": "지분자 (공급자) 주소", - "stakeeProvider": "지분자 (공급자)", - "delay": "지연", - "delayDays": "지연 일수", - "delaySeconds": "지연 초수", - "days": "일" -} diff --git a/web-ethereum/orchid_dapp/src/i18n/ru.json b/web-ethereum/orchid_dapp/src/i18n/ru.json deleted file mode 100644 index 7a96fc058..000000000 --- a/web-ethereum/orchid_dapp/src/i18n/ru.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "title": "Это название", - "hello": "Здравствуйте, {name}! У вас {itemCount, plural, =0 {нет элементов} one {# элемент} few {# элемента} many {# элементов} other {# элемента} }", - "letsGetStarted": "Давайте начнем!", - "youreAlmostThere": "Вы почти закончили!", - "pleaseSelectEthNetwork": "Выберите основную сеть Ethereum в своем браузере Dapp!", - "createAccount": "Создать учетную запись", - "addFundsToYourAccount": "Добавить средства на ваш счет", - "welcomeToYourOrchidAccount": "Добро пожаловать в вашу учетную запись Orchid", - "yourOrchidAccountIsFunded": "На ваш счет Orchid добавлены средства и все готово к работе!", - "yourWalletIsEmpty": "Ваш кошелек пуст.", - "youAreReadyToCreateOrchidAccount": "Вы можете создать счет Orchid, используя средства из вашего кошелька.", - "continueBelowToCreateAccount": "Перейдите ниже, чтобы создать свой счет.", - "yourOrchidAccountIsReadyToReceive": "Вы можете получать средства с кошелька на свой счет Orchid.", - "proceedBelowToAddFunds": "Перейдите нижче, чтобы пополнить свой счет.", - "info": "Информация", - "transactions": "Транзакции", - "moveFunds": "Переместить средства", - "lockUnlockFunds": "Заблокировать/разблокировать средства", - "advanced": "Дополнительные", - "overview": "Обзор", - "add": "Пополнить", - "withdraw": "Вывести", - "more": "Больше", - "balanceCaps": "БАЛАНС", - "quickSetUp": "Быстрая настройка", - "createAccountWithAvailable": "Создайте учетную запись, используя доступные токены Orchid.", - "fromAvailable": "Доступно", - "enterCustomAmount": "Введите пользовательскую сумму", - "transferAvailable": "Перевести доступные", - "transactionComplete": "Транзакция выполнена!", - "transactionFailed": "Ошибка транзакции", - "addFunds": "Добавить средства", - "withdrawFunds": "Вывести средства", - "lock": "Заблокировать", - "unlock": "Розблокировать", - "moveFundsToDeposit": "Переместить средства на депозит", - "resetAccount": "Сбросить учетную запись", - "pending": "Ожидающие", - "complete": "Заврешенные", - "failed": "Ошибка!", - "transaction": "Транзакция", - "checkingWalletStatus": "Проверка состояния кошелька", - "viewOnBlockchain": "Просмотреть на блокчейн", - "status": "Статус", - "confirmations": "Подтверждения", - "hash": "Хэш", - "createNewAccount": "Создать новую учетную запись", - "addToBalance": "Добавить в баланс", - "addToDeposit": "Добавить в депозит", - "signerKey": "Ключ подписанта", - "address": "Адрес", - "yourDepositSecuresAccessInstruction": "Ваш депозит обеспечивает доступ к сети Orchid и демонстрирует подлинность для продавцов пропускной способности.", - "total": "Всего", - "withdrawFromBalance": "Вывести средства с баланса", - "balance": "Баланс", - "withdrawingTo": "Куда вывести:", - "withdrawFullBalanceAndDeposit": "Вывести весь баланс и депозит", - "noteIfOverdraftOccurs": "Примечание. Если в вашем балансе Orchid будет овердрафт, вы потеряете свой депозит.", - "walletAddress": "Адрес кошелька", - "copy": "Копировать", - "signerAddress": "Адрес подписанта", - "lotteryPot": "Балансы", - "deposit": "Депозит", - "fundsStatus": "Статус средств", - "locked": "Заблокированы", - "unlocked": "Розблокированы", - "lockedUntil": "Заблокированые до", - "@lockedUntil": { - "description": "Заблокированы до даты и времени" - }, - "accountQRCode": "QR-код счета", - "revealQR": "Показать QR", - "copyCode": "Скопировать код", - "date": "Дата", - "tx": "транз.", - "@tx": { - "description": "аббревиатура термина \"транзакции\"" - }, - "loading": "Загрузка", - "account": "Счет", - "moveFundsFromYourLotteryPot": "Перенесите средства из баланса на ваш депозит.", - "balanceFundsAreUsedByOrchid": "Балансовые средства используются службами Orchid и могут быть сняты в любое время.", - "depositFundsAreRequiredToParticipate": "Депозитные средства необходимы для участия в сети Orchid и могут быть сняты после срока разблокировки.", - "availableLotteryPotBalance": "Доступная сумма баланса", - "moveToDepositAmount": "Перенести на депозит", - "submit": "Отправить", - "toWithdrawYourFullBalance": "Чтобы вывести весь баланс, включая депозит, нужно разблокировать счет.", - "fundsWillBeAvailableAt": "Средства будут доступны в указанное ниже время.", - "ifYouWishToCancelWithdrawal": "Если вы хотите отменить процесс вывода средств и продолжить использовать депозит, еще раз заблокируйте средства.", - "debugOutput": "Выходные данные отладки", - "currentStake": "Текущая ставка", - "@currentStake": { - "description": "Текущая финансовая ставка" - }, - "addToStake": "Добавить в ставку", - "stakeFunds": "Сумма ставки", - "stakeeAddress": "Адрес участника (провайдера) ставок", - "stakeeProvider": "Участник (провайдер) ставок", - "delay": "Задержка", - "delayDays": "Дни задержки", - "delaySeconds": "Секунд задержки", - "days": "дн." -} diff --git a/web-ethereum/orchid_dapp/src/i18n/zh.json b/web-ethereum/orchid_dapp/src/i18n/zh.json deleted file mode 100644 index 809daf123..000000000 --- a/web-ethereum/orchid_dapp/src/i18n/zh.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "title": "这是标题", - "hello": "嗨!{name},您有{itemCount, plural, =0{零个项目} other {# 个项目} }", - "letsGetStarted": "马上开始!", - "youreAlmostThere": "即将完成!", - "pleaseSelectEthNetwork": "请在您的 Dapp(去中心化应用)浏览器中选择 Ethereum Main Network(以太坊主网络)!", - "createAccount": "创建帐户", - "addFundsToYourAccount": "为帐户充值", - "welcomeToYourOrchidAccount": "欢迎使用 Orchid 帐户", - "yourOrchidAccountIsFunded": "您的 Orchid 帐户已充值,一切就绪!", - "yourWalletIsEmpty": "钱包内空无分文。", - "youAreReadyToCreateOrchidAccount": "您可以使用钱包里的资金创建 Orchid 帐户。", - "continueBelowToCreateAccount": "请继续进行以下操作以创建帐户。", - "yourOrchidAccountIsReadyToReceive": "您的 Orchid 帐户现可用来接收钱包的资金。", - "proceedBelowToAddFunds": "请继续进行以下操作,为您的帐户转入资金。", - "info": "信息", - "transactions": "交易", - "moveFunds": "转移资金", - "lockUnlockFunds": "锁定/解锁资金", - "advanced": "高级", - "overview": "概览", - "add": "添加", - "withdraw": "提取", - "more": "更多", - "balanceCaps": "余额", - "quickSetUp": "快速创建帐户", - "createAccountWithAvailable": "借助可用的 Orchid 通证创建帐户。", - "fromAvailable": "可用资金", - "enterCustomAmount": "输入自定义金额", - "transferAvailable": "转入可用", - "transactionComplete": "交易完成!", - "transactionFailed": "交易失败", - "addFunds": "添加资金", - "withdrawFunds": "提取资金", - "lock": "锁定", - "unlock": "解锁", - "moveFundsToDeposit": "转移资金至存款", - "resetAccount": "重置帐户", - "pending": "待定", - "complete": "完成", - "failed": "失败!", - "transaction": "交易", - "checkingWalletStatus": "正在检查钱包状态", - "viewOnBlockchain": "在区块链上查看", - "status": "状态", - "confirmations": "确认", - "hash": "哈希值", - "createNewAccount": "创建新帐户", - "addToBalance": "添加至余额", - "addToDeposit": "添加至存款", - "signerKey": "签名者密钥", - "address": "地址", - "yourDepositSecuresAccessInstruction": "存款可确保您有权访问 Orchid 网络并向带宽销售商验证真实性。", - "total": "合计", - "withdrawFromBalance": "从余额中提取", - "balance": "余额", - "withdrawingTo": "提取至", - "withdrawFullBalanceAndDeposit": "提取全部余额和存款", - "noteIfOverdraftOccurs": "注意:如果 Orchid 余额发生透支,您将失去存款。", - "walletAddress": "钱包地址", - "copy": "复制", - "signerAddress": "签名者地址", - "lotteryPot": "余额", - "deposit": "存款", - "fundsStatus": "资金状况", - "locked": "已锁定", - "unlocked": "已解锁", - "lockedUntil": "已锁定至", - "@lockedUntil": { - "description": "已锁定至日期/时间" - }, - "accountQRCode": "帐户二维码", - "revealQR": "显示二维码", - "copyCode": "复制二维码", - "date": "日期", - "tx": "交易", - "@tx": { - "description": "“交易”的缩写" - }, - "loading": "正在加载", - "account": "帐户", - "moveFundsFromYourLotteryPot": "将资金从余额移至存款。", - "balanceFundsAreUsedByOrchid": "使用 Orchid 服务将耗费余额资金,该资金也可随时提取。", - "depositFundsAreRequiredToParticipate": "要加入 Orchid 网络,需要使用存款资金。解锁通知期后,可提取资金。", - "availableLotteryPotBalance": "余额的可用金额", - "moveToDepositAmount": "转移至存款金额", - "submit": "提交", - "toWithdrawYourFullBalance": "要提取全部余额(包括存款),必须解锁帐户。", - "fundsWillBeAvailableAt": "在下列时间内,资金将可用。", - "ifYouWishToCancelWithdrawal": "如果您希望取消提取流程并继续使用存款,请重新锁定资金。", - "debugOutput": "调试输出", - "currentStake": "当前质押", - "@currentStake": { - "description": "当前金融质押" - }, - "addToStake": "添加至质押", - "stakeFunds": "质押资金", - "stakeeAddress": "质押人(提供商)地址", - "stakeeProvider": "质押人(提供商)", - "delay": "延迟", - "delayDays": "延迟天数", - "delaySeconds": "延迟秒数", - "days": "天" -} diff --git a/web-ethereum/orchid_dapp/src/index.css b/web-ethereum/orchid_dapp/src/index.css deleted file mode 100644 index ec2585e8c..000000000 --- a/web-ethereum/orchid_dapp/src/index.css +++ /dev/null @@ -1,13 +0,0 @@ -body { - margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; -} diff --git a/web-ethereum/orchid_dapp/src/index.tsx b/web-ethereum/orchid_dapp/src/index.tsx deleted file mode 100644 index acf148574..000000000 --- a/web-ethereum/orchid_dapp/src/index.tsx +++ /dev/null @@ -1,141 +0,0 @@ -import React, {FC, useEffect, useState} from 'react' -import {render} from 'react-dom' -import {OrchidAPI} from "./api/orchid-api"; - -import 'bootstrap/dist/css/bootstrap.css' -import './index.css' -import './css/app-style.css' -import './css/form-style.css' -import './css/button-style.css' -import {Layout} from "./components/Layout" -import {createIntl, createIntlCache, IntlProvider} from "react-intl"; -import messages_en from './i18n/en.json'; -import messages_zh from './i18n/zh.json'; -import messages_ru from './i18n/ru.json'; -import messages_id from './i18n/id.json'; -import messages_ja from './i18n/ja.json'; -import messages_ko from './i18n/ko.json'; -import {getParam, hashPath, testLocalization_} from "./util/util"; -import { - pathToRoute, - Route, - RouteContext, - setURL -} from "./components/RouteContext"; -import {WalletProviderState, WalletProviderStatus} from "./api/orchid-eth-web3"; -import {Subscription} from "rxjs"; -import {LotteryPot, Wallet} from "./api/orchid-eth-types"; -import {NoWallet} from "./components/NoWallet"; - -//const messages: Record> = { -const messages: any = { - 'en': messages_en, - 'zh': messages_zh, - 'ru': messages_ru, - 'id': messages_id, - 'ja': messages_ja, - 'ko': messages_ko, -}; - -let language = navigator.language.split(/[-_]/)[0]; // TODO: country -if (getParam('testLocalization')) { - // Spanish number / date formatting with mixed case English - language = 'es'; - messages[language] = testLocalization_(messages['en']); -} - -const cache = createIntlCache(); -export const intl = createIntl({ - locale: language, - messages: messages[language] -}, cache); - -export const WalletProviderContext = React.createContext(WalletProviderStatus.unknown) -export const WalletContext = React.createContext(null) -export const ApiContext = React.createContext(OrchidAPI.shared()) -export const AccountContext = React.createContext(null) - -const App: FC = () => { - const [route, setRoute] = useState(pathToRoute(hashPath()) ?? Route.None); - const [walletProviderStatus, setWalletProviderStatus] = useState(WalletProviderStatus.unknown); - const [wallet, setWallet] = useState(null); - const [pot, setPot] = useState(null); - - useEffect(() => { - let subscriptions: Subscription [] = []; - let api = OrchidAPI.shared(); - - subscriptions.push(api.provider.walletStatus.subscribe(newWalletStatus => { - console.log("new wallet status: ", WalletProviderState[newWalletStatus.state], newWalletStatus.account/*, walletProviderStatus.account*/); - // If no account or account has chnaged, default the route - if (!newWalletStatus.account || (walletProviderStatus.account && newWalletStatus.account !== walletProviderStatus.account)) { - console.log("new wallet account: clearing route") - setURL(Route.None) - } - setWalletProviderStatus(newWalletStatus); - })); - - subscriptions.push(api.wallet.subscribe(wallet => { - setWallet(wallet ?? null) - })); - - subscriptions.push(api.lotteryPot.subscribe(async pot => { - setPot(pot) - })); - - return () => { - subscriptions.forEach(sub => { - sub.unsubscribe() - }) - }; - }, - // Note: The dependency on the old account value here means that this will be recreated on each change. - // Note: this is ok, just creates unnecessary unsub/re-sub and duplicate log messages. - [walletProviderStatus.account]); - - let routeContextValue = { - route: route, - setRoute: (route: Route) => { - setRoute(route); - setURL(route); - } - }; - - - let api = OrchidAPI.shared(); - console.log("contracts overridden = ", api.eth?.contractsOverridden); - // Key on any change in chain, network, or account to clear UI state. - return ( - - - - - - { - // For now limit to main net V0 - (walletProviderStatus.chainInfo?.isEthereumMainNet || api.eth?.contractsOverridden) ? - - : - } - - - - - - ) -}; -const Placeholder: FC = () => { - return
Loading...
-}; - -OrchidAPI.shared().init((startupComplete) => { - console.log("startup complete: ", startupComplete); - render( - - {startupComplete ? : } - , - document.getElementById('root') - ); -}); - diff --git a/web-ethereum/orchid_dapp/src/react-app-env.d.ts b/web-ethereum/orchid_dapp/src/react-app-env.d.ts deleted file mode 100644 index 6431bc5fc..000000000 --- a/web-ethereum/orchid_dapp/src/react-app-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/web-ethereum/orchid_dapp/src/util/async-util.ts b/web-ethereum/orchid_dapp/src/util/async-util.ts deleted file mode 100644 index 5587559e0..000000000 --- a/web-ethereum/orchid_dapp/src/util/async-util.ts +++ /dev/null @@ -1,63 +0,0 @@ -import {useEffect, useRef} from "react"; - -export interface CancellablePromise { - promise: Promise - - cancel(): void -} - -export interface Cancellable { - cancel(): void -} - -// Make a Promise cancellable by offering a cancel() method that triggers its reject(). -export function makeCancellable( - promise: Promise, - disposal?: Array -): CancellablePromise { - let hasCanceled_ = false; - - const wrappedPromise = new Promise((resolve, reject) => { - promise.then( - val => hasCanceled_ ? reject({isCanceled: true}) : resolve(val), - error => hasCanceled_ ? reject({isCanceled: true}) : reject(error) - ); - }); - - let cancallablePromise = { - promise: wrappedPromise, - cancel() { - hasCanceled_ = true; - }, - } as CancellablePromise; - if (disposal) { - disposal.push(cancallablePromise) - } - return cancallablePromise; -} - -interface ObjectDict { - [index: string]: any; -} - -// Log property changes for the supplied array of props. -// https://stackoverflow.com/a/51082563/74975 -export function useTraceUpdate(props: any) { - const prev = useRef(props); - useEffect(() => { - const changedProps = Object.entries(props).reduce( - (lookup: ObjectDict, [key, value]) => { - if (prev.current[key] !== value) { - lookup[key] = [prev.current[key], value]; - } - return lookup; - }, - {} - ); - if (Object.keys(changedProps).length > 0) { - console.log("trace changed props:", changedProps); - } - prev.current = props; - }); -} - diff --git a/web-ethereum/orchid_dapp/src/util/util.tsx b/web-ethereum/orchid_dapp/src/util/util.tsx deleted file mode 100644 index d4b24e066..000000000 --- a/web-ethereum/orchid_dapp/src/util/util.tsx +++ /dev/null @@ -1,195 +0,0 @@ -import "../i18n/i18n_util" -import React, {EffectCallback, FC, useEffect, useRef} from "react"; -import {Row} from "react-bootstrap"; -import {isEthAddress} from "../api/orchid-eth"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -const BigInt = require("big-integer"); // Mobile Safari requires polyfill - -// Return the relative path of the deployment -export function basePath(): string { - let pathComponents = new URL(window.location.href).pathname.split('/'); - pathComponents.pop(); - return pathComponents.join('/'); -} - -export function extraPath(): string | undefined { - let pathComponents = new URL(window.location.href).pathname.split('/'); - return pathComponents.pop(); -} - -export function hashPath(): string | undefined { - return new URL(window.location.href).hash; -} - -export function getParam(name: string): string | null { - let params = new URL(window.location.href).searchParams; - return params.get(name); -} - -export function getBoolParam(name: string, defaultValue: boolean): boolean { - let val = getParam(name); - if (val == null) { - return defaultValue; - } - return val.toLocaleLowerCase() === "true"; -} - -export function isDebug(): boolean { - return getBoolParam("debug", false); -} - -// force the v0 contract selection even if we are on a test net -export function debugV0(): boolean { - return getBoolParam("v0", false); -} - -export function getEthAddressParam(name: string, defaultValue: string): string { - let addr = getParam(name); - - if (addr == null) { - return defaultValue; - } - - // Some servers won't let you put a big hex string in the url - if (!addr.startsWith("0x")) { - addr = "0x" + addr; - } - if (isEthAddress(addr)) { - return addr; - } else { - console.log("Error: Invalid ETH address: ", addr) - return defaultValue; - } -} - -export function isNumeric(val: any) { - if (val == null || val === "") { - return false; - } - return !isNaN(val) -} - -// Return the float value or null if not numeric. -export function parseFloatSafe(val: string | null): number | null { - if (val === null) { - return null - } - return isNumeric(val) ? parseFloat(val) : null; -} - -// Return the int value or null if not numeric. -export function parseIntSafe(val: string): number | null { - let ivalue = parseInt(val); - return ('' + ivalue === val) ? ivalue : null; -} - -// Return the BigInt value or null if not numeric. -export function parseBigIntSafe(val: string): BigInt | null { - return isNumeric(val) ? BigInt(parseFloat(val)) : null; -} - -export function errorClass(val: boolean): string { - return val ? "error" : "hidden"; -} - -export function pascalCase(str: string): string { - return str.replace(/^(.)/, (c) => { - return c.toUpperCase() - }) -} - -export function camelCase(str: string): string { - return str.replace(/^(.)/, (c) => { - return c.toLowerCase() - }) -} - -export const Divider: FC<{ noGutters?: boolean, marginTop?: number, marginBottom?: number }> = (props) => { - return -}; - -export const Visibility: FC<{ visible: boolean }> = (props) => { - return
{props.children}
-}; - -export function copyTextToClipboard(text: string) { - // https://stackoverflow.com/questions/49618618/copy-current-url-to-clipboard - let dummy = document.createElement('input'); - document.body.appendChild(dummy); - dummy.value = text; - dummy.select(); - document.execCommand('copy'); - document.body.removeChild(dummy); -} - -export function testLocalization_(en: Record) { - let msgs: Record = {}; - Object.keys(en).forEach(key => { - - // Mix the case - let org = en[key]; - if ((typeof org) !== "string") { - return; - } - let mod = ""; - for (let i = 0; i < org.length; i++) { - let char = (org as string).charAt(i); - mod += i % 2 === 0 ? char.toUpperCase() : char.toLowerCase(); - } - msgs[key] = mod; - }); - return msgs; -} - -/// Remove any "0x" prefix on a hex string. -export function removeHexPrefix(value: string | null): string | null { - if (!value) { - return value; - } - return value.startsWith('0x') ? value.substr(2) : value; -} - -/// Return an hsb color ranging from green to yellow to red for values 0.0 to 1.0; -export function trafficLightShade(value: number) { - value = 1.0 - Math.min(1.0, value); - return {h: value * 0.3, s: 0.9, b: 0.9} -} - -// https://overreacted.io/making-setinterval-declarative-with-react-hooks/ -export function useInterval(callback: EffectCallback, delay: number) { - const savedCallback = useRef(); - - // Remember the latest callback. - useEffect(() => { - savedCallback.current = callback; - }, [callback]); - - // Set up the interval. - useEffect(() => { - function tick() { - if (savedCallback.current !== undefined) { - savedCallback.current(); - } - } - - let id = setInterval(tick, delay); - return () => clearInterval(id); - }, [delay]); -} - -// Helper for RxJS with Typescript -export function isNotNull(a: T | null): a is T { - return a !== null; -} - -export function isDefined(a: T | undefined): a is T { - return a !== undefined; -} \ No newline at end of file diff --git a/web-ethereum/orchid_dapp/tsconfig.json b/web-ethereum/orchid_dapp/tsconfig.json deleted file mode 100644 index 6e3112311..000000000 --- a/web-ethereum/orchid_dapp/tsconfig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "compilerOptions": { - "target": "es2017", - "lib": [ - "dom", - "dom.iterable", - "esnext", - "esnext.intl", - "es2017.intl", - "es2018.intl" - ], - "allowJs": true, - "skipLibCheck": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "strict": true, - "noImplicitReturns": true, - "noImplicitAny": true, - "noImplicitThis": true, - "forceConsistentCasingInFileNames": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react" - }, - "include": [ - "src" - ] -}