From 6a9a87edc515ad3fbe801093adca647f2aaff029 Mon Sep 17 00:00:00 2001 From: Ivan Date: Tue, 21 Dec 2021 14:15:21 +0300 Subject: [PATCH] issue #1144 fix decrypt error rendering (#1219) * Draft unit test for integrity check * updated tests * fix rendering blockParseErr * fix no-mdc error * fix attachment with mismatch key * simplify * rename test * fix * PR comments Co-authored-by: tomholub Co-authored-by: Roma Sosnovsky --- Core/package-lock.json | 9637 ++++++++++++++++- Core/package.json | 4 +- .../direct-encrypted-key-mismatch-file.txt | 907 ++ .../mime-email-not-integrity-protected.txt | 54 + Core/source/core/pgp-msg.ts | 2 +- Core/source/mobile-interface/endpoints.ts | 26 +- Core/source/test.ts | 40 +- Core/source/test/test-utils.ts | 13 +- FlowCrypt.xcodeproj/project.pbxproj | 4 - .../xcshareddata/swiftpm/Package.resolved | 8 +- .../Threads/ThreadDetailsViewController.swift | 11 +- FlowCrypt/Core/Core.swift | 93 +- FlowCrypt/Core/CoreTypes.swift | 93 +- .../Message Provider/MessageService.swift | 91 +- FlowCrypt/Resources/flowcrypt-ios-prod.js.txt | 386 +- .../Core/FlowCryptCoreTests.swift | 64 +- .../Extensions/SequenceExtensions.swift | 20 - FlowCryptUIApplication/ViewController.swift | 1 - Gemfile.lock | 10 +- 19 files changed, 11039 insertions(+), 425 deletions(-) create mode 100644 Core/source/assets/compat/direct-encrypted-key-mismatch-file.txt create mode 100644 Core/source/assets/compat/mime-email-not-integrity-protected.txt delete mode 100644 FlowCryptCommon/Extensions/SequenceExtensions.swift diff --git a/Core/package-lock.json b/Core/package-lock.json index 58159f232..486d7f3ce 100644 --- a/Core/package-lock.json +++ b/Core/package-lock.json @@ -1,8 +1,9615 @@ { "name": "flowcrypt-mobile-core", "version": "0.0.1", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "flowcrypt-mobile-core", + "version": "0.0.1", + "license": "SEE LICENSE IN ", + "dependencies": { + "encoding-japanese": "^1.0.30", + "sanitize-html": "1.21.1", + "zxcvbn": "4.4.2" + }, + "devDependencies": { + "@types/chai": "4.3.0", + "@types/encoding-japanese": "^1.0.18", + "@types/node": "^16.11.12", + "@types/node-cleanup": "2.1.2", + "ava": "1.4.1", + "babel-loader": "8.2.3", + "babel-preset-env": "1.7.0", + "chai": "4.3.4", + "node-cleanup": "2.1.2", + "request": "2.88.2", + "typescript": "4.5.2", + "webpack": "4.46.0", + "webpack-cli": "4.9.1", + "webpack-node-externals": "3.0.0" + } + }, + "node_modules/@ava/babel-plugin-throws-helper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-3.0.0.tgz", + "integrity": "sha512-mN9UolOs4WX09QkheU1ELkVy2WPnwonlO3XMdN8JF8fQqRVgVTR21xDbvEOUsbwz6Zwjq7ji9yzyjuXqDPalxg==", + "dev": true, + "engines": { + "node": ">=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0" + } + }, + "node_modules/@ava/babel-preset-stage-4": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-stage-4/-/babel-preset-stage-4-2.0.0.tgz", + "integrity": "sha512-OWqMYeTSZ16AfLx0Vn0Uj7tcu+uMRlbKmks+DVCFlln7vomVsOtst+Oz+HCussDSFGpE+30VtHAUHLy6pLDpHQ==", + "dev": true, + "dependencies": { + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-dotall-regex": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0" + }, + "engines": { + "node": ">=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0" + } + }, + "node_modules/@ava/babel-preset-transform-test-files": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@ava/babel-preset-transform-test-files/-/babel-preset-transform-test-files-5.0.0.tgz", + "integrity": "sha512-rqgyQwkT0+j2JzYP51dOv80u33rzAvjBtXRzUON+7+6u26mjoudRXci2+1s18rat8r4uOlZfbzm114YS6pwmYw==", + "dev": true, + "dependencies": { + "@ava/babel-plugin-throws-helper": "^3.0.0", + "babel-plugin-espower": "^3.0.1" + }, + "engines": { + "node": ">=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0" + } + }, + "node_modules/@ava/write-file-atomic": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ava/write-file-atomic/-/write-file-atomic-2.2.0.tgz", + "integrity": "sha512-BTNB3nGbEfJT+69wuqXFr/bQH7Vr7ihx2xGOMNqPgDGhwspoZhiWumDDZNjBy7AScmqS5CELIOGtPVXESyrnDA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", + "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", + "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", + "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", + "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", + "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", + "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", + "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@concordance/react": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@concordance/react/-/react-2.0.0.tgz", + "integrity": "sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1" + }, + "engines": { + "node": ">=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", + "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@types/chai": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz", + "integrity": "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==", + "dev": true + }, + "node_modules/@types/encoding-japanese": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/@types/encoding-japanese/-/encoding-japanese-1.0.18.tgz", + "integrity": "sha512-tjfjChRDhI2gpbOhccj4O9txN7nLnZEWyFA3fPGO0VchGeH6FeogwNfXvEyuHM+SlKEc7Q+/kt1/4nRNgP8SeQ==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.11.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.12.tgz", + "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==", + "dev": true + }, + "node_modules/@types/node-cleanup": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@types/node-cleanup/-/node-cleanup-2.1.2.tgz", + "integrity": "sha512-HTksao/sZs9nqxKD/vWOR3WxSrQsyJlBPEFFCgq9lMmhRsuQF+2p6hy+7FaCYn6lOeiDc3ywI8jDQ2bz5y6m8w==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@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==", + "dev": true + }, + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/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==", + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "dependencies": { + "string-width": "^2.0.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-differ": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz", + "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-union/node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.1.0.tgz", + "integrity": "sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/ava": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ava/-/ava-1.4.1.tgz", + "integrity": "sha512-wKpgOPTL7hJSBWpfbU4SA8rlsTZrph9g9g7qYDV7M6uK1rKeW8oCUJWRwCd8B24S4N0Y5myf6cTEnA66WIk0sA==", + "dev": true, + "dependencies": { + "@ava/babel-preset-stage-4": "^2.0.0", + "@ava/babel-preset-transform-test-files": "^5.0.0", + "@ava/write-file-atomic": "^2.2.0", + "@babel/core": "^7.4.0", + "@babel/generator": "^7.4.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@concordance/react": "^2.0.0", + "ansi-escapes": "^3.2.0", + "ansi-styles": "^3.2.1", + "arr-flatten": "^1.1.0", + "array-union": "^1.0.1", + "array-uniq": "^2.0.0", + "arrify": "^1.0.0", + "bluebird": "^3.5.3", + "chalk": "^2.4.2", + "chokidar": "^2.1.5", + "chunkd": "^1.0.0", + "ci-parallel-vars": "^1.0.0", + "clean-stack": "^2.0.0", + "clean-yaml-object": "^0.1.0", + "cli-cursor": "^2.1.0", + "cli-truncate": "^1.1.0", + "code-excerpt": "^2.1.1", + "common-path-prefix": "^1.0.0", + "concordance": "^4.0.0", + "convert-source-map": "^1.6.0", + "currently-unhandled": "^0.4.1", + "debug": "^4.1.1", + "del": "^4.0.0", + "dot-prop": "^4.2.0", + "emittery": "^0.4.1", + "empower-core": "^1.2.0", + "equal-length": "^1.0.0", + "escape-string-regexp": "^1.0.5", + "esm": "^3.2.20", + "figures": "^2.0.0", + "find-up": "^3.0.0", + "get-port": "^4.2.0", + "globby": "^7.1.1", + "ignore-by-default": "^1.0.0", + "import-local": "^2.0.0", + "indent-string": "^3.2.0", + "is-ci": "^2.0.0", + "is-error": "^2.2.1", + "is-observable": "^1.1.0", + "is-plain-object": "^2.0.4", + "is-promise": "^2.1.0", + "lodash.clone": "^4.5.0", + "lodash.clonedeep": "^4.5.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.debounce": "^4.0.3", + "lodash.difference": "^4.3.0", + "lodash.flatten": "^4.2.0", + "loud-rejection": "^1.2.0", + "make-dir": "^2.1.0", + "matcher": "^1.1.1", + "md5-hex": "^2.0.0", + "meow": "^5.0.0", + "ms": "^2.1.1", + "multimatch": "^3.0.0", + "observable-to-promise": "^0.5.0", + "ora": "^3.2.0", + "package-hash": "^3.0.0", + "pkg-conf": "^3.0.0", + "plur": "^3.0.1", + "pretty-ms": "^4.0.0", + "require-precompiled": "^0.1.0", + "resolve-cwd": "^2.0.0", + "slash": "^2.0.0", + "source-map-support": "^0.5.11", + "stack-utils": "^1.0.2", + "strip-ansi": "^5.2.0", + "strip-bom-buf": "^1.0.0", + "supertap": "^1.0.0", + "supports-color": "^6.1.0", + "trim-off-newlines": "^1.0.1", + "trim-right": "^1.0.1", + "unique-temp-dir": "^1.0.0", + "update-notifier": "^2.5.0" + }, + "bin": { + "ava": "cli.js" + }, + "engines": { + "node": ">=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "dependencies": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "dependencies": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "dependencies": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "dependencies": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-loader": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/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==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/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==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader/node_modules/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==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-espower": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz", + "integrity": "sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A==", + "dev": true, + "dependencies": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "call-matcher": "^1.0.0", + "core-js": "^2.0.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.1.1" + } + }, + "node_modules/babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "node_modules/babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "node_modules/babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "dependencies": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "dependencies": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "dependencies": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "dependencies": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "node_modules/babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "dependencies": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "dependencies": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "dependencies": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "dependencies": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "dependencies": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "dependencies": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "dependencies": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "dependencies": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.10.0" + } + }, + "node_modules/babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "dependencies": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "node_modules/babel-preset-env/node_modules/browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "node_modules/babel-preset-env/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/babel-traverse/node_modules/globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-traverse/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babel-types/node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true, + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "dependencies": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-rsa/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/browserify-sign/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/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=", + "dev": true + }, + "node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/cacache/node_modules/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==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-matcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz", + "integrity": "sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==", + "dev": true, + "dependencies": { + "core-js": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.0.0" + } + }, + "node_modules/call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001240", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001240.tgz", + "integrity": "sha512-nb8mDzfMdxBDN7ZKx8chWafAdBp5DAAlpWvNyUGe5tcDWd838zpzDN3Rah9cjCqhfOKkrvx40G2SDtP0qiWX/w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "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" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/chunkd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chunkd/-/chunkd-1.0.0.tgz", + "integrity": "sha512-xx3Pb5VF9QaqCotolyZ1ywFBgyuJmu6+9dLiqBxgelEse9Xsr3yUlpoX3O4Oh11M00GT2kYMsRByTKIMJW2Lkg==", + "dev": true + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/ci-parallel-vars": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz", + "integrity": "sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clean-yaml-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz", + "integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", + "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "dev": true, + "dependencies": { + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/code-excerpt": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-2.1.1.tgz", + "integrity": "sha512-tJLhH3EpFm/1x7heIW0hemXJTUU5EWl2V0EIX558jp05Mt1U6DVryCgkp3l37cxqs+DNbNgxG43SkwJXpQ14Jw==", + "dev": true, + "dependencies": { + "convert-to-spaces": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-1.0.0.tgz", + "integrity": "sha1-zVL28HEuC6q5fW+XModPIvR3UsA=", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concordance": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/concordance/-/concordance-4.0.0.tgz", + "integrity": "sha512-l0RFuB8RLfCS0Pt2Id39/oCPykE01pyxgAFypWTlaGRgvLkZrtczZ8atEHpTeEIW+zYWXTBuA9cCSeEOScxReQ==", + "dev": true, + "dependencies": { + "date-time": "^2.1.0", + "esutils": "^2.0.2", + "fast-diff": "^1.1.2", + "js-string-escape": "^1.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.flattendeep": "^4.4.0", + "lodash.islength": "^4.0.1", + "lodash.merge": "^4.6.1", + "md5-hex": "^2.0.0", + "semver": "^5.5.1", + "well-known-symbols": "^2.0.0" + }, + "engines": { + "node": ">=6.12.3 <7 || >=8.9.4 <9 || >=10.0.0" + } + }, + "node_modules/concordance/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/configstore": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.5.tgz", + "integrity": "sha512-nlOhI4+fdzoK5xmJ+NY+1gZK56bwEaWZr8fYuXohZ9Vkc1o3a4T/R3M+yE/w7x/ZVJ1zF8c+oaOvF0dztdUgmA==", + "dev": true, + "dependencies": { + "dot-prop": "^4.2.1", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/configstore/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/configstore/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/configstore/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/convert-to-spaces": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz", + "integrity": "sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true + }, + "node_modules/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=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "dev": true, + "dependencies": { + "capture-stack-trace": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "dependencies": { + "array-find-index": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "dev": true, + "dependencies": { + "time-zone": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "dev": true, + "dependencies": { + "is-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.759", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.759.tgz", + "integrity": "sha512-nM76xH0t2FBH5iMEZDVc3S/qbdKjGH7TThezxC8k1Q7w7WHvIAyJh8lAe2UamGfdRqBTjHfPDn82LJ0ksCiB9g==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/emittery": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.4.1.tgz", + "integrity": "sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/empower-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz", + "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==", + "dev": true, + "dependencies": { + "call-signature": "0.0.2", + "core-js": "^2.0.0" + } + }, + "node_modules/encoding-japanese": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-1.0.30.tgz", + "integrity": "sha512-bd/DFLAoJetvv7ar/KIpE3CNO8wEuyrt9Xuw6nSMiZ+Vrz/Q21BPsMHvARL2Wz6IKHKXgb+DWZqtRg1vql9cBg==" + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enhanced-resolve/node_modules/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==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/equal-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/equal-length/-/equal-length-1.0.1.tgz", + "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/espower-location-detector": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", + "integrity": "sha1-oXt+zFnTDheeK+9z+0E3cEyzMbU=", + "dev": true, + "dependencies": { + "is-url": "^1.2.1", + "path-is-absolute": "^1.0.0", + "source-map": "^0.5.0", + "xtend": "^4.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/espurify": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", + "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", + "dev": true, + "dependencies": { + "core-js": "^2.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/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==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dev": true, + "dependencies": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/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==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasha": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", + "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", + "dev": true, + "dependencies": { + "is-stream": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dependencies": { + "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" + } + }, + "node_modules/htmlparser2/node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/irregular-plurals": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-2.0.0.tgz", + "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-error": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", + "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==", + "dev": true + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "dependencies": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-installed-globally/node_modules/is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-observable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "dev": true, + "dependencies": { + "symbol-observable": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "node_modules/js-string-escape": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", + "integrity": "sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/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=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "dependencies": { + "package-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "node_modules/lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true + }, + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, + "node_modules/lodash.islength": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.islength/-/lodash.islength-4.0.1.tgz", + "integrity": "sha1-Tpho1FJXXXUK/9NYyXlUPcIO1Xc=", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/matcher": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz", + "integrity": "sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/md5-hex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-2.0.0.tgz", + "integrity": "sha1-0FiOnxx0lUSS7NJKwKxs6ZfZLjM=", + "dev": true, + "dependencies": { + "md5-o-matic": "^0.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/md5-o-matic": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/md5-o-matic/-/md5-o-matic-0.1.1.tgz", + "integrity": "sha1-givM1l4RfFFPqxdrJZRdVBAKA8M=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "dependencies": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/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==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "dev": true, + "dependencies": { + "mime-db": "1.48.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/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=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/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==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/multimatch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-3.0.0.tgz", + "integrity": "sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA==", + "dev": true, + "dependencies": { + "array-differ": "^2.0.3", + "array-union": "^1.0.2", + "arrify": "^1.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/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==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/node-cleanup": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-cleanup/-/node-cleanup-2.1.2.tgz", + "integrity": "sha1-esGavSl+Caf3KnFUXZUbUX5N3iw=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/observable-to-promise": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/observable-to-promise/-/observable-to-promise-0.5.0.tgz", + "integrity": "sha1-yCjw8NxH6fhq+KSXfF1VB2znqR8=", + "dev": true, + "dependencies": { + "is-observable": "^0.2.0", + "symbol-observable": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/observable-to-promise/node_modules/is-observable": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-0.2.0.tgz", + "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=", + "dev": true, + "dependencies": { + "symbol-observable": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/observable-to-promise/node_modules/is-observable/node_modules/symbol-observable": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", + "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", + "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "dependencies": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-conf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plur": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/plur/-/plur-3.1.1.tgz", + "integrity": "sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==", + "dev": true, + "dependencies": { + "irregular-plurals": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/postcss/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-4.0.0.tgz", + "integrity": "sha512-qG66ahoLCwpLXD09ZPHSCbUWYTqdosB7SMP4OffgTgL2PBKXMuUsrk5Bwg8q4qPkjTXsKBMr+YK3Ltd/6F9s/Q==", + "dev": true, + "dependencies": { + "parse-ms": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/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=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "dependencies": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/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==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "dev": true, + "dependencies": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "dependencies": { + "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-precompiled": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/require-precompiled/-/require-precompiled-0.1.0.tgz", + "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/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==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sanitize-html": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.21.1.tgz", + "integrity": "sha512-W6enXSVphVaVbmVbzVngBthR5f5sMmhq3EfPfBlzBzp2WnX8Rnk7NGpP7KmHUc0Y3MVk9tv/+CbpdHchX9ai7g==", + "dependencies": { + "chalk": "^2.4.1", + "htmlparser2": "^3.10.0", + "lodash.clonedeep": "^4.5.0", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.mergewith": "^4.6.1", + "postcss": "^7.0.5", + "srcset": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "dependencies": { + "semver": "^5.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-clone/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/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==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/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==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/srcset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", + "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", + "dependencies": { + "array-uniq": "^1.0.2", + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/srcset/node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "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" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stack-utils/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor/node_modules/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supertap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supertap/-/supertap-1.0.0.tgz", + "integrity": "sha512-HZJ3geIMPgVwKk2VsmO5YHqnnJYl6bV5A9JW2uzqV43WmpgliNEYbuvukfor7URpaqpxuw3CfZ3ONdVbZjCgIA==", + "dev": true, + "dependencies": { + "arrify": "^1.0.1", + "indent-string": "^3.2.0", + "js-yaml": "^3.10.0", + "serialize-error": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supertap/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/supertap/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "dependencies": { + "execa": "^0.7.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/terser-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "node_modules/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=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/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==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/typescript": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", + "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=", + "dev": true + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-temp-dir/-/unique-temp-dir-1.0.0.tgz", + "integrity": "sha1-bc6VsmgcoAPuv7MEpBX5y6vMU4U=", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1", + "os-tmpdir": "^1.0.1", + "uid2": "0.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "dev": true, + "dependencies": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/update-notifier/node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "node_modules/update-notifier/node_modules/is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/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=", + "dev": true, + "dependencies": { + "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/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==", + "dev": true + }, + "node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/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==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack/node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/watchpack/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/watchpack/node_modules/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==", + "dev": true, + "optional": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/watchpack/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/watchpack/node_modules/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==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/watchpack/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/watchpack/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "optional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/watchpack/node_modules/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==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.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.3", + "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.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-cli/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webpack-cli/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/webpack-cli/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-cli/node_modules/import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-cli/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-cli/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-cli/node_modules/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==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/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==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/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==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-cli/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-sources/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/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==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/well-known-symbols": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/well-known-symbols/-/well-known-symbols-2.0.0.tgz", + "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/zxcvbn": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz", + "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA=" + } + }, "dependencies": { "@ava/babel-plugin-throws-helper": { "version": "3.0.0", @@ -707,7 +10314,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/info": { "version": "1.4.0", @@ -722,7 +10330,8 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", - "dev": true + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -758,13 +10367,15 @@ "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==", - "dev": true + "dev": true, + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-align": { "version": "2.0.0", @@ -6690,6 +16301,14 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, + "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" + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -6717,14 +16336,6 @@ } } }, - "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": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", diff --git a/Core/package.json b/Core/package.json index f13d0caf0..53428043f 100644 --- a/Core/package.json +++ b/Core/package.json @@ -37,8 +37,8 @@ "_updateCoreLib": "mkdir source/lib && cd source/lib && LIBD='../../../flowcrypt-browser/extension/lib' && cp -r $LIBD/emailjs . && cp $LIBD/openpgp.js . && cp $LIBD/iso-*.js . && cp $LIBD/zxcvbn.js .", "donateCore": "rm -rf ../flowcrypt-browser/extension/js/common/core && cp -r source/core ../flowcrypt-browser/extension/js/common/core" }, - "author": "FlowCrypt a.s.", + "author": "FlowCrypt a. s.", "license": "SEE LICENSE IN ", "private": true, "homepage": "https://flowcrypt.com" -} +} \ No newline at end of file diff --git a/Core/source/assets/compat/direct-encrypted-key-mismatch-file.txt b/Core/source/assets/compat/direct-encrypted-key-mismatch-file.txt new file mode 100644 index 000000000..e4e9b9232 --- /dev/null +++ b/Core/source/assets/compat/direct-encrypted-key-mismatch-file.txt @@ -0,0 +1,907 @@ +-----BEGIN PGP MESSAGE----- +Version: Mailvelope v2.2.0 +Comment: https://www.mailvelope.com + +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 +=W8u3 +-----END PGP MESSAGE----- \ No newline at end of file diff --git a/Core/source/assets/compat/mime-email-not-integrity-protected.txt b/Core/source/assets/compat/mime-email-not-integrity-protected.txt new file mode 100644 index 000000000..cc527f717 --- /dev/null +++ b/Core/source/assets/compat/mime-email-not-integrity-protected.txt @@ -0,0 +1,54 @@ +Received: from 717284730244 + named unknown + by gmailapi.google.com + with HTTPREST; + Fri, 8 Jun 2018 04:15:40 -0700 +Content-Type: multipart/mixed; + boundary="----sinikael-?=_1-15284565398080.6365395020974245" +From: flowcrypt.compatibility@gmail.com +To: flowcrypt.compatibility@gmail.com +Subject: not integrity protected - should show a warning and not decrypt + automatically +Date: Fri, 8 Jun 2018 04:15:40 -0700 +Message-Id: +MIME-Version: 1.0 + +------sinikael-?=_1-15284565398080.6365395020974245 +Content-Type: text/plain +Content-Transfer-Encoding: quoted-printable + +-----BEGIN PGP MESSAGE----- +Version: FlowCrypt 5.5.9 Gmail Encryption flowcrypt.com +Comment: Seamlessly send, receive and search encrypted email + +wcFMA0taL/zmLZUBAQ/7Bwida5vvhXv5Zi+qJbG/QPst11jWfljDQlw1VLzF +ou8ofoIEHpvoFgXegZUnoQXBmlHGD+XLs9jG/TV1mtE2RWq4hDtqiTQ6rEIa +brN3Nx77Yr+4EN1aKI20aTLEPTIjVU2GH2i9DAmjHteBU3nkL9Z3yecB8Pn8 +EdhpCRY6cj2yrhJ5MPwmXrus9OFv39wA2DqYpqW5Be+KD8mipZ2CtJo5xtin +aeEhpWSDsdg26rjx1nz4dA0NcFzZK2p/BPfPIFzRvmoXoWFigpUnwryEoCqX +/tgmcrv7PqiYT5oziPmMuBc1lb7icI/Aq69uXz2z6+4MJHOlcTEFygV36J+1 +1opcjoX+JKJNn1nvHovBxuemcMwriJdmDj4Hmfo4zkd6ryUtGVrMVn8DbRp6 +TWB/0MSE8cmfuiA5DgzdGbrevdL6RxnQDmalTHJ5oxurFQVoLwpmbgd36C4Q +xMfG1xEqFn5zvrCTGHg2OfS2cynal8CQDG0ZQCoWwdb0kT5D6bx7QKcuyy1/ +1TXKnp1NamD5Uhu1+XuxD7EbvDYUWYh3bkqgslsoX+OUl+ONdtMD5PswArd5 +KisD9UJuddJShL4clBUPoXeNrRxrU6HqjP5T4fapK684MeizicHIRpAww7fu +Z8YtaySZ/hoOAKWsx0rV4grgJV7pryj4ARBRa1pLL9rBwUwDS1ov/OYtlQEB +D/47fyD/6BvepqWmZXj7VLl2y63eE0b/6hf5K+Izv5A/+5l/EnjFx0rq+qeX +6hftYZBUAbbBvKfxq9D5xsWg3tnhFv2sYIE3YpkCSzZpWJmahHwQOVNT0ASw +gbO25OiTPlYPqfSkGYe0palbL+4T5dLOwVilmrZ2bQf/rLePwA4RQpWDPYio +NDU0Xfi7TQcHQrZTpwFbVzNPXgCHnQkqF+s0v8RDJHnt9vVs2KEpi49V/YgN ++gZnZOeADL0rbre/PrIck1YSjZLbrWtQVk4+sCf0TjvixJ7MNjA4NgdZPo0M +Hke/9XBFie3NiZaW/cEIVZ7WnjB3IbhkmOMJd4LgdHKgmswJwCYm+XvpOI19 +FzU1vzZmfOA1nEJSuuCDNVUoKYIQA5UEYJrVJeGnVN5sU5jkdlX9xPtYceww +YFmLisuf9Ev0HC7v27KwYQRDPNYRA8GeK/jY6aZdg+VccsnzEigdYL5Tm4JI +Zrxp/G807bZvt0yZwWh0gpWOFgbVgrm4Hpji5ilDyulZSW+8nJxB5tDoPzL4 +j4w9malje0c60GWNtiyCPLURyN63C2q144UpQjSU5r66oP1yF2A97aXKbf4p +qO7cSNWEOTpqJkJrNFVKQdWvXZ+mvW1PQFmkkwish2HiQIXmWb04uV1pI8hR +6YWk2ox9aZiJ664MpncgyJ5uIMlzVfYrX+AZRtBW36RgCTprIv6l1M5NcHMy +zEscTaSY/e+pM5HzQKSzX+zHLa5kk5L7veX+1G33saiqSJ/fK13+k7qDNZQD +nbtaebfh2JS0Pdbub6FUFjPHR5PydU9ltuppGEeYrOe1SxwiZ6BZfIXO2/8M +hA=3D=3D +=3DB/NE +-----END PGP MESSAGE----- + +------sinikael-?=_1-15284565398080.6365395020974245-- diff --git a/Core/source/core/pgp-msg.ts b/Core/source/core/pgp-msg.ts index e412af534..7919c62ed 100644 --- a/Core/source/core/pgp-msg.ts +++ b/Core/source/core/pgp-msg.ts @@ -211,7 +211,7 @@ export class PgpMsg { const content = new Buf(await openpgp.stream.readToEnd(decrypted.getLiteralData()!)); // read content second to prevent stream hang const signature = verifyResults ? await PgpMsg.verify(verifyResults, []) : undefined; // evaluate verify results third to prevent stream hang if (!prepared.isCleartext && (prepared.message as OpenPGP.message.Message).packets.filterByTag(openpgp.enums.packet.symmetricallyEncrypted).length) { - const noMdc = 'Security threat!\n\nMessage is missing integrity checks (MDC). The sender should update their outdated software.\n\nDisplay the message at your own risk.'; + const noMdc = 'Security threat!\n\nMessage is missing integrity checks (MDC). The sender should update their outdated software and resend.'; return { success: false, content, error: { type: DecryptErrTypes.noMdc, message: noMdc }, message: prepared.message, longids, isEncrypted }; } return { success: true, content, isEncrypted, filename: decrypted.getFilename() || undefined, signature }; diff --git a/Core/source/mobile-interface/endpoints.ts b/Core/source/mobile-interface/endpoints.ts index 3a5727a01..3cd2dfcb0 100644 --- a/Core/source/mobile-interface/endpoints.ts +++ b/Core/source/mobile-interface/endpoints.ts @@ -118,7 +118,7 @@ export class Endpoints { decryptRes.message = undefined; sequentialProcessedBlocks.push({ type: 'decryptErr', - content: decryptRes.error.type === DecryptErrTypes.noMdc ? decryptRes.content! : rawBlock.content, + content: decryptRes.error.type === DecryptErrTypes.noMdc ? decryptRes.content!.toUtfStr() : rawBlock.content.toString(), decryptErr: decryptRes, complete: true }); @@ -150,6 +150,10 @@ export class Endpoints { // no longer used below, only gets passed to be serialized as JSON - later consumed by iOS or Android app block.attMeta.data = Buf.fromUint8(block.attMeta.data).toBase64Str() as any as Uint8Array; } + if (block.decryptErr?.content instanceof Buf) { + // cannot pass a Buf using a json, converting to String before it gets serialized + block.decryptErr.content = block.decryptErr.content.toUtfStr() as any as Buf; + } if (block.type === 'decryptedHtml' || block.type === 'decryptedText' || block.type === 'decryptedAtt') { replyType = 'encrypted'; } @@ -167,7 +171,7 @@ export class Endpoints { complete: true, decryptErr: { success: false, - error: { type: 'format' as DecryptErrTypes, message: 'Badly formatted public key' }, + error: { type: DecryptErrTypes.format, message: 'Badly formatted public key' }, longids: { message: [], matching: [], chosen: [], needPassphrase: [] } } }); @@ -191,12 +195,13 @@ export class Endpoints { public decryptFile = async (uncheckedReq: any, data: Buffers, verificationPubkeys?: string[]): Promise => { const { keys: kisWithPp, msgPwd } = ValidateInput.decryptFile(uncheckedReq); - const decryptedMeta = await PgpMsg.decrypt({ kisWithPp, encryptedData: Buf.concat(data), msgPwd, verificationPubkeys }); - if (!decryptedMeta.success) { - decryptedMeta.message = undefined; - return fmtRes(decryptedMeta); + const decryptRes = await PgpMsg.decrypt({ kisWithPp, encryptedData: Buf.concat(data), msgPwd, verificationPubkeys }); + if (!decryptRes.success) { + decryptRes.message = undefined; + decryptRes.content = undefined; + return fmtRes({ decryptErr: decryptRes }); } - return fmtRes({ success: true, name: decryptedMeta.filename || '' }, decryptedMeta.content); + return fmtRes({ decryptSuccess: { name: decryptRes.filename || '' } }, decryptRes.content); } public parseDateStr = async (uncheckedReq: any): Promise => { @@ -204,7 +209,7 @@ export class Endpoints { return fmtRes({ timestamp: String(Date.parse(dateStr) || -1) }); } - public zxcvbnStrengthBar = async (uncheckedReq: any) : Promise => { + public zxcvbnStrengthBar = async (uncheckedReq: any): Promise => { const r = ValidateInput.zxcvbnStrengthBar(uncheckedReq); if (r.purpose === 'passphrase') { if (typeof r.guesses === 'number') { // the host has a port of zxcvbn and already knows amount of guesses per password @@ -224,7 +229,7 @@ export class Endpoints { } } - public gmailBackupSearch = async (uncheckedReq: any) : Promise => { + public gmailBackupSearch = async (uncheckedReq: any): Promise => { const { acctEmail } = ValidateInput.gmailBackupSearch(uncheckedReq); return fmtRes({ query: gmailBackupSearchQuery(acctEmail) }); } @@ -289,8 +294,7 @@ export class Endpoints { } export const getSigningPrv = async (req: NodeRequest.composeEmailEncrypted): Promise => { - if (!req.signingPrv) - { + if (!req.signingPrv) { return undefined; } const key = await readArmoredKeyOrThrow(req.signingPrv.private); diff --git a/Core/source/test.ts b/Core/source/test.ts index dc35b0fbb..90285e7b3 100644 --- a/Core/source/test.ts +++ b/Core/source/test.ts @@ -103,7 +103,7 @@ orig message ava.default('composeEmail format:plain with attachment', async t => { const content = 'hello\nwrld'; - const req = { format: 'plain', text: content, to: ['some@to.com'], cc: ['some@cc.com'], bcc: [], from: 'some@from.com', subject: 'a subj', atts: [{name: 'sometext.txt', type: 'text/plain', base64: Buffer.from('hello, world!!!').toString('base64')}] }; + const req = { format: 'plain', text: content, to: ['some@to.com'], cc: ['some@cc.com'], bcc: [], from: 'some@from.com', subject: 'a subj', atts: [{ name: 'sometext.txt', type: 'text/plain', base64: Buffer.from('hello, world!!!').toString('base64') }] }; const { data: plainMimeMsg, json: composeEmailJson } = parseResponse(await endpoints.composeEmail(req)); expectEmptyJson(composeEmailJson); const plainMimeStr = plainMimeMsg.toString(); @@ -267,7 +267,7 @@ ava.default('composeEmail format:encrypt-inline -> parseDecryptMsg', async t => ava.default('composeEmail format:encrypt-inline with attachment', async t => { const content = 'hello\nwrld'; const { pubKeys } = getKeypairs('rsa1'); - const req = { pubKeys, format: 'encrypt-inline', text: content, to: ['encrypted@to.com'], cc: [], bcc: [], from: 'encr@from.com', subject: 'encr subj', atts: [{name: 'topsecret.txt', type: 'text/plain', base64: Buffer.from('hello, world!!!').toString('base64') }] }; + const req = { pubKeys, format: 'encrypt-inline', text: content, to: ['encrypted@to.com'], cc: [], bcc: [], from: 'encr@from.com', subject: 'encr subj', atts: [{ name: 'topsecret.txt', type: 'text/plain', base64: Buffer.from('hello, world!!!').toString('base64') }] }; const { data: encryptedMimeMsg, json: encryptJson } = parseResponse(await endpoints.composeEmail(req)); expectEmptyJson(encryptJson); const encryptedMimeStr = encryptedMimeMsg.toString(); @@ -287,7 +287,7 @@ for (const keypairName of allKeypairNames.filter(name => name != 'expired' && na expectEmptyJson(encryptJson); expectData(encryptedFile); const { data: decryptedContent, json: decryptJson } = parseResponse(await endpoints.decryptFile({ keys }, [encryptedFile])); - expect(decryptJson).to.deep.equal({ success: true, name }); + expect(decryptJson).to.deep.equal({ decryptSuccess: { name } }); expectData(decryptedContent, 'binary', content); t.pass(); }); @@ -538,7 +538,7 @@ ava.default('parseDecryptMsg compat mime-email-encrypted-inline-text-2 Mime-Text t.pass(); }); -ava.default('parseDecryptMsg - decryptErr', async t => { +ava.default('parseDecryptMsg - decryptErr wrong key when dencrypting content', async t => { const { keys } = getKeypairs('rsa2'); // intentional key mismatch const { data: blocks, json: decryptJson } = parseResponse(await endpoints.parseDecryptMsg({ keys }, [await getCompatAsset('direct-encrypted-text')])); expectData(blocks, 'msgBlocks', [{ @@ -564,6 +564,28 @@ ava.default('parseDecryptMsg - decryptErr', async t => { t.pass(); }); +ava.default('decryptFile - decryptErr wrong key when decrypting attachment', async t => { + const jsonReq = { keys: getKeypairs('rsa2').keys }; // intentional key mismatch + const { json: decryptJson } = parseResponse(await endpoints.decryptFile(jsonReq, [await getCompatAsset('direct-encrypted-key-mismatch-file')])); + expect(decryptJson).to.deep.equal({ + "decryptErr": { + "success": false, + "error": { + "type": "key_mismatch", + "message": "Missing appropriate key" + }, + "longids": { + "message": ["305F81A9AED12035"], + "matching": [], + "chosen": [], + "needPassphrase": [] + }, + "isEncrypted": true + } + }); + t.pass(); +}); + ava.default('parseDecryptMsg compat mime-email-plain-html', async t => { const { keys } = getKeypairs('rsa1'); const { data: blocks, json: decryptJson } = parseResponse(await endpoints.parseDecryptMsg({ keys, isEmail: true }, [await getCompatAsset('mime-email-plain-html')])); @@ -730,3 +752,13 @@ ava.default('verify signed message with detached signature by providing it corre expect(parsedDecryptData.verifyRes.match).equals(true); t.pass(); }); + +ava.default('decryptErr for not integrity protected message', async t => { + const { keys, pubKeys } = getKeypairs('flowcrypt.compatibility'); + const { json: decryptJson, data: decryptData } = parseResponse(await endpoints.parseDecryptMsg({ keys, isEmail: true, verificationPubkeys: pubKeys }, [await getCompatAsset('mime-email-not-integrity-protected')])); + expect(decryptJson.replyType).equals('plain'); + expect(decryptJson.subject).equals('not integrity protected - should show a warning and not decrypt automatically'); + const blocks = decryptData.toString().split('\n').map(block => JSON.parse(block)); + expect(blocks[1].decryptErr.error.type).equals('no_mdc'); + t.pass(); +}); diff --git a/Core/source/test/test-utils.ts b/Core/source/test/test-utils.ts index 3ed605dcf..6ad4e10fa 100644 --- a/Core/source/test/test-utils.ts +++ b/Core/source/test/test-utils.ts @@ -92,7 +92,7 @@ export const expectData = (_data: Uint8Array, type?: 'armoredMsg' | 'msgBlocks' expect(details).to.be.instanceOf(Buffer); const expectedBuffer = details as Buffer; expect(data).to.deep.equal(expectedBuffer); - } else if(typeof details !== 'undefined') { + } else if (typeof details !== 'undefined') { throw Error("Unknown test type"); } } @@ -141,12 +141,19 @@ const TEST_KEYS: { [name: string]: TestKey } = { decrypted: '', passphrase: '', longid: '' + }, + 'flowcrypt.compatibility': { + pubKey: '-----BEGIN PGP PUBLIC KEY BLOCK-----\r\nVersion: FlowCrypt iOS 0.2 Gmail Encryption\r\nComment: Seamlessly send and receive encrypted email\r\n\r\n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\r\nEg==\r\n=r2et\r\n-----END PGP PUBLIC KEY BLOCK-----\r\n', + private: '-----BEGIN PGP PRIVATE KEY BLOCK-----\r\nVersion: FlowCrypt iOS 0.2 Gmail Encryption\r\nComment: Seamlessly send and receive encrypted email\r\n\r\n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\r\nIRQbqPYCZ6Ngz/4NAUlQhxYUxXA4Xg5x8J/+xdrDCs6QjaNsu57aGAkkl3og\r\nphgaodwN/fSPhKL+hXPOkxiPt9j8LVcZLP1p7shm+uJyJ5b8rsjy8rztkWrp\r\nFsF/fexkOOi7HLqQ+04tK5ARHzv9duCaCbqL4xmLOeVPb1SOL40/bApxyVp/\r\nFa+aC8cZQXYTpeR4NDzIMPUHbHbNO0Zsb3dDcnlwdCBDb21wYXRpYmlsaXR5\r\nIDxmbG93Y3J5cHQuY29tcGF0aWJpbGl0eUBnbWFpbC5jb20+wsF/BBABCAAp\r\nBQJZ+6ljBgsJBwgDAgkQrawnnJUJMgcEFQgKAgMWAgECGQECGwMCHgEACgkQ\r\nrawnnJUJMgfO5g//audO5E7KXiXIQzqsVfh0RpOS5KwDa8ZNAOzbBjQbfjyv\r\njnvej9pYy+7Pot9NDfGtMEMpWj5uWuPhD1fv2Kv/uBP4csJqf8Vbs1H1hD4s\r\nD21RrHerM7xCFzIN1XHhkemR7IALNfekrC9TGi4IYYZrZKz/yK0lCjT8BIro\r\njYUE5CODa8mKPB2BSmJwqNwZxhr0KKnPykrOAZfpArnHEdY3JE54Se6FCxKM\r\nWOtnKBHcwHiSTsX/nBtK30sCul9j1Wgd1jFRJ244ESJd7M6cBlNrJ6GTZDil\r\nrmpo9nVO0slTwD/YD6GCyN3r3hJ3IEDnwZK05pL+1trM6718pyWaywfT62vW\r\nzL7pNqk7tIghX+HrvrHVNYs/G3LnN9m5zlCJMk5wKP+f9olsz3Llupam2auk\r\ng/h1HXEl3lli9u9QkJkbGaEDWR9UCnH/xoybpS0mgjVYt0B6jNYvHBLLhuaj\r\nhR+1sjVIIg0kwfxZfQgFXyAL8LWu4nNaSEICUl8hVBWf9V6Xn4VX7JkkWlE3\r\nJEByYiuZkADhSdyklJYkR9fQjUc5AcZsUgOuTXsY4fG0IEryMzrxRw0qgqG1\r\n7rir1uqrvLDrDM18FPWkW2JwGzF0YR5yezvvz3H3rXog+ryEzeZAN48Zwrzv\r\nGRcvEZJFmB1CwTHrW4UykC592pqHR5K4nV7BUTzHxoYEWfupXgEQAK/GGjyh\r\n3CHg0yGZL5q4LJfn2xABV00RXiwxNyPc/7YzYgSanBQmzFj3AMJhcFdJx/Eg\r\n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\r\ntiL0VgGWS0GVL1cZMUwhvvu8bxI=\r\n=rRS1\r\n-----END PGP PRIVATE KEY BLOCK-----\r\n', + decrypted: '', + passphrase: 'London blueBARREY capi', + longid: 'ADAC279C95093207' } } -type KeypairName = 'rsa1' | 'rsa2' | 'ecc' | 'gpg-dummy' | 'expired' | 'revoked'; +type KeypairName = 'rsa1' | 'rsa2' | 'ecc' | 'gpg-dummy' | 'expired' | 'revoked' | 'flowcrypt.compatibility'; -export const allKeypairNames: KeypairName[] = ['rsa1', 'rsa2', 'ecc', 'gpg-dummy', 'expired', 'revoked']; +export const allKeypairNames: KeypairName[] = ['rsa1', 'rsa2', 'ecc', 'gpg-dummy', 'expired', 'revoked', 'flowcrypt.compatibility']; export const getKeypairs = (...names: KeypairName[]) => { return { diff --git a/FlowCrypt.xcodeproj/project.pbxproj b/FlowCrypt.xcodeproj/project.pbxproj index b594fa678..8f86959dc 100644 --- a/FlowCrypt.xcodeproj/project.pbxproj +++ b/FlowCrypt.xcodeproj/project.pbxproj @@ -333,7 +333,6 @@ D2CCD1FA247C50DA00D21F9C /* UIColorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F31AB9D232BF2A600CF87EA /* UIColorExtension.swift */; }; D2CDC3CD2402CCD7002B045F /* UIImageExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8277952373732000E19C07 /* UIImageExtensions.swift */; }; D2CDC3CE2402CDB4002B045F /* DispatchTimeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DCABF1508B0C08DEDE2059 /* DispatchTimeExtension.swift */; }; - D2CDC3CF2402D4AD002B045F /* SequenceExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DCA058652FD4616FB04FB6 /* SequenceExtensions.swift */; }; D2CDC3D22402D4DA002B045F /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FEED1B7230C08D700700F8E /* UIViewControllerExtensions.swift */; }; D2CDC3D32402D4FE002B045F /* DataExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DCAEFF16F5D91A35791730 /* DataExtensions.swift */; }; D2CDC3D42402D50A002B045F /* CodableExntensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 32DCA38E87F2B7196E0E1F1F /* CodableExntensions.swift */; }; @@ -464,7 +463,6 @@ 2CC12C3E273571B80021DDDF /* AttachmentManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentManager.swift; sourceTree = ""; }; 2CC50FAE27440B2C0051629A /* Session.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Session.swift; sourceTree = ""; }; 2CC50FB02744167A0051629A /* Folder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Folder.swift; sourceTree = ""; }; - 32DCA058652FD4616FB04FB6 /* SequenceExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SequenceExtensions.swift; sourceTree = ""; }; 32DCA0C3D34A69851A238E87 /* Core.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Core.swift; sourceTree = ""; }; 32DCA0E63F2F0473D0A8EDB0 /* StringExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = ""; }; 32DCA377D22F4D67A8FA05EB /* Imap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Imap.swift; sourceTree = ""; }; @@ -1881,7 +1879,6 @@ A37A1CF523C6254F001CF774 /* IntExtensions.swift */, 32DCABF1508B0C08DEDE2059 /* DispatchTimeExtension.swift */, 9F8277952373732000E19C07 /* UIImageExtensions.swift */, - 32DCA058652FD4616FB04FB6 /* SequenceExtensions.swift */, 32DCA38E87F2B7196E0E1F1F /* CodableExntensions.swift */, 9FD22A1B230FE7D0005067A6 /* Then.swift */, D271774D24255F1100BDA9A9 /* UIColorExtensions.swift */, @@ -2822,7 +2819,6 @@ buildActionMask = 2147483647; files = ( D2531F462402C62D007E5198 /* CollectionExtensions.swift in Sources */, - D2CDC3CF2402D4AD002B045F /* SequenceExtensions.swift in Sources */, D254AA6124092AC70041CAE0 /* LocalizationExtensions.swift in Sources */, D2531F3F24000E57007E5198 /* StringExtensions.swift in Sources */, D2CDC3CE2402CDB4002B045F /* DispatchTimeExtension.swift in Sources */, diff --git a/FlowCrypt.xcworkspace/xcshareddata/swiftpm/Package.resolved b/FlowCrypt.xcworkspace/xcshareddata/swiftpm/Package.resolved index 9f5ced7f3..03bee17f0 100644 --- a/FlowCrypt.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/FlowCrypt.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -33,8 +33,8 @@ "repositoryURL": "https://github.com/google/GoogleSignIn-iOS", "state": { "branch": null, - "revision": "27bc94f5e1bd1f3b12ba5abb2230dd77dd143f1e", - "version": "6.0.2" + "revision": "60ca2bfd218ccb194a746a79b41d9d50eb7e3af0", + "version": "6.1.0" } }, { @@ -87,8 +87,8 @@ "repositoryURL": "https://github.com/realm/realm-cocoa", "state": { "branch": null, - "revision": "f483fa0a52f6d49897d133a827510a35e21183c1", - "version": "10.20.1" + "revision": "e83cc9f28e8bccd477b6b81cee521c02239d2773", + "version": "10.20.2" } }, { diff --git a/FlowCrypt/Controllers/Threads/ThreadDetailsViewController.swift b/FlowCrypt/Controllers/Threads/ThreadDetailsViewController.swift index e467f9f4e..c5311376c 100644 --- a/FlowCrypt/Controllers/Threads/ThreadDetailsViewController.swift +++ b/FlowCrypt/Controllers/Threads/ThreadDetailsViewController.swift @@ -237,9 +237,11 @@ extension ThreadDetailsViewController { ) if case .missingPubkey = processedMessage.signature { processedMessage.signature = .pending - retryVerifyingSignatureWithRemotelyFetchedKeys(message: message, - folder: thread.path, - indexPath: indexPath) + retryVerifyingSignatureWithRemotelyFetchedKeys( + message: message, + folder: thread.path, + indexPath: indexPath + ) } handleReceived(message: processedMessage, at: indexPath) } catch { @@ -333,7 +335,8 @@ extension ThreadDetailsViewController { let processedMessage = try await messageService.decryptAndProcessMessage( mime: rawMimeData, sender: sender, - onlyLocalKeys: false) + onlyLocalKeys: false + ) handleReceived(message: processedMessage, at: indexPath) } else { handleWrongPassPhrase(for: rawMimeData, with: passPhrase, at: indexPath) diff --git a/FlowCrypt/Core/Core.swift b/FlowCrypt/Core/Core.swift index 5b8f6773c..d59d38328 100644 --- a/FlowCrypt/Core/Core.swift +++ b/FlowCrypt/Core/Core.swift @@ -6,39 +6,13 @@ import FlowCryptCommon import JavaScriptCore enum CoreError: LocalizedError, Equatable { - case exception(String) - case notReady(String) - case format(String) - case keyMismatch(String) - case noMDC(String) - case badMDC(String) - case needPassphrase(String) - case wrongPassphrase(String) - // wrong value passed into a function - case value(String) - - init(coreError: CoreRes.Error) { - switch coreError.error.type { - case "format": self = .format(coreError.error.message) - case "key_mismatch": self = .keyMismatch(coreError.error.message) - case "no_mdc": self = .noMDC(coreError.error.message) - case "bad_mdc": self = .badMDC(coreError.error.message) - case "need_passphrase": self = .needPassphrase(coreError.error.message) - case "wrong_passphrase": self = .wrongPassphrase(coreError.error.message) - default: self = .exception(coreError.error.message + "\n" + (coreError.error.stack ?? "no stack")) - } - } - + case exception(String) // core threw exception + case notReady(String) // core not initialized + case value(String) // wrong value passed into or returned by a function var errorDescription: String? { switch self { case .exception(let message), .notReady(let message), - .format(let message), - .keyMismatch(let message), - .noMDC(let message), - .badMDC(let message), - .needPassphrase(let message), - .wrongPassphrase(let message), .value(let message): return message } @@ -103,14 +77,35 @@ actor Core: KeyDecrypter, KeyParser, CoreComposeMessageType { // MARK: Files public func decryptFile(encrypted: Data, keys: [PrvKeyInfo], msgPwd: String?) async throws -> CoreRes.DecryptFile { + struct DecryptFileRaw: Decodable { + let decryptSuccess: DecryptSuccess? + let decryptErr: DecryptErr? + struct DecryptSuccess: Decodable { + let name: String + } + } let json: [String : Any?]? = [ "keys": try keys.map { try $0.toJsonEncodedDict() }, "msgPwd": msgPwd ] let decrypted = try await call("decryptFile", jsonDict: json, data: encrypted) - let meta = try decrypted.json.decodeJson(as: CoreRes.DecryptFileMeta.self) - - return CoreRes.DecryptFile(name: meta.name, content: decrypted.data) + let decryptFileRes = try decrypted.json.decodeJson(as: DecryptFileRaw.self) + if let decryptErr = decryptFileRes.decryptErr { + return CoreRes.DecryptFile( + decryptSuccess: nil, + decryptErr: decryptErr + ) + } + if let decryptSuccess = decryptFileRes.decryptSuccess { + return CoreRes.DecryptFile( + decryptSuccess: CoreRes.DecryptFile.DecryptSuccess( + name: decryptSuccess.name, + data: decrypted.data + ), + decryptErr: nil + ) + } + throw AppErr.unexpected("decryptFile: both decryptErr and decryptSuccess were nil") } public func encryptFile(pubKeys: [String]?, fileData: Data, name: String) async throws -> CoreRes.EncryptFile { @@ -127,11 +122,17 @@ actor Core: KeyDecrypter, KeyParser, CoreComposeMessageType { return CoreRes.EncryptFile(encryptedFile: encrypted.data) } - func parseDecryptMsg(encrypted: Data, - keys: [PrvKeyInfo], - msgPwd: String?, - isEmail: Bool, - verificationPubKeys: [String]) async throws -> CoreRes.ParseDecryptMsg { + func parseDecryptMsg( + encrypted: Data, + keys: [PrvKeyInfo], + msgPwd: String?, + isEmail: Bool, + verificationPubKeys: [String] + ) async throws -> CoreRes.ParseDecryptMsg { + struct ParseDecryptMsgRaw: Decodable { + let replyType: ReplyType + let text: String + } let json: [String : Any?]? = [ "keys": try keys.map { try $0.toJsonEncodedDict() }, "isEmail": isEmail, @@ -143,8 +144,7 @@ actor Core: KeyDecrypter, KeyParser, CoreComposeMessageType { jsonDict: json, data: encrypted ) - let meta = try parsed.json - .decodeJson(as: CoreRes.ParseDecryptMsgWithoutBlocks.self) + let meta = try parsed.json.decodeJson(as: ParseDecryptMsgRaw.self) let blocks = parsed.data .split(separator: 10) // newline separated block jsons, one json per line @@ -237,7 +237,6 @@ actor Core: KeyDecrypter, KeyParser, CoreComposeMessageType { guard ready else { throw CoreError.exception("Core is not ready yet. Most likeyly startIfNotAlreadyRunning wasn't called first") } - let callbackId = NSUUID().uuidString jsEndpointListener!.call(withArguments: [ endpoint, @@ -254,16 +253,18 @@ actor Core: KeyDecrypter, KeyParser, CoreComposeMessageType { let result = callbackResults.removeValue(forKey: callbackId), let resJsonData = result.0.data(using: .utf8) else { - throw CoreError.format("JavaScript callback response not available") + throw CoreError.value("JavaScript callback response not available") } - let error = try? resJsonData.decodeJson(as: CoreRes.Error.self) if let error = error { - let errMsg = "------ js err -------\nCore \(endpoint):\n\(error.error.message)\n\(error.error.stack ?? "no stack")\n------- end js err -----" - logger.logError(errMsg) - throw CoreError(coreError: error) + logger.logError(""" + ------ js err ------- + Core \(endpoint): \(error.error.message) + \(error.error.stack ?? "no stack") + ------- end js err ----- + """) + throw CoreError.exception(error.error.message + "\n" + (error.error.stack ?? "no stack")) } - return RawRes(json: resJsonData, data: Data(result.1)) } } diff --git a/FlowCrypt/Core/CoreTypes.swift b/FlowCrypt/Core/CoreTypes.swift index 10ae43877..cdc11c9d4 100644 --- a/FlowCrypt/Core/CoreTypes.swift +++ b/FlowCrypt/Core/CoreTypes.swift @@ -9,16 +9,11 @@ struct CoreRes { struct Version: Decodable { let app_version: String } - + struct ComposeEmail { let mimeEncoded: Data } - struct ParseDecryptMsgWithoutBlocks: Decodable { - let replyType: ReplyType - let text: String - } - struct ParseDecryptMsg { let replyType: ReplyType let text: String @@ -47,19 +42,19 @@ struct CoreRes { struct GenerateKey: Decodable { let key: KeyDetails } - - struct DecryptFile: Decodable { - let name: String - let content: Data + + struct DecryptFile { + let decryptSuccess: DecryptSuccess? + let decryptErr: DecryptErr? + struct DecryptSuccess { + let name: String + let data: Data + } } struct EncryptFile: Decodable { let encryptedFile: Data } - - struct DecryptFileMeta: Decodable { - let name: String - } struct Error: Decodable { struct ErrorWithOptionalStack: Decodable { @@ -99,11 +94,11 @@ struct CoreRes { let word: WordDetails let time: String } +} - enum ReplyType: String, Decodable { - case encrypted - case plain - } +enum ReplyType: String, Decodable { + case encrypted + case plain } enum MsgFmt: String { @@ -142,6 +137,36 @@ struct SendableMsg: Equatable { let signingPrv: PrvKeyInfo? } +struct DecryptErr: Decodable { + let error: Error + let longids: Longids + let content: String? + let isEncrypted: Bool? + + struct Error: Decodable { + let type: ErrorType + let message: String + } + + struct Longids: Decodable { + let message: [String] + let matching: [String] + let chosen: [String] + let needPassphrase: [String] + } + + enum ErrorType: String, Decodable { + case keyMismatch = "key_mismatch" + case usePassword = "use_password" + case wrongPwd = "wrong_password" + case noMdc = "no_mdc" + case badMdc = "bad_mdc" + case needPassphrase = "need_passphrase" + case format + case other + } +} + struct MsgBlock: Decodable { static func blockParseErr(with content: String) -> MsgBlock { MsgBlock(type: .blockParseErr, content: content, decryptErr: nil, keyDetails: nil, attMeta: nil, verifyRes: nil) @@ -154,38 +179,6 @@ struct MsgBlock: Decodable { let attMeta: AttMeta? // always present in plainAtt, encryptedAtt, decryptedAtt, encryptedAttLink let verifyRes: VerifyRes? - // let signature: String? // possibly not neded in Swift - - struct DecryptErr: Decodable { - let error: Error - let longids: Longids - let content: String? - let isEncrypted: Bool? - - struct Error: Decodable { - let type: ErrorType - let message: String - } - - struct Longids: Decodable { - let message: [String] - let matching: [String] - let chosen: [String] - let needPassphrase: [String] - } - - enum ErrorType: String, Decodable { - case keyMismatch = "key_mismatch" - case usePassword = "use_password" - case wrongPwd = "wrong_password" - case noMdc = "no_mdc" - case badMdc = "bad_mdc" - case needPassphrase = "need_passphrase" - case format - case other - } - } - struct AttMeta: Decodable { let name: String let data: Data diff --git a/FlowCrypt/Functionality/Mail Provider/Message Provider/MessageService.swift b/FlowCrypt/Functionality/Mail Provider/Message Provider/MessageService.swift index 6809f9ba7..d3a5295ff 100644 --- a/FlowCrypt/Functionality/Mail Provider/Message Provider/MessageService.swift +++ b/FlowCrypt/Functionality/Mail Provider/Message Provider/MessageService.swift @@ -18,7 +18,7 @@ enum MessageFetchState { // MARK: - ProcessedMessage struct ProcessedMessage { enum MessageType: Hashable { - case error(MsgBlock.DecryptErr.ErrorType), encrypted, plain + case error(DecryptErr.ErrorType), encrypted, plain } enum MessageSignature: Hashable { @@ -152,14 +152,18 @@ final class MessageService { folder: folder, progressHandler: progressHandler ) - return try await decryptAndProcessMessage(mime: rawMimeData, - sender: input.sender, - onlyLocalKeys: onlyLocalKeys) + return try await decryptAndProcessMessage( + mime: rawMimeData, + sender: input.sender, + onlyLocalKeys: onlyLocalKeys + ) } - func decryptAndProcessMessage(mime rawMimeData: Data, - sender: String?, - onlyLocalKeys: Bool) async throws -> ProcessedMessage { + func decryptAndProcessMessage( + mime rawMimeData: Data, + sender: String?, + onlyLocalKeys: Bool + ) async throws -> ProcessedMessage { let keys = try await keyService.getPrvKeyInfo() guard keys.isNotEmpty else { throw MessageServiceError.emptyKeys @@ -176,10 +180,12 @@ final class MessageService { throw MessageServiceError.missingPassPhrase(rawMimeData) } - return try await processMessage(rawMimeData: rawMimeData, - sender: sender, - with: decrypted, - keys: keys) + return try await processMessage( + rawMimeData: rawMimeData, + sender: sender, + with: decrypted, + keys: keys + ) } private func processMessage( @@ -188,8 +194,8 @@ final class MessageService { with decrypted: CoreRes.ParseDecryptMsg, keys: [PrvKeyInfo] ) async throws -> ProcessedMessage { - let decryptErrBlocks = decrypted.blocks - .filter { $0.decryptErr != nil } + let firstBlockParseErr = decrypted.blocks.first { $0.type == .blockParseErr } + let firstDecryptErrBlock = decrypted.blocks.first { $0.type == .decryptErr } let attachments: [MessageAttachment] = try await getAttachments( blocks: decrypted.blocks, keys: keys @@ -198,15 +204,23 @@ final class MessageService { let text: String let signature: ProcessedMessage.MessageSignature? - if let decryptErrBlock = decryptErrBlocks.first { - let rawMsg = decryptErrBlock.content + if let firstBlockParseErr = firstBlockParseErr { + // Swift failed to parse one of the MsgBlock returned from TypeScript Core + text = "Internal error: could not parse MsgBlock. Please report this error to us.\n\n\(firstBlockParseErr.content)" + messageType = .error(.other) + signature = nil + } else if let decryptErrBlock = firstDecryptErrBlock { + // message failed to decrypt or process let err = decryptErrBlock.decryptErr?.error + let hideContent = err?.type == .badMdc || err?.type == .noMdc + let rawMsg = hideContent ? "(content hidden for security)" : decryptErrBlock.content text = "Could not decrypt:\n\(err?.type.rawValue ?? "UNKNOWN"): \(err?.message ?? "??")\n\n\n\(rawMsg)" messageType = .error(err?.type ?? .other) signature = nil } else { + // decrypt / process success text = decrypted.text - messageType = decrypted.replyType == CoreRes.ReplyType.encrypted ? .encrypted : .plain + messageType = decrypted.replyType == ReplyType.encrypted ? .encrypted : .plain signature = await evaluateSignatureVerificationResult( signature: decrypted.blocks.first?.verifyRes ) @@ -230,17 +244,41 @@ final class MessageService { var attachments: [MessageAttachment] = [] for block in attachmentBlocks { guard let meta = block.attMeta else { continue } - let attachment: MessageAttachment if block.type == .encryptedAtt { // decrypt - let decrypted = try await core.decryptFile(encrypted: meta.data, keys: keys, msgPwd: nil) - attachment = MessageAttachment(name: decrypted.name, - data: decrypted.content) + // todo - this is decrypting attachments too early + // there is no need to decrypt attachments when rendering message, + // since user may never tap them. + // Instead decrypt them when actually tapped. + let decrypted = try await core.decryptFile( + encrypted: meta.data, + keys: keys, + msgPwd: nil + ) + if let decryptSuccess = decrypted.decryptSuccess { + attachment = MessageAttachment( + name: decryptSuccess.name, + data: decryptSuccess.data + ) + } else if let decryptErr = decrypted.decryptErr { + // todo - once above todo is done and we are decrypting + // at the time of tapping an attachment, render error modal + // if user confirms the modal, they can download the original msg + // then can remove the warning + logger.logWarning("attachment could not be decrypted due to error: \(decryptErr.error.type) - \(decryptErr.error.message)") + attachment = MessageAttachment( + name: meta.name, + data: meta.data + ) + } else { + throw AppErr.unexpected("decryptFile: expected one of decryptErr, decryptSuccess to be present") + } } else { - attachment = MessageAttachment(name: meta.name, - data: meta.data) + attachment = MessageAttachment( + name: meta.name, + data: meta.data + ) } - attachments.append(attachment) } @@ -291,10 +329,3 @@ extension MessageService { return .good } } - -private extension MessageAttachment { - init(block: MsgBlock) { - self.name = block.attMeta?.name ?? "Attachment" - self.data = block.attMeta?.data ?? Data() - } -} diff --git a/FlowCrypt/Resources/flowcrypt-ios-prod.js.txt b/FlowCrypt/Resources/flowcrypt-ios-prod.js.txt index ce0b14a96..af3ae350c 100644 --- a/FlowCrypt/Resources/flowcrypt-ios-prod.js.txt +++ b/FlowCrypt/Resources/flowcrypt-ios-prod.js.txt @@ -86528,6 +86528,7 @@ class Endpoints { return (0, format_output_1.fmtRes)({}, encrypted.message.packets.write()); }; this.parseDecryptMsg = async (uncheckedReq, data) => { + var _a; const { keys: kisWithPp, msgPwd, isEmail, verificationPubkeys } = validate_input_1.ValidateInput.parseDecryptMsg(uncheckedReq); const rawBlocks = []; // contains parsed, unprocessed / possibly encrypted data let rawSigned = undefined; @@ -86572,7 +86573,7 @@ class Endpoints { decryptRes.message = undefined; sequentialProcessedBlocks.push({ type: 'decryptErr', - content: decryptRes.error.type === pgp_msg_1.DecryptErrTypes.noMdc ? decryptRes.content : rawBlock.content, + content: decryptRes.error.type === pgp_msg_1.DecryptErrTypes.noMdc ? decryptRes.content.toUtfStr() : rawBlock.content.toString(), decryptErr: decryptRes, complete: true }); @@ -86608,6 +86609,10 @@ class Endpoints { // no longer used below, only gets passed to be serialized as JSON - later consumed by iOS or Android app block.attMeta.data = buf_1.Buf.fromUint8(block.attMeta.data).toBase64Str(); } + if (((_a = block.decryptErr) === null || _a === void 0 ? void 0 : _a.content) instanceof buf_1.Buf) { + // cannot pass a Buf using a json, converting to String before it gets serialized + block.decryptErr.content = block.decryptErr.content.toUtfStr(); + } if (block.type === 'decryptedHtml' || block.type === 'decryptedText' || block.type === 'decryptedAtt') { replyType = 'encrypted'; } @@ -86626,7 +86631,7 @@ class Endpoints { complete: true, decryptErr: { success: false, - error: { type: 'format', message: 'Badly formatted public key' }, + error: { type: pgp_msg_1.DecryptErrTypes.format, message: 'Badly formatted public key' }, longids: { message: [], matching: [], chosen: [], needPassphrase: [] } } }); @@ -86653,12 +86658,13 @@ class Endpoints { }; this.decryptFile = async (uncheckedReq, data, verificationPubkeys) => { const { keys: kisWithPp, msgPwd } = validate_input_1.ValidateInput.decryptFile(uncheckedReq); - const decryptedMeta = await pgp_msg_1.PgpMsg.decrypt({ kisWithPp, encryptedData: buf_1.Buf.concat(data), msgPwd, verificationPubkeys }); - if (!decryptedMeta.success) { - decryptedMeta.message = undefined; - return (0, format_output_1.fmtRes)(decryptedMeta); + const decryptRes = await pgp_msg_1.PgpMsg.decrypt({ kisWithPp, encryptedData: buf_1.Buf.concat(data), msgPwd, verificationPubkeys }); + if (!decryptRes.success) { + decryptRes.message = undefined; + decryptRes.content = undefined; + return (0, format_output_1.fmtRes)({ decryptErr: decryptRes }); } - return (0, format_output_1.fmtRes)({ success: true, name: decryptedMeta.filename || '' }, decryptedMeta.content); + return (0, format_output_1.fmtRes)({ decryptSuccess: { name: decryptRes.filename || '' } }, decryptRes.content); }; this.parseDateStr = async (uncheckedReq) => { const { dateStr } = validate_input_1.ValidateInput.parseDateStr(uncheckedReq); @@ -86989,7 +86995,7 @@ MsgBlock.fromAtt = (type, content, attMeta) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.Buf = void 0; -const util_js_1 = __webpack_require__(6); +const util_1 = __webpack_require__(6); class Buf extends Uint8Array { constructor() { super(...arguments); @@ -87067,7 +87073,7 @@ class Buf extends Uint8Array { return chars.join(''); }; this.toBase64Str = () => { - return (0, util_js_1.base64encode)(this.toRawBytesStr()); + return (0, util_1.base64encode)(this.toRawBytesStr()); }; this.toBase64UrlStr = () => { return this.toBase64Str().replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); @@ -87158,7 +87164,7 @@ Buf.fromUtfStr = (utfStr) => { return new Buf(bytes); }; Buf.fromBase64Str = (b64str) => { - return Buf.fromRawBytesStr((0, util_js_1.base64decode)(b64str)); + return Buf.fromRawBytesStr((0, util_1.base64decode)(b64str)); }; Buf.fromBase64UrlStr = (b64UrlStr) => { return Buf.fromBase64Str(b64UrlStr.replace(/-/g, '+').replace(/_/g, '/')); @@ -111770,7 +111776,7 @@ elliptic.eddsa = __webpack_require__(170); /* 144 */ /***/ (function(module) { -module.exports = JSON.parse("{\"_args\":[[\"elliptic@6.5.4\",\"/Users/ivan/Documents/Projects/FlowCrypt/flowcrypt-ios/Core\"]],\"_development\":true,\"_from\":\"elliptic@6.5.4\",\"_id\":\"elliptic@6.5.4\",\"_inBundle\":false,\"_integrity\":\"sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==\",\"_location\":\"/elliptic\",\"_phantomChildren\":{},\"_requested\":{\"type\":\"version\",\"registry\":true,\"raw\":\"elliptic@6.5.4\",\"name\":\"elliptic\",\"escapedName\":\"elliptic\",\"rawSpec\":\"6.5.4\",\"saveSpec\":null,\"fetchSpec\":\"6.5.4\"},\"_requiredBy\":[\"/browserify-sign\",\"/create-ecdh\"],\"_resolved\":\"https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz\",\"_spec\":\"6.5.4\",\"_where\":\"/Users/ivan/Documents/Projects/FlowCrypt/flowcrypt-ios/Core\",\"author\":{\"name\":\"Fedor Indutny\",\"email\":\"fedor@indutny.com\"},\"bugs\":{\"url\":\"https://github.com/indutny/elliptic/issues\"},\"dependencies\":{\"bn.js\":\"^4.11.9\",\"brorand\":\"^1.1.0\",\"hash.js\":\"^1.0.0\",\"hmac-drbg\":\"^1.0.1\",\"inherits\":\"^2.0.4\",\"minimalistic-assert\":\"^1.0.1\",\"minimalistic-crypto-utils\":\"^1.0.1\"},\"description\":\"EC cryptography\",\"devDependencies\":{\"brfs\":\"^2.0.2\",\"coveralls\":\"^3.1.0\",\"eslint\":\"^7.6.0\",\"grunt\":\"^1.2.1\",\"grunt-browserify\":\"^5.3.0\",\"grunt-cli\":\"^1.3.2\",\"grunt-contrib-connect\":\"^3.0.0\",\"grunt-contrib-copy\":\"^1.0.0\",\"grunt-contrib-uglify\":\"^5.0.0\",\"grunt-mocha-istanbul\":\"^5.0.2\",\"grunt-saucelabs\":\"^9.0.1\",\"istanbul\":\"^0.4.5\",\"mocha\":\"^8.0.1\"},\"files\":[\"lib\"],\"homepage\":\"https://github.com/indutny/elliptic\",\"keywords\":[\"EC\",\"Elliptic\",\"curve\",\"Cryptography\"],\"license\":\"MIT\",\"main\":\"lib/elliptic.js\",\"name\":\"elliptic\",\"repository\":{\"type\":\"git\",\"url\":\"git+ssh://git@github.com/indutny/elliptic.git\"},\"scripts\":{\"lint\":\"eslint lib test\",\"lint:fix\":\"npm run lint -- --fix\",\"test\":\"npm run lint && npm run unit\",\"unit\":\"istanbul test _mocha --reporter=spec test/index.js\",\"version\":\"grunt dist && git add dist/\"},\"version\":\"6.5.4\"}"); +module.exports = JSON.parse("{\"name\":\"elliptic\",\"version\":\"6.5.4\",\"description\":\"EC cryptography\",\"main\":\"lib/elliptic.js\",\"files\":[\"lib\"],\"scripts\":{\"lint\":\"eslint lib test\",\"lint:fix\":\"npm run lint -- --fix\",\"unit\":\"istanbul test _mocha --reporter=spec test/index.js\",\"test\":\"npm run lint && npm run unit\",\"version\":\"grunt dist && git add dist/\"},\"repository\":{\"type\":\"git\",\"url\":\"git@github.com:indutny/elliptic\"},\"keywords\":[\"EC\",\"Elliptic\",\"curve\",\"Cryptography\"],\"author\":\"Fedor Indutny \",\"license\":\"MIT\",\"bugs\":{\"url\":\"https://github.com/indutny/elliptic/issues\"},\"homepage\":\"https://github.com/indutny/elliptic\",\"devDependencies\":{\"brfs\":\"^2.0.2\",\"coveralls\":\"^3.1.0\",\"eslint\":\"^7.6.0\",\"grunt\":\"^1.2.1\",\"grunt-browserify\":\"^5.3.0\",\"grunt-cli\":\"^1.3.2\",\"grunt-contrib-connect\":\"^3.0.0\",\"grunt-contrib-copy\":\"^1.0.0\",\"grunt-contrib-uglify\":\"^5.0.0\",\"grunt-mocha-istanbul\":\"^5.0.2\",\"grunt-saucelabs\":\"^9.0.1\",\"istanbul\":\"^0.4.5\",\"mocha\":\"^8.0.1\"},\"dependencies\":{\"bn.js\":\"^4.11.9\",\"brorand\":\"^1.1.0\",\"hash.js\":\"^1.0.0\",\"hmac-drbg\":\"^1.0.1\",\"inherits\":\"^2.0.4\",\"minimalistic-assert\":\"^1.0.1\",\"minimalistic-crypto-utils\":\"^1.0.1\"}}"); /***/ }), /* 145 */ @@ -123738,18 +123744,18 @@ function randomFillSync (buf, offset, size) { var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.Mime = void 0; -const common_js_1 = __webpack_require__(206); -const require_js_1 = __webpack_require__(207); -const att_js_1 = __webpack_require__(209); -const buf_js_1 = __webpack_require__(5); -const catch_js_1 = __webpack_require__(210); -const msg_block_js_1 = __webpack_require__(4); -const msg_block_parser_js_1 = __webpack_require__(211); -const pgp_armor_js_1 = __webpack_require__(213); -const util_js_1 = __webpack_require__(6); -const MimeParser = (0, require_js_1.requireMimeParser)(); // tslint:disable-line:variable-name -const MimeBuilder = (0, require_js_1.requireMimeBuilder)(); // tslint:disable-line:variable-name -const Iso88592 = (0, require_js_1.requireIso88592)(); // tslint:disable-line:variable-name +const common_1 = __webpack_require__(206); +const require_1 = __webpack_require__(207); +const att_1 = __webpack_require__(209); +const buf_1 = __webpack_require__(5); +const catch_1 = __webpack_require__(210); +const msg_block_1 = __webpack_require__(4); +const msg_block_parser_1 = __webpack_require__(211); +const pgp_armor_1 = __webpack_require__(213); +const util_1 = __webpack_require__(6); +const MimeParser = (0, require_1.requireMimeParser)(); // tslint:disable-line:variable-name +const MimeBuilder = (0, require_1.requireMimeBuilder)(); // tslint:disable-line:variable-name +const Iso88592 = (0, require_1.requireIso88592)(); // tslint:disable-line:variable-name class Mime { } exports.Mime = Mime; @@ -123757,43 +123763,43 @@ _a = Mime; Mime.processDecoded = (decoded) => { const blocks = []; if (decoded.text) { - const blocksFromTextPart = msg_block_parser_js_1.MsgBlockParser.detectBlocks(common_js_1.Str.normalize(decoded.text)).blocks; + const blocksFromTextPart = msg_block_parser_1.MsgBlockParser.detectBlocks(common_1.Str.normalize(decoded.text)).blocks; // if there are some encryption-related blocks found in the text section, which we can use, and not look at the html section if (blocksFromTextPart.find(b => b.type === 'encryptedMsg' || b.type === 'signedMsg' || b.type === 'publicKey' || b.type === 'privateKey')) { blocks.push(...blocksFromTextPart); // because the html most likely containt the same thing, just harder to parse pgp sections cause it's html } else if (decoded.html) { // if no pgp blocks found in text part and there is html part, prefer html - blocks.push(msg_block_js_1.MsgBlock.fromContent('plainHtml', decoded.html)); + blocks.push(msg_block_1.MsgBlock.fromContent('plainHtml', decoded.html)); } else { // else if no html and just a plain text message, use that blocks.push(...blocksFromTextPart); } } else if (decoded.html) { - blocks.push(msg_block_js_1.MsgBlock.fromContent('plainHtml', decoded.html)); + blocks.push(msg_block_1.MsgBlock.fromContent('plainHtml', decoded.html)); } for (const file of decoded.atts) { const treatAs = file.treatAs(); if (treatAs === 'encryptedMsg') { - const armored = pgp_armor_js_1.PgpArmor.clip(file.getData().toUtfStr()); + const armored = pgp_armor_1.PgpArmor.clip(file.getData().toUtfStr()); if (armored) { - blocks.push(msg_block_js_1.MsgBlock.fromContent('encryptedMsg', armored)); + blocks.push(msg_block_1.MsgBlock.fromContent('encryptedMsg', armored)); } } else if (treatAs === 'signature') { decoded.signature = decoded.signature || file.getData().toUtfStr(); } else if (treatAs === 'publicKey') { - blocks.push(...msg_block_parser_js_1.MsgBlockParser.detectBlocks(file.getData().toUtfStr()).blocks); + blocks.push(...msg_block_parser_1.MsgBlockParser.detectBlocks(file.getData().toUtfStr()).blocks); } else if (treatAs === 'privateKey') { - blocks.push(...msg_block_parser_js_1.MsgBlockParser.detectBlocks(file.getData().toUtfStr()).blocks); + blocks.push(...msg_block_parser_1.MsgBlockParser.detectBlocks(file.getData().toUtfStr()).blocks); } else if (treatAs === 'encryptedFile') { - blocks.push(msg_block_js_1.MsgBlock.fromAtt('encryptedAtt', '', { name: file.name, type: file.type, length: file.getData().length, data: file.getData() })); + blocks.push(msg_block_1.MsgBlock.fromAtt('encryptedAtt', '', { name: file.name, type: file.type, length: file.getData().length, data: file.getData() })); } else if (treatAs === 'plainFile') { - blocks.push(msg_block_js_1.MsgBlock.fromAtt('plainAtt', '', { + blocks.push(msg_block_1.MsgBlock.fromAtt('plainAtt', '', { name: file.name, type: file.type, length: file.getData().length, data: file.getData(), inline: file.inline, cid: file.cid })); } @@ -123810,7 +123816,7 @@ Mime.processDecoded = (decoded) => { } } if (!blocks.find(block => block.type === 'plainText' || block.type === 'plainHtml' || block.type === 'signedMsg' || block.type === 'signedHtml')) { // signed an empty message - blocks.push(new msg_block_js_1.MsgBlock("signedMsg", "", true, decoded.signature)); + blocks.push(new msg_block_1.MsgBlock("signedMsg", "", true, decoded.signature)); } } return { headers: decoded.headers, blocks, from: decoded.from, to: decoded.to, rawSignedContent: decoded.rawSignedContent }; @@ -123828,7 +123834,7 @@ Mime.replyHeaders = (parsedMimeMsg) => { return { 'in-reply-to': msgId, 'references': refs + ' ' + msgId }; }; Mime.resemblesMsg = (msg) => { - const utf8 = new buf_js_1.Buf(msg.slice(0, 1000)).toUtfStr().toLowerCase(); + const utf8 = new buf_1.Buf(msg.slice(0, 1000)).toUtfStr().toLowerCase(); const contentType = utf8.match(/content-type: +[0-9a-z\-\/]+/); if (!contentType) { return false; @@ -123890,7 +123896,7 @@ Mime.decode = async (mimeMsg) => { parser.end(); } catch (e) { // todo - on Android we may want to fail when this happens, evaluate effect on browser extension - catch_js_1.Catch.reportErr(e); + catch_1.Catch.reportErr(e); resolve(mimeContent); } }); @@ -123923,7 +123929,7 @@ Mime.subjectWithoutPrefixes = (subject) => { return subject.replace(/^((Re|Fwd): ?)+/g, '').trim(); }; Mime.encodePgpMimeSigned = async (body, headers, atts = [], sign) => { - const sigPlaceholder = `SIG_PLACEHOLDER_${common_js_1.Str.sloppyRandom(10)}`; + const sigPlaceholder = `SIG_PLACEHOLDER_${common_1.Str.sloppyRandom(10)}`; const rootNode = new MimeBuilder(`multipart/signed; protocol="application/pgp-signature";`, { includeBccInHeader: true }); // tslint:disable-line:no-unsafe-any for (const key of Object.keys(headers)) { rootNode.addHeader(key, headers[key]); // tslint:disable-line:no-unsafe-any @@ -123937,19 +123943,19 @@ Mime.encodePgpMimeSigned = async (body, headers, atts = [], sign) => { for (const att of atts) { signedContentNode.appendChild(Mime.createAttNode(att)); // tslint:disable-line:no-unsafe-any } - const sigAttPlaceholder = new att_js_1.Att({ data: buf_js_1.Buf.fromUtfStr(sigPlaceholder), type: 'application/pgp-signature', name: 'signature.asc' }); + const sigAttPlaceholder = new att_1.Att({ data: buf_1.Buf.fromUtfStr(sigPlaceholder), type: 'application/pgp-signature', name: 'signature.asc' }); const sigAttPlaceholderNode = Mime.createAttNode(sigAttPlaceholder); // tslint:disable-line:no-unsafe-any // https://tools.ietf.org/html/rfc3156#section-5 - signed content first, signature after rootNode.appendChild(signedContentNode); // tslint:disable-line:no-unsafe-any rootNode.appendChild(sigAttPlaceholderNode); // tslint:disable-line:no-unsafe-any const mimeStrWithPlaceholderSig = rootNode.build(); // tslint:disable-line:no-unsafe-any - const { rawSignedContent } = await Mime.decode(buf_js_1.Buf.fromUtfStr(mimeStrWithPlaceholderSig)); + const { rawSignedContent } = await Mime.decode(buf_1.Buf.fromUtfStr(mimeStrWithPlaceholderSig)); if (!rawSignedContent) { console.log(`mimeStrWithPlaceholderSig(placeholder:${sigPlaceholder}):\n${mimeStrWithPlaceholderSig}`); throw new Error('Could not find raw signed content immediately after mime-encoding a signed message'); } const realSignature = await sign(rawSignedContent); // tslint:disable-line:no-unsafe-any - const pgpMimeSigned = mimeStrWithPlaceholderSig.replace(buf_js_1.Buf.fromUtfStr(sigPlaceholder).toBase64Str(), buf_js_1.Buf.fromUtfStr(realSignature).toBase64Str()); + const pgpMimeSigned = mimeStrWithPlaceholderSig.replace(buf_1.Buf.fromUtfStr(sigPlaceholder).toBase64Str(), buf_1.Buf.fromUtfStr(realSignature).toBase64Str()); if (pgpMimeSigned === mimeStrWithPlaceholderSig) { console.log(`pgpMimeSigned(placeholder:${sigPlaceholder}):\n${pgpMimeSigned}`); throw new Error('Replaced sigPlaceholder with realSignature but mime stayed the same'); @@ -123959,8 +123965,8 @@ Mime.encodePgpMimeSigned = async (body, headers, atts = [], sign) => { Mime.headerGetAddress = (parsedMimeMsg, headersNames) => { const result = { to: [], cc: [], bcc: [] }; let from; - const getHdrValAsArr = (hdr) => typeof hdr === 'string' ? [hdr].map(h => common_js_1.Str.parseEmail(h).email).filter(e => !!e) : hdr.map(h => h.address); - const getHdrValAsStr = (hdr) => common_js_1.Str.parseEmail((Array.isArray(hdr) ? (hdr[0] || {}).address : String(hdr || '')) || '').email; + const getHdrValAsArr = (hdr) => typeof hdr === 'string' ? [hdr].map(h => common_1.Str.parseEmail(h).email).filter(e => !!e) : hdr.map(h => h.address); + const getHdrValAsStr = (hdr) => common_1.Str.parseEmail((Array.isArray(hdr) ? (hdr[0] || {}).address : String(hdr || '')) || '').email; for (const hdrName of headersNames) { const header = parsedMimeMsg.headers[hdrName]; if (header) { @@ -123996,7 +124002,7 @@ Mime.retrieveRawSignedContent = (nodes) => { }; Mime.createAttNode = (att) => { const type = `${att.type}; name="${att.name}"`; - const id = `f_${common_js_1.Str.sloppyRandom(30)}@flowcrypt`; + const id = `f_${common_1.Str.sloppyRandom(30)}@flowcrypt`; const header = {}; if (att.contentDescription) { header['Content-Description'] = att.contentDescription; @@ -124039,13 +124045,13 @@ Mime.isNodeInline = (node) => { return cd && cd[0] && cd[0].value === 'inline'; }; Mime.fromEqualSignNotationAsBuf = (str) => { - return buf_js_1.Buf.fromRawBytesStr(str.replace(/(=[A-F0-9]{2})+/g, equalSignUtfPart => { + return buf_1.Buf.fromRawBytesStr(str.replace(/(=[A-F0-9]{2})+/g, equalSignUtfPart => { const bytes = equalSignUtfPart.replace(/^=/, '').split('=').map(twoHexDigits => parseInt(twoHexDigits, 16)); - return new buf_js_1.Buf(bytes).toRawBytesStr(); + return new buf_1.Buf(bytes).toRawBytesStr(); })); }; Mime.getNodeAsAtt = (node) => { - return new att_js_1.Att({ + return new att_1.Att({ name: Mime.getNodeFilename(node), type: Mime.getNodeType(node), data: node.contentTransferEncoding.value === 'quoted-printable' ? Mime.fromEqualSignNotationAsBuf(node.rawContent) : node.content, @@ -124059,16 +124065,16 @@ Mime.getNodeContentAsUtfStr = (node) => { } let resultBuf; if (node.charset === 'utf-8' && node.contentTransferEncoding.value === 'base64') { - resultBuf = buf_js_1.Buf.fromUint8(node.content); + resultBuf = buf_1.Buf.fromUint8(node.content); } else if (node.charset === 'utf-8' && node.contentTransferEncoding.value === 'quoted-printable') { resultBuf = Mime.fromEqualSignNotationAsBuf(node.rawContent); } else { - resultBuf = buf_js_1.Buf.fromRawBytesStr(node.rawContent); + resultBuf = buf_1.Buf.fromRawBytesStr(node.rawContent); } if (((_b = node.charset) === null || _b === void 0 ? void 0 : _b.toUpperCase()) === 'ISO-2022-JP' || (node.charset === 'utf-8' && ((_c = Mime.getNodeType(node, 'initial')) === null || _c === void 0 ? void 0 : _c.includes('ISO-2022-JP')))) { - return (0, util_js_1.iso2022jpToUtf)(resultBuf); + return (0, util_1.iso2022jpToUtf)(resultBuf); } return resultBuf.toUtfStr(); }; @@ -124092,7 +124098,7 @@ Mime.newContentNode = (MimeBuilder, type, content) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.Url = exports.Value = exports.Str = void 0; -const util_js_1 = __webpack_require__(6); +const util_1 = __webpack_require__(6); class Str { } exports.Str = Str; @@ -124196,7 +124202,7 @@ Str.base64urlUtfEncode = (str) => { if (typeof str === 'undefined') { return str; } - return (0, util_js_1.base64encode)(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(parseInt(String(p1), 16)))) + return (0, util_1.base64encode)(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(parseInt(String(p1), 16)))) .replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); }; Str.base64urlUtfDecode = (str) => { @@ -124205,7 +124211,7 @@ Str.base64urlUtfDecode = (str) => { return str; } // tslint:disable-next-line:no-unsafe-any - return decodeURIComponent(Array.prototype.map.call((0, util_js_1.base64decode)(str.replace(/-/g, '+').replace(/_/g, '/')), (c) => { + return decodeURIComponent(Array.prototype.map.call((0, util_1.base64decode)(str.replace(/-/g, '+').replace(/_/g, '/')), (c) => { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }).join('')); }; @@ -167253,7 +167259,7 @@ exports.default = AsyncProxy; Object.defineProperty(exports, "__esModule", { value: true }); exports.Att = void 0; -const buf_js_1 = __webpack_require__(5); +const buf_1 = __webpack_require__(5); class Att { constructor({ data, type, name, length, url, inline, id, msgId, treatAs, cid, contentDescription }) { this.length = NaN; @@ -167267,11 +167273,11 @@ class Att { this.bytes = bytes; }; this.getData = () => { - if (this.bytes instanceof buf_js_1.Buf) { + if (this.bytes instanceof buf_1.Buf) { return this.bytes; } if (this.bytes instanceof Uint8Array) { - return new buf_js_1.Buf(this.bytes); + return new buf_1.Buf(this.bytes); } throw new Error('Att has no data set'); }; @@ -167306,7 +167312,7 @@ class Att { else if (this.name.toLowerCase().includes('public') && this.name.match(/[A-F0-9]{8}.*\.asc$/g)) { // name contains the word "public", any key id and ends with .asc return 'publicKey'; } - else if (this.name.match(/\.asc$/) && this.hasData() && buf_js_1.Buf.with(this.getData().subarray(0, 100)).toUtfStr().includes('-----BEGIN PGP PUBLIC KEY BLOCK-----')) { + else if (this.name.match(/\.asc$/) && this.hasData() && buf_1.Buf.with(this.getData().subarray(0, 100)).toUtfStr().includes('-----BEGIN PGP PUBLIC KEY BLOCK-----')) { return 'publicKey'; } else if (this.name.match(/\.asc$/) && this.length < 100000 && !this.inline) { @@ -167343,7 +167349,7 @@ class Att { exports.Att = Att; Att.attachmentsPattern = /^(((cryptup|flowcrypt)-backup-[a-z0-9]+\.(key|asc))|(.+\.pgp)|(.+\.gpg)|(.+\.asc)|(noname)|(message)|(PGPMIME version identification)|())$/gm; Att.keyinfoAsPubkeyAtt = (ki) => { - return new Att({ data: buf_js_1.Buf.fromUtfStr(ki.public), type: 'application/pgp-keys', name: `0x${ki.longid}.asc` }); + return new Att({ data: buf_1.Buf.fromUtfStr(ki.public), type: 'application/pgp-keys', name: `0x${ki.longid}.asc` }); }; @@ -167377,15 +167383,15 @@ Catch.report = (name, details) => { var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.MsgBlockParser = void 0; -const msg_block_js_1 = __webpack_require__(4); -const xss_js_1 = __webpack_require__(212); -const buf_js_1 = __webpack_require__(5); -const catch_js_1 = __webpack_require__(210); -const mime_js_1 = __webpack_require__(205); -const pgp_armor_js_1 = __webpack_require__(213); -const pgp_key_js_1 = __webpack_require__(215); -const pgp_msg_js_1 = __webpack_require__(219); -const common_js_1 = __webpack_require__(206); +const msg_block_1 = __webpack_require__(4); +const xss_1 = __webpack_require__(212); +const buf_1 = __webpack_require__(5); +const catch_1 = __webpack_require__(210); +const mime_1 = __webpack_require__(205); +const pgp_armor_1 = __webpack_require__(213); +const pgp_key_1 = __webpack_require__(215); +const pgp_msg_1 = __webpack_require__(219); +const common_1 = __webpack_require__(206); class MsgBlockParser { } exports.MsgBlockParser = MsgBlockParser; @@ -167393,7 +167399,7 @@ _a = MsgBlockParser; MsgBlockParser.ARMOR_HEADER_MAX_LENGTH = 50; MsgBlockParser.detectBlocks = (origText) => { const blocks = []; - const normalized = common_js_1.Str.normalize(origText); + const normalized = common_1.Str.normalize(origText); let startAt = 0; while (true) { // eslint-disable-line no-constant-condition const r = MsgBlockParser.detectBlockNext(normalized, startAt); @@ -167405,7 +167411,7 @@ MsgBlockParser.detectBlocks = (origText) => { } else { if (r.continueAt <= startAt) { - catch_js_1.Catch.report(`PgpArmordetect_blocks likely infinite loop: r.continue_at(${r.continueAt}) <= start_at(${startAt})`); + catch_1.Catch.report(`PgpArmordetect_blocks likely infinite loop: r.continue_at(${r.continueAt}) <= start_at(${startAt})`); return { blocks, normalized }; // prevent infinite loop } startAt = r.continueAt; @@ -167415,32 +167421,32 @@ MsgBlockParser.detectBlocks = (origText) => { MsgBlockParser.fmtDecryptedAsSanitizedHtmlBlocks = async (decryptedContent, signature, imgHandling = 'IMG-TO-LINK') => { const blocks = []; let isRichText = false; - if (!mime_js_1.Mime.resemblesMsg(decryptedContent)) { - let utf = buf_js_1.Buf.fromUint8(decryptedContent).toUtfStr(); - utf = pgp_msg_js_1.PgpMsg.extractFcAtts(utf, blocks); - utf = pgp_msg_js_1.PgpMsg.stripFcTeplyToken(utf); + if (!mime_1.Mime.resemblesMsg(decryptedContent)) { + let utf = buf_1.Buf.fromUint8(decryptedContent).toUtfStr(); + utf = pgp_msg_1.PgpMsg.extractFcAtts(utf, blocks); + utf = pgp_msg_1.PgpMsg.stripFcTeplyToken(utf); const armoredPubKeys = []; - utf = pgp_msg_js_1.PgpMsg.stripPublicKeys(utf, armoredPubKeys); - const block = msg_block_js_1.MsgBlock.fromContent('decryptedHtml', common_js_1.Str.asEscapedHtml(utf)); + utf = pgp_msg_1.PgpMsg.stripPublicKeys(utf, armoredPubKeys); + const block = msg_block_1.MsgBlock.fromContent('decryptedHtml', common_1.Str.asEscapedHtml(utf)); block.verifyRes = signature; blocks.push(block); // escaped text as html await MsgBlockParser.pushArmoredPubkeysToBlocks(armoredPubKeys, blocks); return { blocks, subject: undefined, isRichText }; } - const decoded = await mime_js_1.Mime.decode(decryptedContent); + const decoded = await mime_1.Mime.decode(decryptedContent); if (typeof decoded.html !== 'undefined') { - const block = msg_block_js_1.MsgBlock.fromContent('decryptedHtml', xss_js_1.Xss.htmlSanitizeKeepBasicTags(decoded.html, imgHandling)); + const block = msg_block_1.MsgBlock.fromContent('decryptedHtml', xss_1.Xss.htmlSanitizeKeepBasicTags(decoded.html, imgHandling)); block.verifyRes = signature; blocks.push(block); // sanitized html isRichText = true; } else if (typeof decoded.text !== 'undefined') { - const block = msg_block_js_1.MsgBlock.fromContent('decryptedHtml', common_js_1.Str.asEscapedHtml(decoded.text)); + const block = msg_block_1.MsgBlock.fromContent('decryptedHtml', common_1.Str.asEscapedHtml(decoded.text)); block.verifyRes = signature; blocks.push(block); // escaped text as html } else { - const block = msg_block_js_1.MsgBlock.fromContent('decryptedHtml', common_js_1.Str.asEscapedHtml(buf_js_1.Buf.with(decryptedContent).toUtfStr())); + const block = msg_block_1.MsgBlock.fromContent('decryptedHtml', common_1.Str.asEscapedHtml(buf_1.Buf.with(decryptedContent).toUtfStr())); block.verifyRes = signature; blocks.push(); // escaped mime text as html } @@ -167449,7 +167455,7 @@ MsgBlockParser.fmtDecryptedAsSanitizedHtmlBlocks = async (decryptedContent, sign await MsgBlockParser.pushArmoredPubkeysToBlocks([att.getData().toUtfStr()], blocks); } else { - const block = msg_block_js_1.MsgBlock.fromAtt('decryptedAtt', '', { name: att.name, data: att.getData(), length: att.length, type: att.type }); + const block = msg_block_1.MsgBlock.fromAtt('decryptedAtt', '', { name: att.name, data: att.getData(), length: att.length, type: att.type }); block.verifyRes = signature; blocks.push(block); } @@ -167458,19 +167464,19 @@ MsgBlockParser.fmtDecryptedAsSanitizedHtmlBlocks = async (decryptedContent, sign }; MsgBlockParser.detectBlockNext = (origText, startAt) => { const result = { found: [] }; - const begin = origText.indexOf(pgp_armor_js_1.PgpArmor.headers('null').begin, startAt); + const begin = origText.indexOf(pgp_armor_1.PgpArmor.headers('null').begin, startAt); if (begin !== -1) { // found const potentialBeginHeader = origText.substr(begin, MsgBlockParser.ARMOR_HEADER_MAX_LENGTH); - for (const xType of Object.keys(pgp_armor_js_1.PgpArmor.ARMOR_HEADER_DICT)) { + for (const xType of Object.keys(pgp_armor_1.PgpArmor.ARMOR_HEADER_DICT)) { const type = xType; - const blockHeaderDef = pgp_armor_js_1.PgpArmor.ARMOR_HEADER_DICT[type]; + const blockHeaderDef = pgp_armor_1.PgpArmor.ARMOR_HEADER_DICT[type]; if (blockHeaderDef.replace) { const indexOfConfirmedBegin = potentialBeginHeader.indexOf(blockHeaderDef.begin); if (indexOfConfirmedBegin === 0 || (type === 'encryptedMsgLink' && indexOfConfirmedBegin >= 0 && indexOfConfirmedBegin < 15)) { // identified beginning of a specific block if (begin > startAt) { const potentialTextBeforeBlockBegun = origText.substring(startAt, begin).trim(); if (potentialTextBeforeBlockBegun) { - result.found.push(msg_block_js_1.MsgBlock.fromContent('plainText', potentialTextBeforeBlockBegun)); + result.found.push(msg_block_1.MsgBlock.fromContent('plainText', potentialTextBeforeBlockBegun)); } } let endIndex = -1; @@ -167489,22 +167495,22 @@ MsgBlockParser.detectBlockNext = (origText, startAt) => { } if (endIndex !== -1) { // identified end of the same block if (type !== 'encryptedMsgLink') { - result.found.push(msg_block_js_1.MsgBlock.fromContent(type, origText.substring(begin, endIndex + foundBlockEndHeaderLength).trim())); + result.found.push(msg_block_1.MsgBlock.fromContent(type, origText.substring(begin, endIndex + foundBlockEndHeaderLength).trim())); } else { const pwdMsgFullText = origText.substring(begin, endIndex + foundBlockEndHeaderLength).trim(); const pwdMsgShortIdMatch = pwdMsgFullText.match(/[a-zA-Z0-9]{10}$/); if (pwdMsgShortIdMatch) { - result.found.push(msg_block_js_1.MsgBlock.fromContent(type, pwdMsgShortIdMatch[0])); + result.found.push(msg_block_1.MsgBlock.fromContent(type, pwdMsgShortIdMatch[0])); } else { - result.found.push(msg_block_js_1.MsgBlock.fromContent('plainText', pwdMsgFullText)); + result.found.push(msg_block_1.MsgBlock.fromContent('plainText', pwdMsgFullText)); } } result.continueAt = endIndex + foundBlockEndHeaderLength; } else { // corresponding end not found - result.found.push(msg_block_js_1.MsgBlock.fromContent(type, origText.substr(begin), true)); + result.found.push(msg_block_1.MsgBlock.fromContent(type, origText.substr(begin), true)); } break; } @@ -167514,16 +167520,16 @@ MsgBlockParser.detectBlockNext = (origText, startAt) => { if (origText && !result.found.length) { // didn't find any blocks, but input is non-empty const potentialText = origText.substr(startAt).trim(); if (potentialText) { - result.found.push(msg_block_js_1.MsgBlock.fromContent('plainText', potentialText)); + result.found.push(msg_block_1.MsgBlock.fromContent('plainText', potentialText)); } } return result; }; MsgBlockParser.pushArmoredPubkeysToBlocks = async (armoredPubkeys, blocks) => { for (const armoredPubkey of armoredPubkeys) { - const { keys } = await pgp_key_js_1.PgpKey.parse(armoredPubkey); + const { keys } = await pgp_key_1.PgpKey.parse(armoredPubkey); for (const keyDetails of keys) { - blocks.push(msg_block_js_1.MsgBlock.fromKeyDetails('publicKey', keyDetails.public, keyDetails)); + blocks.push(msg_block_1.MsgBlock.fromKeyDetails('publicKey', keyDetails.public, keyDetails)); } } }; @@ -167671,9 +167677,9 @@ Xss.htmlUnescape = (str) => { var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.PgpArmor = void 0; -const buf_js_1 = __webpack_require__(5); -const common_js_1 = __webpack_require__(206); -const pgp_js_1 = __webpack_require__(214); +const buf_1 = __webpack_require__(5); +const common_1 = __webpack_require__(206); +const pgp_1 = __webpack_require__(214); class PgpArmor { } exports.PgpArmor = PgpArmor; @@ -167703,7 +167709,7 @@ PgpArmor.headers = (blockType, format = 'string') => { }; }; PgpArmor.normalize = (armored, type) => { - armored = common_js_1.Str.normalize(armored).replace(/\n /g, '\n'); + armored = common_1.Str.normalize(armored).replace(/\n /g, '\n'); if (['encryptedMsg', 'publicKey', 'privateKey', 'key'].includes(type)) { armored = armored.replace(/\r?\n/g, '\n').trim(); const nl2 = armored.match(/\n\n/g); @@ -167738,18 +167744,18 @@ PgpArmor.cryptoMsgPrepareForDecrypt = async (encrypted) => { if (!encrypted.length) { throw new Error('Encrypted message could not be parsed because no data was provided'); } - const utfChunk = new buf_js_1.Buf(encrypted.slice(0, 100)).toUtfStr('ignore'); // ignore errors - this may not be utf string, just testing + const utfChunk = new buf_1.Buf(encrypted.slice(0, 100)).toUtfStr('ignore'); // ignore errors - this may not be utf string, just testing const isArmoredEncrypted = utfChunk.includes(PgpArmor.headers('encryptedMsg').begin); const isArmoredSignedOnly = utfChunk.includes(PgpArmor.headers('signedMsg').begin); const isArmored = isArmoredEncrypted || isArmoredSignedOnly; if (isArmoredSignedOnly) { - return { isArmored, isCleartext: true, message: await pgp_js_1.openpgp.cleartext.readArmored(new buf_js_1.Buf(encrypted).toUtfStr()) }; + return { isArmored, isCleartext: true, message: await pgp_1.openpgp.cleartext.readArmored(new buf_1.Buf(encrypted).toUtfStr()) }; } else if (isArmoredEncrypted) { - return { isArmored, isCleartext: false, message: await pgp_js_1.openpgp.message.readArmored(new buf_js_1.Buf(encrypted).toUtfStr()) }; + return { isArmored, isCleartext: false, message: await pgp_1.openpgp.message.readArmored(new buf_1.Buf(encrypted).toUtfStr()) }; } else if (encrypted instanceof Uint8Array) { - return { isArmored, isCleartext: false, message: await pgp_js_1.openpgp.message.read(encrypted) }; + return { isArmored, isCleartext: false, message: await pgp_1.openpgp.message.read(encrypted) }; } throw new Error('Message does not have armor headers'); }; @@ -167764,12 +167770,12 @@ PgpArmor.cryptoMsgPrepareForDecrypt = async (encrypted) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.openpgp = void 0; -const pgp_key_js_1 = __webpack_require__(215); -const const_js_1 = __webpack_require__(218); -const require_js_1 = __webpack_require__(207); -exports.openpgp = (0, require_js_1.requireOpenpgp)(); +const pgp_key_1 = __webpack_require__(215); +const const_1 = __webpack_require__(218); +const require_1 = __webpack_require__(207); +exports.openpgp = (0, require_1.requireOpenpgp)(); if (typeof exports.openpgp !== 'undefined') { // in certain environments, eg browser content scripts, openpgp is not included (not all functions below need it) - exports.openpgp.config.versionstring = `FlowCrypt ${const_js_1.VERSION} Gmail Encryption`; + exports.openpgp.config.versionstring = `FlowCrypt ${const_1.VERSION} Gmail Encryption`; exports.openpgp.config.commentstring = 'Seamlessly send and receive encrypted email'; exports.openpgp.config.ignore_mdc_error = true; // we manually check for missing MDC and show loud warning to user (no auto-decrypt) // openpgp.config.require_uid_self_cert = false; @@ -167777,7 +167783,7 @@ if (typeof exports.openpgp !== 'undefined') { // in certain environments, eg bro if (!k.isPrivate()) { throw new Error("Cannot check encryption status of secret keys in a Public Key"); } - const prvPackets = k.getKeys().map(k => k.keyPacket).filter(pgp_key_js_1.PgpKey.isPacketPrivate); + const prvPackets = k.getKeys().map(k => k.keyPacket).filter(pgp_key_1.PgpKey.isPacketPrivate); if (!prvPackets.length) { throw new Error("This key has no private packets. Is it a Private Key?"); } @@ -167822,13 +167828,13 @@ if (typeof exports.openpgp !== 'undefined') { // in certain environments, eg bro var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.PgpKey = void 0; -const buf_js_1 = __webpack_require__(5); -const catch_js_1 = __webpack_require__(210); -const msg_block_parser_js_1 = __webpack_require__(211); -const pgp_armor_js_1 = __webpack_require__(213); -const store_js_1 = __webpack_require__(216); -const mnemonic_js_1 = __webpack_require__(217); -const pgp_js_1 = __webpack_require__(214); +const buf_1 = __webpack_require__(5); +const catch_1 = __webpack_require__(210); +const msg_block_parser_1 = __webpack_require__(211); +const pgp_armor_1 = __webpack_require__(213); +const store_1 = __webpack_require__(216); +const mnemonic_1 = __webpack_require__(217); +const pgp_1 = __webpack_require__(214); class PgpKey { } exports.PgpKey = PgpKey; @@ -167844,20 +167850,20 @@ PgpKey.create = async (userIds, variant, passphrase) => { else { opt.numBits = 4096; } - const k = await pgp_js_1.openpgp.generateKey(opt); + const k = await pgp_1.openpgp.generateKey(opt); return { public: k.publicKeyArmored, private: k.privateKeyArmored }; }; /** * used only for keys that we ourselves parsed / formatted before, eg from local storage, because no err handling */ PgpKey.read = async (armoredKey) => { - const fromCache = store_js_1.Store.armoredKeyCacheGet(armoredKey); + const fromCache = store_1.Store.armoredKeyCacheGet(armoredKey); if (fromCache) { return fromCache; } - const { keys: [key] } = await pgp_js_1.openpgp.key.readArmored(armoredKey); + const { keys: [key] } = await pgp_1.openpgp.key.readArmored(armoredKey); if (key === null || key === void 0 ? void 0 : key.isPrivate()) { - store_js_1.Store.armoredKeyCacheSet(armoredKey, key); + store_1.Store.armoredKeyCacheSet(armoredKey, key); } return key; }; @@ -167867,12 +167873,12 @@ PgpKey.read = async (armoredKey) => { PgpKey.readMany = async (fileData) => { const allKeys = []; const allErrs = []; - const { blocks } = msg_block_parser_js_1.MsgBlockParser.detectBlocks(fileData.toUtfStr()); + const { blocks } = msg_block_parser_1.MsgBlockParser.detectBlocks(fileData.toUtfStr()); const armoredPublicKeyBlocks = blocks.filter(block => block.type === 'publicKey' || block.type === 'privateKey'); const pushKeysAndErrs = async (content, type) => { try { - const { err, keys } = type === 'readArmored' ? await pgp_js_1.openpgp.key.readArmored(content.toString()) - : await pgp_js_1.openpgp.key.read(typeof content === 'string' ? buf_js_1.Buf.fromUtfStr(content) : content); + const { err, keys } = type === 'readArmored' ? await pgp_1.openpgp.key.readArmored(content.toString()) + : await pgp_1.openpgp.key.read(typeof content === 'string' ? buf_1.Buf.fromUtfStr(content) : content); allErrs.push(...(err || [])); allKeys.push(...keys); } @@ -167891,7 +167897,7 @@ PgpKey.readMany = async (fileData) => { return { keys: allKeys, errs: allErrs }; }; PgpKey.isPacketPrivate = (p) => { - return p.tag === pgp_js_1.openpgp.enums.packet.secretKey || p.tag === pgp_js_1.openpgp.enums.packet.secretSubkey; + return p.tag === pgp_1.openpgp.enums.packet.secretKey || p.tag === pgp_1.openpgp.enums.packet.secretSubkey; }; PgpKey.decrypt = async (prv, passphrase, optionalKeyid, optionalBehaviorFlag) => { if (!prv.isPrivate()) { @@ -167939,15 +167945,15 @@ PgpKey.encrypt = async (prv, passphrase) => { PgpKey.normalize = async (armored) => { try { let keys = []; - armored = pgp_armor_js_1.PgpArmor.normalize(armored, 'key'); - if (RegExp(pgp_armor_js_1.PgpArmor.headers('publicKey', 're').begin).test(armored)) { - keys = (await pgp_js_1.openpgp.key.readArmored(armored)).keys; + armored = pgp_armor_1.PgpArmor.normalize(armored, 'key'); + if (RegExp(pgp_armor_1.PgpArmor.headers('publicKey', 're').begin).test(armored)) { + keys = (await pgp_1.openpgp.key.readArmored(armored)).keys; } - else if (RegExp(pgp_armor_js_1.PgpArmor.headers('privateKey', 're').begin).test(armored)) { - keys = (await pgp_js_1.openpgp.key.readArmored(armored)).keys; + else if (RegExp(pgp_armor_1.PgpArmor.headers('privateKey', 're').begin).test(armored)) { + keys = (await pgp_1.openpgp.key.readArmored(armored)).keys; } - else if (RegExp(pgp_armor_js_1.PgpArmor.headers('encryptedMsg', 're').begin).test(armored)) { - keys = [new pgp_js_1.openpgp.key.Key((await pgp_js_1.openpgp.message.readArmored(armored)).packets)]; + else if (RegExp(pgp_armor_1.PgpArmor.headers('encryptedMsg', 're').begin).test(armored)) { + keys = [new pgp_1.openpgp.key.Key((await pgp_1.openpgp.message.readArmored(armored)).packets)]; } for (const k of keys) { for (const u of k.users) { @@ -167957,7 +167963,7 @@ PgpKey.normalize = async (armored) => { return { normalized: keys.map(k => k.armor()).join('\n'), keys }; } catch (error) { - catch_js_1.Catch.reportErr(error); + catch_1.Catch.reportErr(error); return { normalized: '', keys: [] }; } }; @@ -167965,7 +167971,7 @@ PgpKey.fingerprint = async (key, formatting = 'default') => { if (!key) { return undefined; } - else if (key instanceof pgp_js_1.openpgp.key.Key) { + else if (key instanceof pgp_1.openpgp.key.Key) { if (!key.primaryKey.getFingerprintBytes()) { return undefined; } @@ -167987,7 +167993,7 @@ PgpKey.fingerprint = async (key, formatting = 'default') => { } catch (e) { if (e instanceof Error && e.message === 'openpgp is not defined') { - catch_js_1.Catch.reportErr(e); + catch_1.Catch.reportErr(e); } console.error(e); return undefined; @@ -167999,7 +168005,7 @@ PgpKey.longid = async (keyOrFingerprintOrBytes) => { return undefined; } else if (typeof keyOrFingerprintOrBytes === 'string' && keyOrFingerprintOrBytes.length === 8) { - return pgp_js_1.openpgp.util.str_to_hex(keyOrFingerprintOrBytes).toUpperCase(); + return pgp_1.openpgp.util.str_to_hex(keyOrFingerprintOrBytes).toUpperCase(); } else if (typeof keyOrFingerprintOrBytes === 'string' && keyOrFingerprintOrBytes.length === 40) { return keyOrFingerprintOrBytes.substr(-16); @@ -168023,7 +168029,7 @@ PgpKey.usable = async (armored) => { if (!PgpKey.fingerprint(armored)) { return false; } - const { keys: [pubkey] } = await pgp_js_1.openpgp.key.readArmored(armored); + const { keys: [pubkey] } = await pgp_1.openpgp.key.readArmored(armored); if (!pubkey) { return false; } @@ -168074,7 +168080,7 @@ PgpKey.parse = async (armored) => { PgpKey.details = async (k) => { const keys = k.getKeys(); const algoInfo = k.primaryKey.getAlgorithmInfo(); - const algo = { algorithm: algoInfo.algorithm, bits: algoInfo.bits, curve: algoInfo.curve, algorithmId: pgp_js_1.openpgp.enums.publicKey[algoInfo.algorithm] }; + const algo = { algorithm: algoInfo.algorithm, bits: algoInfo.bits, curve: algoInfo.curve, algorithmId: pgp_1.openpgp.enums.publicKey[algoInfo.algorithm] }; const created = k.primaryKey.created.getTime() / 1000; const exp = await k.getExpirationTime('encrypt'); const expiration = exp === Infinity || !exp ? undefined : exp.getTime() / 1000; @@ -168086,7 +168092,7 @@ PgpKey.details = async (k) => { const longid = await PgpKey.longid(fingerprint); if (longid) { const shortid = longid.substr(-8); - ids.push({ fingerprint, longid, shortid, keywords: (0, mnemonic_js_1.mnemonic)(longid) }); + ids.push({ fingerprint, longid, shortid, keywords: (0, mnemonic_1.mnemonic)(longid) }); } } } @@ -168133,7 +168139,7 @@ PgpKey.revoke = async (key) => { return certificate || undefined; } else { - return await pgp_js_1.openpgp.stream.readToEnd(certificate); + return await pgp_1.openpgp.stream.readToEnd(certificate); } }; @@ -168147,10 +168153,10 @@ PgpKey.revoke = async (key) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.Store = void 0; -const pgp_js_1 = __webpack_require__(214); +const pgp_1 = __webpack_require__(214); let KEY_CACHE = {}; let KEY_CACHE_WIPE_TIMEOUT; -const keyLongid = (k) => pgp_js_1.openpgp.util.str_to_hex(k.getKeyId().bytes).toUpperCase(); +const keyLongid = (k) => pgp_1.openpgp.util.str_to_hex(k.getKeyId().bytes).toUpperCase(); class Store { } exports.Store = Store; @@ -170311,16 +170317,16 @@ exports.gmailBackupSearchQuery = gmailBackupSearchQuery; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.PgpMsg = exports.FormatError = exports.DecryptErrTypes = void 0; -const pgp_key_js_1 = __webpack_require__(215); -const msg_block_js_1 = __webpack_require__(4); -const common_js_1 = __webpack_require__(206); -const buf_js_1 = __webpack_require__(5); -const catch_js_1 = __webpack_require__(210); -const msg_block_parser_js_1 = __webpack_require__(211); -const pgp_armor_js_1 = __webpack_require__(213); -const pgp_hash_js_1 = __webpack_require__(220); -const store_js_1 = __webpack_require__(216); -const pgp_js_1 = __webpack_require__(214); +const pgp_key_1 = __webpack_require__(215); +const msg_block_1 = __webpack_require__(4); +const common_1 = __webpack_require__(206); +const buf_1 = __webpack_require__(5); +const catch_1 = __webpack_require__(210); +const msg_block_parser_1 = __webpack_require__(211); +const pgp_armor_1 = __webpack_require__(213); +const pgp_hash_1 = __webpack_require__(220); +const store_1 = __webpack_require__(216); +const pgp_1 = __webpack_require__(214); var DecryptErrTypes; (function (DecryptErrTypes) { DecryptErrTypes["keyMismatch"] = "key_mismatch"; @@ -170357,16 +170363,16 @@ PgpMsg.type = async ({ data }) => { else { // 10XX XXXX - potential old pgp packet tag tagNumber = (firstByte & 0b00111100) / 4; // 10TTTTLL where T is tag number bit. Division by 4 in place of two bit shifts. I hate bit shifts. } - if (Object.values(pgp_js_1.openpgp.enums.packet).includes(tagNumber)) { + if (Object.values(pgp_1.openpgp.enums.packet).includes(tagNumber)) { // Indeed a valid OpenPGP packet tag number // This does not 100% mean it's OpenPGP message // But it's a good indication that it may - const t = pgp_js_1.openpgp.enums.packet; + const t = pgp_1.openpgp.enums.packet; const msgTpes = [t.symEncryptedIntegrityProtected, t.modificationDetectionCode, t.symEncryptedAEADProtected, t.symmetricallyEncrypted, t.compressed]; return { armored: false, type: msgTpes.includes(tagNumber) ? 'encryptedMsg' : 'publicKey' }; } } - const { blocks } = msg_block_parser_js_1.MsgBlockParser.detectBlocks(new buf_js_1.Buf(data.slice(0, 50)).toUtfStr().trim()); // only interested in first 50 bytes + const { blocks } = msg_block_parser_1.MsgBlockParser.detectBlocks(new buf_1.Buf(data.slice(0, 50)).toUtfStr().trim()); // only interested in first 50 bytes if (blocks.length === 1 && blocks[0].complete === false && ['encryptedMsg', 'privateKey', 'publicKey', 'signedMsg'].includes(blocks[0].type)) { return { armored: true, type: blocks[0].type }; } @@ -170377,15 +170383,15 @@ PgpMsg.type = async ({ data }) => { * Returns signature if detached=true, armored */ PgpMsg.sign = async (signingPrv, data, detached = false) => { - const message = pgp_js_1.openpgp.cleartext.fromText(data); - const signRes = await pgp_js_1.openpgp.sign({ message, armor: true, privateKeys: [signingPrv], detached }); + const message = pgp_1.openpgp.cleartext.fromText(data); + const signRes = await pgp_1.openpgp.sign({ message, armor: true, privateKeys: [signingPrv], detached }); if (detached) { if (typeof signRes.signature !== 'string') { throw new Error('signRes.signature unexpectedly not a string when creating detached signature'); } return signRes.signature; } - return await pgp_js_1.openpgp.stream.readToEnd(signRes.data); + return await pgp_1.openpgp.stream.readToEnd(signRes.data); }; PgpMsg.verify = async (msgOrVerResults, pubs) => { const sig = { match: null }; // tslint:disable-line:no-null-keyword @@ -170401,7 +170407,7 @@ PgpMsg.verify = async (msgOrVerResults, pubs) => { sig.match = (sig.match === true || sig.match === null) && await verifyRes.verified; if (!sig.signer) { // todo - currently only the first signer will be reported. Should we be showing all signers? How common is that? - sig.signer = await pgp_key_js_1.PgpKey.longid(verifyRes.keyid.bytes); + sig.signer = await pgp_key_1.PgpKey.longid(verifyRes.keyid.bytes); } } } @@ -170412,18 +170418,18 @@ PgpMsg.verify = async (msgOrVerResults, pubs) => { } else { sig.error = `FlowCrypt had trouble verifying this message (${String(verifyErr)})`; - catch_js_1.Catch.reportErr(verifyErr); + catch_1.Catch.reportErr(verifyErr); } } return sig; }; PgpMsg.verifyDetached = async ({ plaintext, sigText, verificationPubkeys }) => { - const message = pgp_js_1.openpgp.message.fromText(buf_js_1.Buf.fromUint8(plaintext).toUtfStr()); - await message.appendSignature(buf_js_1.Buf.fromUint8(sigText).toUtfStr()); + const message = pgp_1.openpgp.message.fromText(buf_1.Buf.fromUint8(plaintext).toUtfStr()); + await message.appendSignature(buf_1.Buf.fromUint8(sigText).toUtfStr()); const keys = await PgpMsg.getSortedKeys([], message); if (verificationPubkeys) { for (const verificationPubkey of verificationPubkeys) { - keys.forVerification.push(...(await pgp_js_1.openpgp.key.readArmored(verificationPubkey)).keys); + keys.forVerification.push(...(await pgp_1.openpgp.key.readArmored(verificationPubkey)).keys); } } return await PgpMsg.verify(message, keys.forVerification); @@ -170432,7 +170438,7 @@ PgpMsg.decrypt = async ({ kisWithPp, encryptedData, msgPwd, verificationPubkeys let prepared; const longids = { message: [], matching: [], chosen: [], needPassphrase: [] }; try { - prepared = await pgp_armor_js_1.PgpArmor.cryptoMsgPrepareForDecrypt(encryptedData); + prepared = await pgp_armor_1.PgpArmor.cryptoMsgPrepareForDecrypt(encryptedData); } catch (formatErr) { return { success: false, error: { type: DecryptErrTypes.format, message: String(formatErr) }, longids }; @@ -170445,8 +170451,8 @@ PgpMsg.decrypt = async ({ kisWithPp, encryptedData, msgPwd, verificationPubkeys const isEncrypted = !prepared.isCleartext; if (!isEncrypted) { const signature = await PgpMsg.verify(prepared.message, keys.forVerification); - const text = await pgp_js_1.openpgp.stream.readToEnd(prepared.message.getText()); - return { success: true, content: buf_js_1.Buf.fromUtfStr(text), isEncrypted, signature }; + const text = await pgp_1.openpgp.stream.readToEnd(prepared.message.getText()); + return { success: true, content: buf_1.Buf.fromUtfStr(text), isEncrypted, signature }; } if (!keys.prvMatching.length && !msgPwd) { return { success: false, error: { type: DecryptErrTypes.keyMismatch, message: 'Missing appropriate key' }, message: prepared.message, longids, isEncrypted }; @@ -170456,8 +170462,8 @@ PgpMsg.decrypt = async ({ kisWithPp, encryptedData, msgPwd, verificationPubkeys } try { const packets = prepared.message.packets; - const isSymEncrypted = packets.filter(p => p.tag === pgp_js_1.openpgp.enums.packet.symEncryptedSessionKey).length > 0; - const isPubEncrypted = packets.filter(p => p.tag === pgp_js_1.openpgp.enums.packet.publicKeyEncryptedSessionKey).length > 0; + const isSymEncrypted = packets.filter(p => p.tag === pgp_1.openpgp.enums.packet.symEncryptedSessionKey).length > 0; + const isPubEncrypted = packets.filter(p => p.tag === pgp_1.openpgp.enums.packet.publicKeyEncryptedSessionKey).length > 0; if (isSymEncrypted && !isPubEncrypted && !msgPwd) { return { success: false, error: { type: DecryptErrTypes.usePassword, message: 'Use message password' }, longids, isEncrypted }; } @@ -170468,10 +170474,10 @@ PgpMsg.decrypt = async ({ kisWithPp, encryptedData, msgPwd, verificationPubkeys await PgpMsg.cryptoMsgGetSignedBy(decrypted, keys); await PgpMsg.populateKeysForVerification(keys, verificationPubkeys); const verifyResults = keys.signedBy.length ? await decrypted.verify(keys.forVerification) : undefined; // verify first to prevent stream hang - const content = new buf_js_1.Buf(await pgp_js_1.openpgp.stream.readToEnd(decrypted.getLiteralData())); // read content second to prevent stream hang + const content = new buf_1.Buf(await pgp_1.openpgp.stream.readToEnd(decrypted.getLiteralData())); // read content second to prevent stream hang const signature = verifyResults ? await PgpMsg.verify(verifyResults, []) : undefined; // evaluate verify results third to prevent stream hang - if (!prepared.isCleartext && prepared.message.packets.filterByTag(pgp_js_1.openpgp.enums.packet.symmetricallyEncrypted).length) { - const noMdc = 'Security threat!\n\nMessage is missing integrity checks (MDC). The sender should update their outdated software.\n\nDisplay the message at your own risk.'; + if (!prepared.isCleartext && prepared.message.packets.filterByTag(pgp_1.openpgp.enums.packet.symmetricallyEncrypted).length) { + const noMdc = 'Security threat!\n\nMessage is missing integrity checks (MDC). The sender should update their outdated software and resend.'; return { success: false, content, error: { type: DecryptErrTypes.noMdc, message: noMdc }, message: prepared.message, longids, isEncrypted }; } return { success: true, content, isEncrypted, filename: decrypted.getFilename() || undefined, signature }; @@ -170481,18 +170487,18 @@ PgpMsg.decrypt = async ({ kisWithPp, encryptedData, msgPwd, verificationPubkeys } }; PgpMsg.encrypt = async ({ pubkeys, signingPrv, pwd, data, filename, armor, date }) => { - const message = pgp_js_1.openpgp.message.fromBinary(data, filename, date); + const message = pgp_1.openpgp.message.fromBinary(data, filename, date); const options = { armor, message, date }; let usedChallenge = false; if (pubkeys) { options.publicKeys = []; for (const armoredPubkey of pubkeys) { - const { keys: publicKeys } = await pgp_js_1.openpgp.key.readArmored(armoredPubkey); + const { keys: publicKeys } = await pgp_1.openpgp.key.readArmored(armoredPubkey); options.publicKeys.push(...publicKeys); } } if (pwd) { - options.passwords = [await pgp_hash_js_1.PgpHash.challengeAnswer(pwd)]; + options.passwords = [await pgp_hash_1.PgpHash.challengeAnswer(pwd)]; usedChallenge = true; } if (!pubkeys && !usedChallenge) { @@ -170501,13 +170507,13 @@ PgpMsg.encrypt = async ({ pubkeys, signingPrv, pwd, data, filename, armor, date if (signingPrv && typeof signingPrv.isPrivate !== 'undefined' && signingPrv.isPrivate()) { // tslint:disable-line:no-unbound-method - only testing if exists options.privateKeys = [signingPrv]; } - return await pgp_js_1.openpgp.encrypt(options); + return await pgp_1.openpgp.encrypt(options); }; PgpMsg.diagnosePubkeys = async ({ privateKis, message }) => { - const m = await pgp_js_1.openpgp.message.readArmored(buf_js_1.Buf.fromUint8(message).toUtfStr()); + const m = await pgp_1.openpgp.message.readArmored(buf_1.Buf.fromUint8(message).toUtfStr()); const msgKeyIds = m.getEncryptionKeyIds ? m.getEncryptionKeyIds() : []; const localKeyIds = []; - for (const k of await Promise.all(privateKis.map(ki => pgp_key_js_1.PgpKey.read(ki.public)))) { + for (const k of await Promise.all(privateKis.map(ki => pgp_key_1.PgpKey.read(ki.public)))) { localKeyIds.push(...k.getKeyIds()); } const diagnosis = { found_match: false, receivers: msgKeyIds.length }; @@ -170527,9 +170533,9 @@ PgpMsg.extractFcAtts = (decryptedContent, blocks) => { // thus we use RegEx so that it works on both browser and node if (decryptedContent.includes('class="cryptup_file"')) { decryptedContent = decryptedContent.replace(/[^<]+<\/a>\n?/gm, (_, url, fcData) => { - const a = common_js_1.Str.htmlAttrDecode(String(fcData)); + const a = common_1.Str.htmlAttrDecode(String(fcData)); if (PgpMsg.isFcAttLinkData(a)) { - blocks.push(msg_block_js_1.MsgBlock.fromAtt('encryptedAttLink', '', { type: a.type, name: a.name, length: a.size, url: String(url) })); + blocks.push(msg_block_1.MsgBlock.fromAtt('encryptedAttLink', '', { type: a.type, name: a.name, length: a.size, url: String(url) })); } return ''; }); @@ -170537,7 +170543,7 @@ PgpMsg.extractFcAtts = (decryptedContent, blocks) => { return decryptedContent; }; PgpMsg.stripPublicKeys = (decryptedContent, foundPublicKeys) => { - let { blocks, normalized } = msg_block_parser_js_1.MsgBlockParser.detectBlocks(decryptedContent); // tslint:disable-line:prefer-const + let { blocks, normalized } = msg_block_parser_1.MsgBlockParser.detectBlocks(decryptedContent); // tslint:disable-line:prefer-const for (const block of blocks) { if (block.type === 'publicKey') { const armored = block.content.toString(); @@ -170564,13 +170570,13 @@ PgpMsg.isFcAttLinkData = (o) => { && typeof o.size !== 'undefined' && typeof o.type !== 'undefined'; }; PgpMsg.cryptoMsgGetSignedBy = async (msg, keys) => { - keys.signedBy = common_js_1.Value.arr.unique(await pgp_key_js_1.PgpKey.longids(msg.getSigningKeyIds ? msg.getSigningKeyIds() : [])); + keys.signedBy = common_1.Value.arr.unique(await pgp_key_1.PgpKey.longids(msg.getSigningKeyIds ? msg.getSigningKeyIds() : [])); }; PgpMsg.populateKeysForVerification = async (keys, verificationPubkeys) => { if (typeof verificationPubkeys !== 'undefined') { keys.forVerification = []; for (const verificationPubkey of verificationPubkeys) { - const { keys: keysForVerification } = await pgp_js_1.openpgp.key.readArmored(verificationPubkey); + const { keys: keysForVerification } = await pgp_1.openpgp.key.readArmored(verificationPubkey); keys.forVerification.push(...keysForVerification); } } @@ -170585,22 +170591,22 @@ PgpMsg.getSortedKeys = async (kiWithPp, msg, verificationPubkeys) => { prvForDecryptDecrypted: [], prvForDecryptWithoutPassphrases: [], }; - const encryptedForKeyids = msg instanceof pgp_js_1.openpgp.message.Message + const encryptedForKeyids = msg instanceof pgp_1.openpgp.message.Message ? msg.getEncryptionKeyIds() : []; - keys.encryptedFor = await pgp_key_js_1.PgpKey.longids(encryptedForKeyids); + keys.encryptedFor = await pgp_key_1.PgpKey.longids(encryptedForKeyids); await PgpMsg.cryptoMsgGetSignedBy(msg, keys); await PgpMsg.populateKeysForVerification(keys, verificationPubkeys); if (keys.encryptedFor.length) { for (const ki of kiWithPp) { - ki.parsed = await pgp_key_js_1.PgpKey.read(ki.private); // todo + ki.parsed = await pgp_key_1.PgpKey.read(ki.private); // todo // this is inefficient because we are doing unnecessary parsing of all keys here // better would be to compare to already stored KeyInfo, however KeyInfo currently // only holds primary longid, not longids of subkeys, while messages are typically // encrypted for subkeys, thus we have to parse the key to get the info // we are filtering here to avoid a significant performance issue of having // to attempt decrypting with all keys simultaneously - for (const longid of await Promise.all(ki.parsed.getKeyIds().map(({ bytes }) => pgp_key_js_1.PgpKey.longid(bytes)))) { + for (const longid of await Promise.all(ki.parsed.getKeyIds().map(({ bytes }) => pgp_key_1.PgpKey.longid(bytes)))) { if (keys.encryptedFor.includes(longid)) { keys.prvMatching.push(ki); break; @@ -170614,13 +170620,13 @@ PgpMsg.getSortedKeys = async (kiWithPp, msg, verificationPubkeys) => { } for (const ki of keys.prvForDecrypt) { const matchingKeyids = PgpMsg.matchingKeyids(ki.parsed, encryptedForKeyids); - const cachedKey = store_js_1.Store.decryptedKeyCacheGet(ki.longid); + const cachedKey = store_1.Store.decryptedKeyCacheGet(ki.longid); if (cachedKey && PgpMsg.isKeyDecryptedFor(cachedKey, matchingKeyids)) { ki.decrypted = cachedKey; keys.prvForDecryptDecrypted.push(ki); } else if (PgpMsg.isKeyDecryptedFor(ki.parsed, matchingKeyids) || await PgpMsg.decryptKeyFor(ki.parsed, ki.passphrase, matchingKeyids) === true) { - store_js_1.Store.decryptedKeyCacheSet(ki.parsed); + store_1.Store.decryptedKeyCacheSet(ki.parsed); ki.decrypted = ki.parsed; keys.prvForDecryptDecrypted.push(ki); } @@ -170636,10 +170642,10 @@ PgpMsg.matchingKeyids = (key, encryptedFor) => { }; PgpMsg.decryptKeyFor = async (prv, passphrase, matchingKeyIds) => { if (!matchingKeyIds.length) { // we don't know which keyids match, decrypt all key packets - return await pgp_key_js_1.PgpKey.decrypt(prv, passphrase, undefined, 'OK-IF-ALREADY-DECRYPTED'); + return await pgp_key_1.PgpKey.decrypt(prv, passphrase, undefined, 'OK-IF-ALREADY-DECRYPTED'); } for (const matchingKeyId of matchingKeyIds) { // we know which keyids match, decrypt only matching key packets - if (!await pgp_key_js_1.PgpKey.decrypt(prv, passphrase, matchingKeyId, 'OK-IF-ALREADY-DECRYPTED')) { + if (!await pgp_key_1.PgpKey.decrypt(prv, passphrase, matchingKeyId, 'OK-IF-ALREADY-DECRYPTED')) { return false; // failed to decrypt a particular needed key packet } } @@ -170692,17 +170698,17 @@ PgpMsg.cryptoMsgDecryptCategorizeErr = (decryptErr, msgPwd) => { var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.PgpHash = void 0; -const buf_js_1 = __webpack_require__(5); -const pgp_js_1 = __webpack_require__(214); +const buf_1 = __webpack_require__(5); +const pgp_1 = __webpack_require__(214); class PgpHash { } exports.PgpHash = PgpHash; _a = PgpHash; PgpHash.sha1UtfStr = async (string) => { - return pgp_js_1.openpgp.util.Uint8Array_to_hex(await pgp_js_1.openpgp.crypto.hash.digest(pgp_js_1.openpgp.enums.hash.sha1, buf_js_1.Buf.fromUtfStr(string))); + return pgp_1.openpgp.util.Uint8Array_to_hex(await pgp_1.openpgp.crypto.hash.digest(pgp_1.openpgp.enums.hash.sha1, buf_1.Buf.fromUtfStr(string))); }; PgpHash.sha256UtfStr = async (string) => { - return pgp_js_1.openpgp.util.Uint8Array_to_hex(await pgp_js_1.openpgp.crypto.hash.digest(pgp_js_1.openpgp.enums.hash.sha256, buf_js_1.Buf.fromUtfStr(string))); + return pgp_1.openpgp.util.Uint8Array_to_hex(await pgp_1.openpgp.crypto.hash.digest(pgp_1.openpgp.enums.hash.sha256, buf_1.Buf.fromUtfStr(string))); }; PgpHash.doubleSha1Upper = async (string) => { return (await PgpHash.sha1UtfStr(await PgpHash.sha1UtfStr(string))).toUpperCase(); @@ -170727,8 +170733,8 @@ PgpHash.cryptoHashSha256Loop = async (string, times = 100000) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.PgpPwd = void 0; -const util_js_1 = __webpack_require__(6); -const pgp_js_1 = __webpack_require__(214); +const util_1 = __webpack_require__(6); +const pgp_1 = __webpack_require__(214); class PgpPwd { } exports.PgpPwd = PgpPwd; @@ -170773,7 +170779,7 @@ PgpPwd.weakWords = () => { ]; }; PgpPwd.random = () => { - return (0, util_js_1.base64encode)(pgp_js_1.openpgp.util.Uint8Array_to_str((0, util_js_1.secureRandomBytes)(128))).toUpperCase().replace(/[^A-Z0-9]|0|O|1/g, '').replace(/(.{4})/g, '$1-').substr(0, 19); + return (0, util_1.base64encode)(pgp_1.openpgp.util.Uint8Array_to_str((0, util_1.secureRandomBytes)(128))).toUpperCase().replace(/[^A-Z0-9]|0|O|1/g, '').replace(/(.{4})/g, '$1-').substr(0, 19); }; PgpPwd.readableCrackTime = (totalSeconds) => { const numberWordEnding = (n) => (n > 1) ? 's' : ''; diff --git a/FlowCryptAppTests/Core/FlowCryptCoreTests.swift b/FlowCryptAppTests/Core/FlowCryptCoreTests.swift index 9020e69b1..0f3e1ad66 100644 --- a/FlowCryptAppTests/Core/FlowCryptCoreTests.swift +++ b/FlowCryptAppTests/Core/FlowCryptCoreTests.swift @@ -197,7 +197,7 @@ final class FlowCryptCoreTests: XCTestCase { let keys = [PrvKeyInfo(private: k.private!, longid: k.ids[0].longid, passphrase: passphrase, fingerprints: k.fingerprints)] let decrypted = try await core.parseDecryptMsg(encrypted: mime.mimeEncoded, keys: keys, msgPwd: nil, isEmail: true, verificationPubKeys: []) XCTAssertEqual(decrypted.text, text) - XCTAssertEqual(decrypted.replyType, CoreRes.ReplyType.encrypted) + XCTAssertEqual(decrypted.replyType, ReplyType.encrypted) XCTAssertEqual(decrypted.blocks.count, 1) let b = decrypted.blocks[0] XCTAssertNil(b.keyDetails) // should only be present on pubkey blocks @@ -211,7 +211,7 @@ final class FlowCryptCoreTests: XCTestCase { let r = try await core.parseDecryptMsg(encrypted: TestData.mismatchEncryptedMsg.data(using: .utf8)!, keys: [key], msgPwd: nil, isEmail: false, verificationPubKeys: []) let decrypted = r XCTAssertEqual(decrypted.text, "") - XCTAssertEqual(decrypted.replyType, CoreRes.ReplyType.plain) // replies to errors should be plain + XCTAssertEqual(decrypted.replyType, ReplyType.plain) // replies to errors should be plain XCTAssertEqual(decrypted.blocks.count, 2) let contentBlock = decrypted.blocks[0] XCTAssertEqual(contentBlock.type, MsgBlock.BlockType.plainHtml) @@ -220,7 +220,7 @@ final class FlowCryptCoreTests: XCTestCase { XCTAssertEqual(decryptErrBlock.type, MsgBlock.BlockType.decryptErr) XCTAssertNotNil(decryptErrBlock.decryptErr) let e = decryptErrBlock.decryptErr! - XCTAssertEqual(e.error.type, MsgBlock.DecryptErr.ErrorType.keyMismatch) + XCTAssertEqual(e.error.type, DecryptErr.ErrorType.keyMismatch) } func testEncryptFile() async throws { @@ -260,9 +260,9 @@ final class FlowCryptCoreTests: XCTestCase { ) // Then - XCTAssertTrue(decrypted.content == fileData) - XCTAssertTrue(decrypted.content.toStr() == fileData.toStr()) - XCTAssertTrue(decrypted.name == initialFileName) + XCTAssertTrue(decrypted.decryptSuccess!.data == fileData) + XCTAssertTrue(decrypted.decryptSuccess!.data.toStr() == fileData.toStr()) + XCTAssertTrue(decrypted.decryptSuccess!.name == initialFileName) } func testDecryptNotEncryptedFile() async throws { @@ -289,17 +289,14 @@ final class FlowCryptCoreTests: XCTestCase { ] // When - do { - _ = try await core.decryptFile( - encrypted: fileData, - keys: keys, - msgPwd: nil - ) - XCTFail("Should have thrown above") - } catch let CoreError.format(message) { - // Then - XCTAssertNotNil(message.range(of: "Error: Error during parsing")) - } + let decryptRes = try await core.decryptFile( + encrypted: fileData, + keys: keys, + msgPwd: nil + ) + + // Then + XCTAssertEqual(decryptRes.decryptErr?.error.type, DecryptErr.ErrorType.format) } func testDecryptWithNoKeys() async throws { @@ -317,24 +314,17 @@ final class FlowCryptCoreTests: XCTestCase { userIds: [UserId(email: email, name: "End to end")] ) let k = generateKeyRes.key - - // When - do { - let encrypted = try await core.encryptFile( - pubKeys: [k.public], - fileData: fileData, - name: initialFileName - ) - _ = try await core.decryptFile( - encrypted: encrypted.encryptedFile, - keys: [], - msgPwd: nil - ) - XCTFail("Should have thrown above") - } catch let CoreError.keyMismatch(message) { - // Then - XCTAssertNotNil(message.range(of: "Missing appropriate key")) - } + let encrypted = try await core.encryptFile( + pubKeys: [k.public], + fileData: fileData, + name: initialFileName + ) + let decryptResult = try await core.decryptFile( + encrypted: encrypted.encryptedFile, + keys: [], + msgPwd: nil + ) + XCTAssertEqual(decryptResult.decryptErr!.error.type, DecryptErr.ErrorType.keyMismatch) } func testDecryptEncryptedFile() async throws { @@ -374,8 +364,8 @@ final class FlowCryptCoreTests: XCTestCase { ) // Then - XCTAssertEqual(decrypted.name, initialFileName) - XCTAssertEqual(decrypted.content.count, fileData.count) + XCTAssertEqual(decrypted.decryptSuccess!.name, initialFileName) + XCTAssertEqual(decrypted.decryptSuccess!.data.count, fileData.count) } func testException() async throws { diff --git a/FlowCryptCommon/Extensions/SequenceExtensions.swift b/FlowCryptCommon/Extensions/SequenceExtensions.swift deleted file mode 100644 index 351d256c5..000000000 --- a/FlowCryptCommon/Extensions/SequenceExtensions.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// © 2017-2019 FlowCrypt Limited. All rights reserved. -// - -import Foundation - -public extension Sequence { - // same as .map { $0 } except will also run closure on each item - // useful for debugging maps/filters/etc: - // .map { $0.hello } - // .also { print("All: \($0)") } - // .filter { !$0.isEmpty } - // .also { print("Filtered: \($0)")} - @inlinable func also(_ doThis: (Element) -> Void) -> [Element] { - return map { - doThis($0) - return $0 - } - } -} diff --git a/FlowCryptUIApplication/ViewController.swift b/FlowCryptUIApplication/ViewController.swift index b3277390c..ba8044d2f 100644 --- a/FlowCryptUIApplication/ViewController.swift +++ b/FlowCryptUIApplication/ViewController.swift @@ -20,7 +20,6 @@ final class ViewController: TableNodeViewController { } private lazy var composeButton = ComposeButtonNode { [weak self] in - print("Tapped") } init() { diff --git a/Gemfile.lock b/Gemfile.lock index a69724d98..01f83a085 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,7 +3,7 @@ GEM specs: CFPropertyList (3.0.5) rexml - activesupport (6.1.4.1) + activesupport (6.1.4.4) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -17,7 +17,7 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.540.0) + aws-partitions (1.542.0) aws-sdk-core (3.124.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.525.0) @@ -111,7 +111,7 @@ GEM faraday-rack (1.0.0) faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.5) + fastimage (2.2.6) fastlane (2.199.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) @@ -167,7 +167,7 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.8.0) + google-apis-iamcredentials_v1 (0.9.0) google-apis-core (>= 0.4, < 2.a) google-apis-playcustomapp_v1 (0.6.0) google-apis-core (>= 0.4, < 2.a) @@ -210,7 +210,7 @@ GEM mime-types-data (3.2021.1115) mini_magick (4.11.0) mini_mime (1.1.2) - minitest (5.14.4) + minitest (5.15.0) molinillo (0.8.0) multi_json (1.15.0) multipart-post (2.0.0)