├── .babelrc
├── .gitignore
├── .gitmodules
├── LICENSE
├── README.md
├── example
├── README.md
├── index.html
└── index.js
├── lib
├── gen
│ └── .gitkeep
├── index.d.ts
├── index.js
├── node.js
├── randombytes.c
└── wrapper.c
├── package-lock.json
├── package.json
└── test
└── test.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["env"]
3 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | lib/gen
3 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "sss"]
2 | path = sss
3 | url = https://github.com/dsprenkels/sss.git
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Joel Thorstensson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Shamir secret sharing for Javascript
2 | [Shamir secret sharing](https://en.wikipedia.org/wiki/Shamir's_Secret_Sharing) is an algorithm for splitting data into multiple `shares`, a subset of which can then be combined to reconstruct the original secret. This library aims to provide javascript bindings for [dsprenkles/sss](https://github.com/dsprenkels/sss/tree/master) implementation of this algorithm using Web Assembly.
3 |
4 | ## Background
5 | Currently there are bindings for sss in node.js. However this code will not run in the browser since it uses node binaries. By using Web Assembly it is possible to create a javascript library that works both in the browser as well as node.js.
6 |
7 | ## Usage
8 | ```ts
9 | // Import the sss library
10 | import * as sss from 'sss-wasm'
11 |
12 | // Create a buffer for the data that will be shared (must be 64 bytes long)
13 | const data = new Uint8Array(64);
14 | data.fill(0x42);
15 |
16 | const amount = 5;
17 | const threshold = 4;
18 |
19 | // Creating 5 shares (need 3 to restore)
20 | const shares = await sss.createShares(data, amount, threshold);
21 |
22 | // For demonstrational purpose, lose one of the shares
23 | const newShares = [shares[3], shares[2], shares[4], shares[0]]
24 |
25 | // Restore the original secret
26 | const restored = await sss.combineShares(newShares);
27 |
28 | // Dump the original secret back to the screen
29 | console.log(restored)
30 | ```
31 |
32 | ## Build
33 | We need Emscripten toolchain installed to build wasm. [More info](https://webassembly.org/getting-started/developers-guide/)
34 |
35 | You need to setup submodules first.
36 | ```
37 | git submodules init
38 | git submodules update
39 | cd sss
40 | git submodules init
41 | git submodules update
42 | ```
43 |
44 | Then go to the root folder.
45 | ```
46 | npm install
47 | npm run build
48 | npm run test
49 | ```
50 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # Shamir secret sharing web-ui
2 |
3 | This subdirectory of [`sss-wasm`](https://github.com/3box/sss-wasm)
4 | implements a web interface for splitting and combining secrets using Daan Sprenkels'
5 | [Shamir secret sharing library][sss].
6 |
7 | Run it from root:
8 | ```
9 | npm run serve
10 | ```
11 |
12 | and then go to `http://localhost:3000/example/` in a web browser.
13 |
--------------------------------------------------------------------------------
/example/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Shamir secret sharing web-ui
6 |
11 | Shamir secret sharing web-ui
12 |
13 | This page allows you to split your secrets into parts using Daan Sprenkels'
14 | Shamir secret sharing library . (
15 | source code )
16 |
17 |
18 | Note: Currently the maximum secret size is 63 bytes.
19 |
20 |
21 |
Secret:
22 |
23 |
24 |
25 | share count:
26 |
27 | threshold:
28 |
29 | split secret 🠗
30 | combine shares 🠕
31 |
32 |
33 |
Shares:
34 |
35 |
36 |
37 |
104 |
--------------------------------------------------------------------------------
/example/index.js:
--------------------------------------------------------------------------------
1 | import * as sss from '../lib/index.js'
2 |
3 | globalThis.sss = sss;
4 |
--------------------------------------------------------------------------------
/lib/gen/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/3box/sss-wasm/af620badbc03462fd7ea89c11d256a005821a119/lib/gen/.gitkeep
--------------------------------------------------------------------------------
/lib/index.d.ts:
--------------------------------------------------------------------------------
1 | export function createShares(data: Uint8Array, n: number, k: number): Promise>
2 | export function combineShares(shares: Array): Promise
3 | export function createKeyshares(data: Uint8Array, n: number, k: number): Promise>
4 | export function combineKeyshares(shares: Array): Promise
5 |
--------------------------------------------------------------------------------
/lib/index.js:
--------------------------------------------------------------------------------
1 | import Wrapper from "./gen/wrapper.js";
2 |
3 | let api = undefined;
4 |
5 | function load() {
6 | if (api) return new Promise(resolve => resolve(api));
7 | return new Promise(resolve => {
8 | Wrapper().then(Module => {
9 | api = {
10 | set: (d, p) => Module.HEAPU8.set(d, p),
11 | slice: (f, t) => Module.HEAPU8.slice(f, t),
12 | getShareLen: Module.cwrap('get_share_len', 'number', []),
13 | getMessageLen: Module.cwrap('get_message_len', 'number', []),
14 | getKeyshareLen: Module.cwrap('get_keyshare_len', 'number', []),
15 | getKeyLen: Module.cwrap('get_key_len', 'number', []),
16 | createBuffer: Module.cwrap('create_buffer', 'number', ['number', 'number']),
17 | destroyBuffer: Module.cwrap('destroy_buffer', '', ['number']),
18 | createShares: Module.cwrap('create_shares', 'number', ['number', 'number', 'number']),
19 | combineShares: Module.cwrap('combine_shares', 'number', ['number', 'number']),
20 | createKeyshares: Module.cwrap('create_keyshares', 'number', ['number', 'number', 'number']),
21 | combineKeyshares: Module.cwrap('combine_keyshares', 'number', ['number', 'number']),
22 | };
23 | resolve(api);
24 | });
25 | });
26 | }
27 |
28 | export const createShares = function createShares(data, n, k) {
29 | return load().then(api => {
30 | const datap = api.createBuffer(data.length);
31 | api.set(data, datap);
32 | const sharep = api.createShares(datap, n, k);
33 | api.destroyBuffer(datap);
34 |
35 | const shareLen = api.getShareLen();
36 | const shares = [];
37 | for (let i = 0; i < n; i++) {
38 | shares[i] = api.slice(sharep + shareLen * i, sharep + shareLen * (i + 1));
39 | }
40 | return shares;
41 | });
42 | };
43 |
44 | export const combineShares = function combineShares(shares) {
45 | return load().then(api => {
46 | const input = api.createBuffer(api.getShareLen() * shares.length);
47 | for (let s in shares) {
48 | api.set(shares[s], input + s * api.getShareLen());
49 | }
50 |
51 | const datap = api.combineShares(input, shares.length);
52 | if (!datap) throw "InvalidAccessError: invalid or too few shares provided";
53 | api.destroyBuffer(input);
54 |
55 | return api.slice(datap, datap + api.getMessageLen());
56 | });
57 | };
58 |
59 | export const createKeyshares = function createKeyshares(key, n, k) {
60 | return load().then(api => {
61 | const keyp = api.createBuffer(key.length);
62 | api.set(key, keyp);
63 | const sharep = api.createKeyshares(keyp, n, k);
64 | api.destroyBuffer(keyp);
65 |
66 | const shareLen = api.getKeyshareLen();
67 | const shares = [];
68 | for (let i = 0; i < n; i++) {
69 | shares[i] = api.slice(sharep + shareLen * i, sharep + shareLen * (i + 1));
70 | }
71 | return shares;
72 | });
73 | }
74 |
75 | export const combineKeyshares = function combineKeyshares(keyshares) {
76 | return load().then(api => {
77 | const input = api.createBuffer(api.getKeyshareLen() * keyshares.length);
78 | for (let s in keyshares) {
79 | api.set(keyshares[s], input + s * api.getKeyshareLen());
80 | }
81 |
82 | const keyp = api.combineKeyshares(input, keyshares.length);
83 | api.destroyBuffer(input);
84 |
85 | return api.slice(keyp, keyp + api.getKeyLen());
86 | });
87 | }
88 |
--------------------------------------------------------------------------------
/lib/node.js:
--------------------------------------------------------------------------------
1 | globalThis.__dirname = import.meta.url.match(/^(.+)\/([^\/]+)$/)[1].replace(/^file:\/\//, '')
2 | import { createRequire } from 'module';
3 | globalThis.require = (p) => {
4 | const origRequire = createRequire(import.meta.url);
5 | if (p === 'path') {
6 | const module = origRequire('path')
7 | return {
8 | ...module,
9 | normalize: (a) => a.replace(/^file:\/\//, '')
10 | }
11 | } else {
12 | return origRequire(p)
13 | }
14 | }
15 |
16 | export * from './index.js'
17 |
--------------------------------------------------------------------------------
/lib/randombytes.c:
--------------------------------------------------------------------------------
1 | #include "../sss/randombytes.h"
2 |
3 | #ifdef __EMSCRIPTEN__
4 | #include
5 | #endif
6 |
7 | #if defined(__EMSCRIPTEN__)
8 | static int randombytes_emscripten_randombytes(void *buf, size_t n)
9 | {
10 | const int ret = EM_ASM_INT({
11 | if (typeof window!=="undefined") {
12 | var crypto = window.crypto || window.msCrypto;
13 | if (crypto) {
14 | var buf = new window.Uint8Array($1);
15 | crypto.getRandomValues(buf);
16 | writeArrayToMemory(buf, $0);
17 | return 0;
18 | }
19 | }
20 | var crypto = require('crypto');
21 | if (crypto) {
22 | writeArrayToMemory(crypto.randomBytes($1), $0);
23 | return 0;
24 | }
25 | return -1;
26 | }, buf, n);
27 | return ret;
28 | }
29 | #endif /* defined(__EMSCRIPTEN__) */
30 |
31 | int randombytes(void *buf, size_t n)
32 | {
33 | #if defined(__EMSCRIPTEN__)
34 | #pragma message("Using browser window.crypto.getRandomValues")
35 | /* Use window.crypto.getRandomValues */
36 | return randombytes_emscripten_randombytes(buf, n);
37 | #else
38 | #error "randombytes(...) is not supported on this platform"
39 | #endif
40 | }
41 |
--------------------------------------------------------------------------------
/lib/wrapper.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include "../sss/sss.h"
4 | #include "../sss/randombytes/randombytes.h"
5 |
6 | EMSCRIPTEN_KEEPALIVE
7 | int get_share_len()
8 | {
9 | return sss_SHARE_LEN;
10 | }
11 |
12 | EMSCRIPTEN_KEEPALIVE
13 | int get_message_len()
14 | {
15 | return sss_MLEN;
16 | }
17 |
18 | EMSCRIPTEN_KEEPALIVE
19 | int get_keyshare_len()
20 | {
21 | return sss_KEYSHARE_LEN;
22 | }
23 |
24 | EMSCRIPTEN_KEEPALIVE
25 | int get_key_len()
26 | {
27 | return 32;
28 | }
29 |
30 | EMSCRIPTEN_KEEPALIVE
31 | uint8_t *create_shares(uint8_t *data, uint8_t n, uint8_t k)
32 | {
33 | uint8_t *output = (uint8_t *)malloc(sss_SHARE_LEN * n);
34 | sss_create_shares((sss_Share *)output, data, n, k);
35 | return output;
36 | }
37 |
38 | EMSCRIPTEN_KEEPALIVE
39 | uint8_t *combine_shares(uint8_t *input, uint8_t k)
40 | {
41 | uint8_t *data = (uint8_t *)malloc(sss_MLEN);
42 | if (sss_combine_shares(data, (sss_Share *)input, k) == 0) {
43 | return data;
44 | } else {
45 | free(data);
46 | return NULL;
47 | }
48 | }
49 |
50 | EMSCRIPTEN_KEEPALIVE
51 | uint8_t *create_keyshares(uint8_t *key, uint8_t n, uint8_t k)
52 | {
53 | uint8_t *output = (uint8_t *)malloc(sss_KEYSHARE_LEN * n);
54 | sss_create_keyshares((sss_Keyshare *)output, key, n, k);
55 | return output;
56 | }
57 |
58 | EMSCRIPTEN_KEEPALIVE
59 | uint8_t *combine_keyshares(uint8_t *input, uint8_t k)
60 | {
61 | uint8_t *key = (uint8_t *)malloc(32);
62 | sss_combine_keyshares(key, (sss_Keyshare *)input, k);
63 | return key;
64 | }
65 |
66 | EMSCRIPTEN_KEEPALIVE
67 | uint8_t *create_buffer(uint8_t length)
68 | {
69 | return malloc(length * sizeof(uint8_t));
70 | }
71 |
72 | EMSCRIPTEN_KEEPALIVE
73 | void destroy_buffer(uint8_t *p)
74 | {
75 | free(p);
76 | }
77 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sss-wasm",
3 | "version": "0.4.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "sss-wasm",
9 | "version": "0.4.0",
10 | "license": "Apache-2.0",
11 | "devDependencies": {
12 | "gh-pages": "^4.0.0",
13 | "jsverify": "^0.8.4",
14 | "serve": "^14.0.1",
15 | "shuffle-array": "1.0"
16 | }
17 | },
18 | "node_modules/@zeit/schemas": {
19 | "version": "2.21.0",
20 | "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz",
21 | "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==",
22 | "dev": true
23 | },
24 | "node_modules/accepts": {
25 | "version": "1.3.8",
26 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
27 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
28 | "dev": true,
29 | "dependencies": {
30 | "mime-types": "~2.1.34",
31 | "negotiator": "0.6.3"
32 | },
33 | "engines": {
34 | "node": ">= 0.6"
35 | }
36 | },
37 | "node_modules/ajv": {
38 | "version": "8.11.0",
39 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
40 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
41 | "dev": true,
42 | "dependencies": {
43 | "fast-deep-equal": "^3.1.1",
44 | "json-schema-traverse": "^1.0.0",
45 | "require-from-string": "^2.0.2",
46 | "uri-js": "^4.2.2"
47 | },
48 | "funding": {
49 | "type": "github",
50 | "url": "https://github.com/sponsors/epoberezkin"
51 | }
52 | },
53 | "node_modules/ansi-align": {
54 | "version": "3.0.1",
55 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
56 | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
57 | "dev": true,
58 | "dependencies": {
59 | "string-width": "^4.1.0"
60 | }
61 | },
62 | "node_modules/ansi-align/node_modules/ansi-regex": {
63 | "version": "5.0.1",
64 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
65 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
66 | "dev": true,
67 | "engines": {
68 | "node": ">=8"
69 | }
70 | },
71 | "node_modules/ansi-align/node_modules/emoji-regex": {
72 | "version": "8.0.0",
73 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
74 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
75 | "dev": true
76 | },
77 | "node_modules/ansi-align/node_modules/string-width": {
78 | "version": "4.2.3",
79 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
80 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
81 | "dev": true,
82 | "dependencies": {
83 | "emoji-regex": "^8.0.0",
84 | "is-fullwidth-code-point": "^3.0.0",
85 | "strip-ansi": "^6.0.1"
86 | },
87 | "engines": {
88 | "node": ">=8"
89 | }
90 | },
91 | "node_modules/ansi-align/node_modules/strip-ansi": {
92 | "version": "6.0.1",
93 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
94 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
95 | "dev": true,
96 | "dependencies": {
97 | "ansi-regex": "^5.0.1"
98 | },
99 | "engines": {
100 | "node": ">=8"
101 | }
102 | },
103 | "node_modules/ansi-regex": {
104 | "version": "6.0.1",
105 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
106 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
107 | "dev": true,
108 | "engines": {
109 | "node": ">=12"
110 | },
111 | "funding": {
112 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
113 | }
114 | },
115 | "node_modules/ansi-styles": {
116 | "version": "6.1.0",
117 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz",
118 | "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==",
119 | "dev": true,
120 | "engines": {
121 | "node": ">=12"
122 | },
123 | "funding": {
124 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
125 | }
126 | },
127 | "node_modules/arch": {
128 | "version": "2.2.0",
129 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
130 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
131 | "dev": true,
132 | "funding": [
133 | {
134 | "type": "github",
135 | "url": "https://github.com/sponsors/feross"
136 | },
137 | {
138 | "type": "patreon",
139 | "url": "https://www.patreon.com/feross"
140 | },
141 | {
142 | "type": "consulting",
143 | "url": "https://feross.org/support"
144 | }
145 | ]
146 | },
147 | "node_modules/arg": {
148 | "version": "5.0.2",
149 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
150 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
151 | "dev": true
152 | },
153 | "node_modules/array-union": {
154 | "version": "1.0.2",
155 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
156 | "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
157 | "dev": true,
158 | "dependencies": {
159 | "array-uniq": "^1.0.1"
160 | },
161 | "engines": {
162 | "node": ">=0.10.0"
163 | }
164 | },
165 | "node_modules/array-uniq": {
166 | "version": "1.0.3",
167 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
168 | "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
169 | "dev": true,
170 | "engines": {
171 | "node": ">=0.10.0"
172 | }
173 | },
174 | "node_modules/async": {
175 | "version": "2.6.4",
176 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
177 | "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
178 | "dev": true,
179 | "dependencies": {
180 | "lodash": "^4.17.14"
181 | }
182 | },
183 | "node_modules/balanced-match": {
184 | "version": "1.0.2",
185 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
186 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
187 | "dev": true
188 | },
189 | "node_modules/boxen": {
190 | "version": "7.0.0",
191 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
192 | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
193 | "dev": true,
194 | "dependencies": {
195 | "ansi-align": "^3.0.1",
196 | "camelcase": "^7.0.0",
197 | "chalk": "^5.0.1",
198 | "cli-boxes": "^3.0.0",
199 | "string-width": "^5.1.2",
200 | "type-fest": "^2.13.0",
201 | "widest-line": "^4.0.1",
202 | "wrap-ansi": "^8.0.1"
203 | },
204 | "engines": {
205 | "node": ">=14.16"
206 | },
207 | "funding": {
208 | "url": "https://github.com/sponsors/sindresorhus"
209 | }
210 | },
211 | "node_modules/brace-expansion": {
212 | "version": "1.1.11",
213 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
214 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
215 | "dev": true,
216 | "dependencies": {
217 | "balanced-match": "^1.0.0",
218 | "concat-map": "0.0.1"
219 | }
220 | },
221 | "node_modules/bytes": {
222 | "version": "3.0.0",
223 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
224 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
225 | "dev": true,
226 | "engines": {
227 | "node": ">= 0.8"
228 | }
229 | },
230 | "node_modules/camelcase": {
231 | "version": "7.0.0",
232 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz",
233 | "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==",
234 | "dev": true,
235 | "engines": {
236 | "node": ">=14.16"
237 | },
238 | "funding": {
239 | "url": "https://github.com/sponsors/sindresorhus"
240 | }
241 | },
242 | "node_modules/chalk": {
243 | "version": "5.0.1",
244 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
245 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
246 | "dev": true,
247 | "engines": {
248 | "node": "^12.17.0 || ^14.13 || >=16.0.0"
249 | },
250 | "funding": {
251 | "url": "https://github.com/chalk/chalk?sponsor=1"
252 | }
253 | },
254 | "node_modules/chalk-template": {
255 | "version": "0.4.0",
256 | "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
257 | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
258 | "dev": true,
259 | "dependencies": {
260 | "chalk": "^4.1.2"
261 | },
262 | "engines": {
263 | "node": ">=12"
264 | },
265 | "funding": {
266 | "url": "https://github.com/chalk/chalk-template?sponsor=1"
267 | }
268 | },
269 | "node_modules/chalk-template/node_modules/ansi-styles": {
270 | "version": "4.3.0",
271 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
272 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
273 | "dev": true,
274 | "dependencies": {
275 | "color-convert": "^2.0.1"
276 | },
277 | "engines": {
278 | "node": ">=8"
279 | },
280 | "funding": {
281 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
282 | }
283 | },
284 | "node_modules/chalk-template/node_modules/chalk": {
285 | "version": "4.1.2",
286 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
287 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
288 | "dev": true,
289 | "dependencies": {
290 | "ansi-styles": "^4.1.0",
291 | "supports-color": "^7.1.0"
292 | },
293 | "engines": {
294 | "node": ">=10"
295 | },
296 | "funding": {
297 | "url": "https://github.com/chalk/chalk?sponsor=1"
298 | }
299 | },
300 | "node_modules/cli-boxes": {
301 | "version": "3.0.0",
302 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
303 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
304 | "dev": true,
305 | "engines": {
306 | "node": ">=10"
307 | },
308 | "funding": {
309 | "url": "https://github.com/sponsors/sindresorhus"
310 | }
311 | },
312 | "node_modules/clipboardy": {
313 | "version": "3.0.0",
314 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
315 | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
316 | "dev": true,
317 | "dependencies": {
318 | "arch": "^2.2.0",
319 | "execa": "^5.1.1",
320 | "is-wsl": "^2.2.0"
321 | },
322 | "engines": {
323 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
324 | },
325 | "funding": {
326 | "url": "https://github.com/sponsors/sindresorhus"
327 | }
328 | },
329 | "node_modules/color-convert": {
330 | "version": "2.0.1",
331 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
332 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
333 | "dev": true,
334 | "dependencies": {
335 | "color-name": "~1.1.4"
336 | },
337 | "engines": {
338 | "node": ">=7.0.0"
339 | }
340 | },
341 | "node_modules/color-name": {
342 | "version": "1.1.4",
343 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
344 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
345 | "dev": true
346 | },
347 | "node_modules/commander": {
348 | "version": "2.20.3",
349 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
350 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
351 | "dev": true
352 | },
353 | "node_modules/commondir": {
354 | "version": "1.0.1",
355 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
356 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
357 | "dev": true
358 | },
359 | "node_modules/compressible": {
360 | "version": "2.0.18",
361 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
362 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
363 | "dev": true,
364 | "dependencies": {
365 | "mime-db": ">= 1.43.0 < 2"
366 | },
367 | "engines": {
368 | "node": ">= 0.6"
369 | }
370 | },
371 | "node_modules/compression": {
372 | "version": "1.7.4",
373 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
374 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
375 | "dev": true,
376 | "dependencies": {
377 | "accepts": "~1.3.5",
378 | "bytes": "3.0.0",
379 | "compressible": "~2.0.16",
380 | "debug": "2.6.9",
381 | "on-headers": "~1.0.2",
382 | "safe-buffer": "5.1.2",
383 | "vary": "~1.1.2"
384 | },
385 | "engines": {
386 | "node": ">= 0.8.0"
387 | }
388 | },
389 | "node_modules/concat-map": {
390 | "version": "0.0.1",
391 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
392 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
393 | "dev": true
394 | },
395 | "node_modules/content-disposition": {
396 | "version": "0.5.2",
397 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
398 | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
399 | "dev": true,
400 | "engines": {
401 | "node": ">= 0.6"
402 | }
403 | },
404 | "node_modules/cross-spawn": {
405 | "version": "7.0.3",
406 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
407 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
408 | "dev": true,
409 | "dependencies": {
410 | "path-key": "^3.1.0",
411 | "shebang-command": "^2.0.0",
412 | "which": "^2.0.1"
413 | },
414 | "engines": {
415 | "node": ">= 8"
416 | }
417 | },
418 | "node_modules/debug": {
419 | "version": "2.6.9",
420 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
421 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
422 | "dev": true,
423 | "dependencies": {
424 | "ms": "2.0.0"
425 | }
426 | },
427 | "node_modules/deep-extend": {
428 | "version": "0.6.0",
429 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
430 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
431 | "dev": true,
432 | "engines": {
433 | "node": ">=4.0.0"
434 | }
435 | },
436 | "node_modules/eastasianwidth": {
437 | "version": "0.2.0",
438 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
439 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
440 | "dev": true
441 | },
442 | "node_modules/email-addresses": {
443 | "version": "3.1.0",
444 | "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz",
445 | "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==",
446 | "dev": true
447 | },
448 | "node_modules/emoji-regex": {
449 | "version": "9.2.2",
450 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
451 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
452 | "dev": true
453 | },
454 | "node_modules/escape-string-regexp": {
455 | "version": "1.0.5",
456 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
457 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
458 | "dev": true,
459 | "engines": {
460 | "node": ">=0.8.0"
461 | }
462 | },
463 | "node_modules/execa": {
464 | "version": "5.1.1",
465 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
466 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
467 | "dev": true,
468 | "dependencies": {
469 | "cross-spawn": "^7.0.3",
470 | "get-stream": "^6.0.0",
471 | "human-signals": "^2.1.0",
472 | "is-stream": "^2.0.0",
473 | "merge-stream": "^2.0.0",
474 | "npm-run-path": "^4.0.1",
475 | "onetime": "^5.1.2",
476 | "signal-exit": "^3.0.3",
477 | "strip-final-newline": "^2.0.0"
478 | },
479 | "engines": {
480 | "node": ">=10"
481 | },
482 | "funding": {
483 | "url": "https://github.com/sindresorhus/execa?sponsor=1"
484 | }
485 | },
486 | "node_modules/fast-deep-equal": {
487 | "version": "3.1.3",
488 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
489 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
490 | "dev": true
491 | },
492 | "node_modules/fast-url-parser": {
493 | "version": "1.1.3",
494 | "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
495 | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
496 | "dev": true,
497 | "dependencies": {
498 | "punycode": "^1.3.2"
499 | }
500 | },
501 | "node_modules/filename-reserved-regex": {
502 | "version": "2.0.0",
503 | "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
504 | "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
505 | "dev": true,
506 | "engines": {
507 | "node": ">=4"
508 | }
509 | },
510 | "node_modules/filenamify": {
511 | "version": "4.3.0",
512 | "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz",
513 | "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==",
514 | "dev": true,
515 | "dependencies": {
516 | "filename-reserved-regex": "^2.0.0",
517 | "strip-outer": "^1.0.1",
518 | "trim-repeated": "^1.0.0"
519 | },
520 | "engines": {
521 | "node": ">=8"
522 | },
523 | "funding": {
524 | "url": "https://github.com/sponsors/sindresorhus"
525 | }
526 | },
527 | "node_modules/find-cache-dir": {
528 | "version": "3.3.2",
529 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
530 | "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
531 | "dev": true,
532 | "dependencies": {
533 | "commondir": "^1.0.1",
534 | "make-dir": "^3.0.2",
535 | "pkg-dir": "^4.1.0"
536 | },
537 | "engines": {
538 | "node": ">=8"
539 | },
540 | "funding": {
541 | "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
542 | }
543 | },
544 | "node_modules/find-up": {
545 | "version": "4.1.0",
546 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
547 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
548 | "dev": true,
549 | "dependencies": {
550 | "locate-path": "^5.0.0",
551 | "path-exists": "^4.0.0"
552 | },
553 | "engines": {
554 | "node": ">=8"
555 | }
556 | },
557 | "node_modules/fs-extra": {
558 | "version": "8.1.0",
559 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
560 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
561 | "dev": true,
562 | "dependencies": {
563 | "graceful-fs": "^4.2.0",
564 | "jsonfile": "^4.0.0",
565 | "universalify": "^0.1.0"
566 | },
567 | "engines": {
568 | "node": ">=6 <7 || >=8"
569 | }
570 | },
571 | "node_modules/fs.realpath": {
572 | "version": "1.0.0",
573 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
574 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
575 | "dev": true
576 | },
577 | "node_modules/get-stream": {
578 | "version": "6.0.1",
579 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
580 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
581 | "dev": true,
582 | "engines": {
583 | "node": ">=10"
584 | },
585 | "funding": {
586 | "url": "https://github.com/sponsors/sindresorhus"
587 | }
588 | },
589 | "node_modules/gh-pages": {
590 | "version": "4.0.0",
591 | "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-4.0.0.tgz",
592 | "integrity": "sha512-p8S0T3aGJc68MtwOcZusul5qPSNZCalap3NWbhRUZYu1YOdp+EjZ+4kPmRM8h3NNRdqw00yuevRjlkuSzCn7iQ==",
593 | "dev": true,
594 | "dependencies": {
595 | "async": "^2.6.1",
596 | "commander": "^2.18.0",
597 | "email-addresses": "^3.0.1",
598 | "filenamify": "^4.3.0",
599 | "find-cache-dir": "^3.3.1",
600 | "fs-extra": "^8.1.0",
601 | "globby": "^6.1.0"
602 | },
603 | "bin": {
604 | "gh-pages": "bin/gh-pages.js",
605 | "gh-pages-clean": "bin/gh-pages-clean.js"
606 | },
607 | "engines": {
608 | "node": ">=10"
609 | }
610 | },
611 | "node_modules/glob": {
612 | "version": "7.2.3",
613 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
614 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
615 | "dev": true,
616 | "dependencies": {
617 | "fs.realpath": "^1.0.0",
618 | "inflight": "^1.0.4",
619 | "inherits": "2",
620 | "minimatch": "^3.1.1",
621 | "once": "^1.3.0",
622 | "path-is-absolute": "^1.0.0"
623 | },
624 | "engines": {
625 | "node": "*"
626 | },
627 | "funding": {
628 | "url": "https://github.com/sponsors/isaacs"
629 | }
630 | },
631 | "node_modules/globby": {
632 | "version": "6.1.0",
633 | "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
634 | "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
635 | "dev": true,
636 | "dependencies": {
637 | "array-union": "^1.0.1",
638 | "glob": "^7.0.3",
639 | "object-assign": "^4.0.1",
640 | "pify": "^2.0.0",
641 | "pinkie-promise": "^2.0.0"
642 | },
643 | "engines": {
644 | "node": ">=0.10.0"
645 | }
646 | },
647 | "node_modules/graceful-fs": {
648 | "version": "4.2.10",
649 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
650 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
651 | "dev": true
652 | },
653 | "node_modules/has-flag": {
654 | "version": "4.0.0",
655 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
656 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
657 | "dev": true,
658 | "engines": {
659 | "node": ">=8"
660 | }
661 | },
662 | "node_modules/human-signals": {
663 | "version": "2.1.0",
664 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
665 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
666 | "dev": true,
667 | "engines": {
668 | "node": ">=10.17.0"
669 | }
670 | },
671 | "node_modules/inflight": {
672 | "version": "1.0.6",
673 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
674 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
675 | "dev": true,
676 | "dependencies": {
677 | "once": "^1.3.0",
678 | "wrappy": "1"
679 | }
680 | },
681 | "node_modules/inherits": {
682 | "version": "2.0.4",
683 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
684 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
685 | "dev": true
686 | },
687 | "node_modules/ini": {
688 | "version": "1.3.8",
689 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
690 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
691 | "dev": true
692 | },
693 | "node_modules/is-docker": {
694 | "version": "2.2.1",
695 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
696 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
697 | "dev": true,
698 | "bin": {
699 | "is-docker": "cli.js"
700 | },
701 | "engines": {
702 | "node": ">=8"
703 | },
704 | "funding": {
705 | "url": "https://github.com/sponsors/sindresorhus"
706 | }
707 | },
708 | "node_modules/is-fullwidth-code-point": {
709 | "version": "3.0.0",
710 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
711 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
712 | "dev": true,
713 | "engines": {
714 | "node": ">=8"
715 | }
716 | },
717 | "node_modules/is-port-reachable": {
718 | "version": "4.0.0",
719 | "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
720 | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
721 | "dev": true,
722 | "engines": {
723 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
724 | },
725 | "funding": {
726 | "url": "https://github.com/sponsors/sindresorhus"
727 | }
728 | },
729 | "node_modules/is-stream": {
730 | "version": "2.0.1",
731 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
732 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
733 | "dev": true,
734 | "engines": {
735 | "node": ">=8"
736 | },
737 | "funding": {
738 | "url": "https://github.com/sponsors/sindresorhus"
739 | }
740 | },
741 | "node_modules/is-wsl": {
742 | "version": "2.2.0",
743 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
744 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
745 | "dev": true,
746 | "dependencies": {
747 | "is-docker": "^2.0.0"
748 | },
749 | "engines": {
750 | "node": ">=8"
751 | }
752 | },
753 | "node_modules/isexe": {
754 | "version": "2.0.0",
755 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
756 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
757 | "dev": true
758 | },
759 | "node_modules/json-schema-traverse": {
760 | "version": "1.0.0",
761 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
762 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
763 | "dev": true
764 | },
765 | "node_modules/jsonfile": {
766 | "version": "4.0.0",
767 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
768 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
769 | "dev": true,
770 | "optionalDependencies": {
771 | "graceful-fs": "^4.1.6"
772 | }
773 | },
774 | "node_modules/jsverify": {
775 | "version": "0.8.4",
776 | "resolved": "https://registry.npmjs.org/jsverify/-/jsverify-0.8.4.tgz",
777 | "integrity": "sha512-nUG73Sfi8L4eOkc7pv9sflgAm43v+z6XMuePGVdRoBUxBLJiVcMcf3Xgc4h19eHHF3JwsaagOkUu825UnPBLJw==",
778 | "dev": true,
779 | "dependencies": {
780 | "lazy-seq": "^1.0.0",
781 | "rc4": "~0.1.5",
782 | "trampa": "^1.0.0",
783 | "typify-parser": "^1.1.0"
784 | },
785 | "engines": {
786 | "node": ">= 0.8.0"
787 | }
788 | },
789 | "node_modules/lazy-seq": {
790 | "version": "1.0.0",
791 | "resolved": "https://registry.npmjs.org/lazy-seq/-/lazy-seq-1.0.0.tgz",
792 | "integrity": "sha512-AQ4vRcnULa7FX6R6YTAjKQAE1MuEThidVQm0TEtTpedaBpnOwid5k6go16E5NDkafel1xAsZL73WkwdG03IzhA==",
793 | "dev": true,
794 | "engines": {
795 | "node": ">= 0.10.0"
796 | }
797 | },
798 | "node_modules/locate-path": {
799 | "version": "5.0.0",
800 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
801 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
802 | "dev": true,
803 | "dependencies": {
804 | "p-locate": "^4.1.0"
805 | },
806 | "engines": {
807 | "node": ">=8"
808 | }
809 | },
810 | "node_modules/lodash": {
811 | "version": "4.17.21",
812 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
813 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
814 | "dev": true
815 | },
816 | "node_modules/make-dir": {
817 | "version": "3.1.0",
818 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
819 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
820 | "dev": true,
821 | "dependencies": {
822 | "semver": "^6.0.0"
823 | },
824 | "engines": {
825 | "node": ">=8"
826 | },
827 | "funding": {
828 | "url": "https://github.com/sponsors/sindresorhus"
829 | }
830 | },
831 | "node_modules/merge-stream": {
832 | "version": "2.0.0",
833 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
834 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
835 | "dev": true
836 | },
837 | "node_modules/mime-db": {
838 | "version": "1.52.0",
839 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
840 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
841 | "dev": true,
842 | "engines": {
843 | "node": ">= 0.6"
844 | }
845 | },
846 | "node_modules/mime-types": {
847 | "version": "2.1.35",
848 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
849 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
850 | "dev": true,
851 | "dependencies": {
852 | "mime-db": "1.52.0"
853 | },
854 | "engines": {
855 | "node": ">= 0.6"
856 | }
857 | },
858 | "node_modules/mimic-fn": {
859 | "version": "2.1.0",
860 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
861 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
862 | "dev": true,
863 | "engines": {
864 | "node": ">=6"
865 | }
866 | },
867 | "node_modules/minimatch": {
868 | "version": "3.1.2",
869 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
870 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
871 | "dev": true,
872 | "dependencies": {
873 | "brace-expansion": "^1.1.7"
874 | },
875 | "engines": {
876 | "node": "*"
877 | }
878 | },
879 | "node_modules/minimist": {
880 | "version": "1.2.6",
881 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
882 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
883 | "dev": true
884 | },
885 | "node_modules/ms": {
886 | "version": "2.0.0",
887 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
888 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
889 | "dev": true
890 | },
891 | "node_modules/negotiator": {
892 | "version": "0.6.3",
893 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
894 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
895 | "dev": true,
896 | "engines": {
897 | "node": ">= 0.6"
898 | }
899 | },
900 | "node_modules/npm-run-path": {
901 | "version": "4.0.1",
902 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
903 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
904 | "dev": true,
905 | "dependencies": {
906 | "path-key": "^3.0.0"
907 | },
908 | "engines": {
909 | "node": ">=8"
910 | }
911 | },
912 | "node_modules/object-assign": {
913 | "version": "4.1.1",
914 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
915 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
916 | "dev": true,
917 | "engines": {
918 | "node": ">=0.10.0"
919 | }
920 | },
921 | "node_modules/on-headers": {
922 | "version": "1.0.2",
923 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
924 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
925 | "dev": true,
926 | "engines": {
927 | "node": ">= 0.8"
928 | }
929 | },
930 | "node_modules/once": {
931 | "version": "1.4.0",
932 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
933 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
934 | "dev": true,
935 | "dependencies": {
936 | "wrappy": "1"
937 | }
938 | },
939 | "node_modules/onetime": {
940 | "version": "5.1.2",
941 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
942 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
943 | "dev": true,
944 | "dependencies": {
945 | "mimic-fn": "^2.1.0"
946 | },
947 | "engines": {
948 | "node": ">=6"
949 | },
950 | "funding": {
951 | "url": "https://github.com/sponsors/sindresorhus"
952 | }
953 | },
954 | "node_modules/p-limit": {
955 | "version": "2.3.0",
956 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
957 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
958 | "dev": true,
959 | "dependencies": {
960 | "p-try": "^2.0.0"
961 | },
962 | "engines": {
963 | "node": ">=6"
964 | },
965 | "funding": {
966 | "url": "https://github.com/sponsors/sindresorhus"
967 | }
968 | },
969 | "node_modules/p-locate": {
970 | "version": "4.1.0",
971 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
972 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
973 | "dev": true,
974 | "dependencies": {
975 | "p-limit": "^2.2.0"
976 | },
977 | "engines": {
978 | "node": ">=8"
979 | }
980 | },
981 | "node_modules/p-try": {
982 | "version": "2.2.0",
983 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
984 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
985 | "dev": true,
986 | "engines": {
987 | "node": ">=6"
988 | }
989 | },
990 | "node_modules/path-exists": {
991 | "version": "4.0.0",
992 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
993 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
994 | "dev": true,
995 | "engines": {
996 | "node": ">=8"
997 | }
998 | },
999 | "node_modules/path-is-absolute": {
1000 | "version": "1.0.1",
1001 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1002 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1003 | "dev": true,
1004 | "engines": {
1005 | "node": ">=0.10.0"
1006 | }
1007 | },
1008 | "node_modules/path-is-inside": {
1009 | "version": "1.0.2",
1010 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1011 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
1012 | "dev": true
1013 | },
1014 | "node_modules/path-key": {
1015 | "version": "3.1.1",
1016 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1017 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1018 | "dev": true,
1019 | "engines": {
1020 | "node": ">=8"
1021 | }
1022 | },
1023 | "node_modules/path-to-regexp": {
1024 | "version": "2.2.1",
1025 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
1026 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==",
1027 | "dev": true
1028 | },
1029 | "node_modules/pify": {
1030 | "version": "2.3.0",
1031 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1032 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1033 | "dev": true,
1034 | "engines": {
1035 | "node": ">=0.10.0"
1036 | }
1037 | },
1038 | "node_modules/pinkie": {
1039 | "version": "2.0.4",
1040 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
1041 | "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
1042 | "dev": true,
1043 | "engines": {
1044 | "node": ">=0.10.0"
1045 | }
1046 | },
1047 | "node_modules/pinkie-promise": {
1048 | "version": "2.0.1",
1049 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
1050 | "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
1051 | "dev": true,
1052 | "dependencies": {
1053 | "pinkie": "^2.0.0"
1054 | },
1055 | "engines": {
1056 | "node": ">=0.10.0"
1057 | }
1058 | },
1059 | "node_modules/pkg-dir": {
1060 | "version": "4.2.0",
1061 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
1062 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
1063 | "dev": true,
1064 | "dependencies": {
1065 | "find-up": "^4.0.0"
1066 | },
1067 | "engines": {
1068 | "node": ">=8"
1069 | }
1070 | },
1071 | "node_modules/punycode": {
1072 | "version": "1.4.1",
1073 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
1074 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
1075 | "dev": true
1076 | },
1077 | "node_modules/range-parser": {
1078 | "version": "1.2.0",
1079 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
1080 | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
1081 | "dev": true,
1082 | "engines": {
1083 | "node": ">= 0.6"
1084 | }
1085 | },
1086 | "node_modules/rc": {
1087 | "version": "1.2.8",
1088 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
1089 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
1090 | "dev": true,
1091 | "dependencies": {
1092 | "deep-extend": "^0.6.0",
1093 | "ini": "~1.3.0",
1094 | "minimist": "^1.2.0",
1095 | "strip-json-comments": "~2.0.1"
1096 | },
1097 | "bin": {
1098 | "rc": "cli.js"
1099 | }
1100 | },
1101 | "node_modules/rc4": {
1102 | "version": "0.1.5",
1103 | "resolved": "https://registry.npmjs.org/rc4/-/rc4-0.1.5.tgz",
1104 | "integrity": "sha512-xdDTNV90z5x5u25Oc871Xnvu7yAr4tV7Eluh0VSvrhUkry39q1k+zkz7xroqHbRq+8PiazySHJPArqifUvz9VA==",
1105 | "dev": true,
1106 | "engines": {
1107 | "node": ">=0.10.0"
1108 | }
1109 | },
1110 | "node_modules/registry-auth-token": {
1111 | "version": "3.3.2",
1112 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
1113 | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
1114 | "dev": true,
1115 | "dependencies": {
1116 | "rc": "^1.1.6",
1117 | "safe-buffer": "^5.0.1"
1118 | }
1119 | },
1120 | "node_modules/registry-url": {
1121 | "version": "3.1.0",
1122 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
1123 | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
1124 | "dev": true,
1125 | "dependencies": {
1126 | "rc": "^1.0.1"
1127 | },
1128 | "engines": {
1129 | "node": ">=0.10.0"
1130 | }
1131 | },
1132 | "node_modules/require-from-string": {
1133 | "version": "2.0.2",
1134 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
1135 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
1136 | "dev": true,
1137 | "engines": {
1138 | "node": ">=0.10.0"
1139 | }
1140 | },
1141 | "node_modules/safe-buffer": {
1142 | "version": "5.1.2",
1143 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1144 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
1145 | "dev": true
1146 | },
1147 | "node_modules/semver": {
1148 | "version": "6.3.0",
1149 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1150 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1151 | "dev": true,
1152 | "bin": {
1153 | "semver": "bin/semver.js"
1154 | }
1155 | },
1156 | "node_modules/serve": {
1157 | "version": "14.0.1",
1158 | "resolved": "https://registry.npmjs.org/serve/-/serve-14.0.1.tgz",
1159 | "integrity": "sha512-tNGwxl27FwA8TbmMQqN0jTaSx8/trL532qZsJHX1VdiEIjjtMJHCs7AFS6OvtC7cTHOvmjXqt5yczejU6CV2Xg==",
1160 | "dev": true,
1161 | "dependencies": {
1162 | "@zeit/schemas": "2.21.0",
1163 | "ajv": "8.11.0",
1164 | "arg": "5.0.2",
1165 | "boxen": "7.0.0",
1166 | "chalk": "5.0.1",
1167 | "chalk-template": "0.4.0",
1168 | "clipboardy": "3.0.0",
1169 | "compression": "1.7.4",
1170 | "is-port-reachable": "4.0.0",
1171 | "serve-handler": "6.1.3",
1172 | "update-check": "1.5.4"
1173 | },
1174 | "bin": {
1175 | "serve": "build/main.js"
1176 | },
1177 | "engines": {
1178 | "node": ">= 14"
1179 | }
1180 | },
1181 | "node_modules/serve-handler": {
1182 | "version": "6.1.3",
1183 | "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz",
1184 | "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==",
1185 | "dev": true,
1186 | "dependencies": {
1187 | "bytes": "3.0.0",
1188 | "content-disposition": "0.5.2",
1189 | "fast-url-parser": "1.1.3",
1190 | "mime-types": "2.1.18",
1191 | "minimatch": "3.0.4",
1192 | "path-is-inside": "1.0.2",
1193 | "path-to-regexp": "2.2.1",
1194 | "range-parser": "1.2.0"
1195 | }
1196 | },
1197 | "node_modules/serve-handler/node_modules/mime-db": {
1198 | "version": "1.33.0",
1199 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
1200 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
1201 | "dev": true,
1202 | "engines": {
1203 | "node": ">= 0.6"
1204 | }
1205 | },
1206 | "node_modules/serve-handler/node_modules/mime-types": {
1207 | "version": "2.1.18",
1208 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
1209 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
1210 | "dev": true,
1211 | "dependencies": {
1212 | "mime-db": "~1.33.0"
1213 | },
1214 | "engines": {
1215 | "node": ">= 0.6"
1216 | }
1217 | },
1218 | "node_modules/serve-handler/node_modules/minimatch": {
1219 | "version": "3.0.4",
1220 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1221 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1222 | "dev": true,
1223 | "dependencies": {
1224 | "brace-expansion": "^1.1.7"
1225 | },
1226 | "engines": {
1227 | "node": "*"
1228 | }
1229 | },
1230 | "node_modules/shebang-command": {
1231 | "version": "2.0.0",
1232 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1233 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1234 | "dev": true,
1235 | "dependencies": {
1236 | "shebang-regex": "^3.0.0"
1237 | },
1238 | "engines": {
1239 | "node": ">=8"
1240 | }
1241 | },
1242 | "node_modules/shebang-regex": {
1243 | "version": "3.0.0",
1244 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1245 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1246 | "dev": true,
1247 | "engines": {
1248 | "node": ">=8"
1249 | }
1250 | },
1251 | "node_modules/shuffle-array": {
1252 | "version": "1.0.1",
1253 | "resolved": "https://registry.npmjs.org/shuffle-array/-/shuffle-array-1.0.1.tgz",
1254 | "integrity": "sha512-0TFRU8zVQaLatWKr0/czo19VyPNgb/a3sBc1GAjVfivfzEGaS54vueNgtAu/8/pW7EM/VF5fwq9zgpLdGyRmVw==",
1255 | "dev": true
1256 | },
1257 | "node_modules/signal-exit": {
1258 | "version": "3.0.7",
1259 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1260 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
1261 | "dev": true
1262 | },
1263 | "node_modules/string-width": {
1264 | "version": "5.1.2",
1265 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
1266 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
1267 | "dev": true,
1268 | "dependencies": {
1269 | "eastasianwidth": "^0.2.0",
1270 | "emoji-regex": "^9.2.2",
1271 | "strip-ansi": "^7.0.1"
1272 | },
1273 | "engines": {
1274 | "node": ">=12"
1275 | },
1276 | "funding": {
1277 | "url": "https://github.com/sponsors/sindresorhus"
1278 | }
1279 | },
1280 | "node_modules/strip-ansi": {
1281 | "version": "7.0.1",
1282 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
1283 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
1284 | "dev": true,
1285 | "dependencies": {
1286 | "ansi-regex": "^6.0.1"
1287 | },
1288 | "engines": {
1289 | "node": ">=12"
1290 | },
1291 | "funding": {
1292 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
1293 | }
1294 | },
1295 | "node_modules/strip-final-newline": {
1296 | "version": "2.0.0",
1297 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
1298 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
1299 | "dev": true,
1300 | "engines": {
1301 | "node": ">=6"
1302 | }
1303 | },
1304 | "node_modules/strip-json-comments": {
1305 | "version": "2.0.1",
1306 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1307 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
1308 | "dev": true,
1309 | "engines": {
1310 | "node": ">=0.10.0"
1311 | }
1312 | },
1313 | "node_modules/strip-outer": {
1314 | "version": "1.0.1",
1315 | "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
1316 | "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
1317 | "dev": true,
1318 | "dependencies": {
1319 | "escape-string-regexp": "^1.0.2"
1320 | },
1321 | "engines": {
1322 | "node": ">=0.10.0"
1323 | }
1324 | },
1325 | "node_modules/supports-color": {
1326 | "version": "7.2.0",
1327 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1328 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1329 | "dev": true,
1330 | "dependencies": {
1331 | "has-flag": "^4.0.0"
1332 | },
1333 | "engines": {
1334 | "node": ">=8"
1335 | }
1336 | },
1337 | "node_modules/trampa": {
1338 | "version": "1.0.1",
1339 | "resolved": "https://registry.npmjs.org/trampa/-/trampa-1.0.1.tgz",
1340 | "integrity": "sha512-93WeyHNuRggPEsfCe+yHxCgM2s6H3Q8Wmlt6b6ObJL8qc7eZlRaFjQxwTrB+zbvGtlDRnAkMoYYo3+2uH/fEwA==",
1341 | "dev": true
1342 | },
1343 | "node_modules/trim-repeated": {
1344 | "version": "1.0.0",
1345 | "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
1346 | "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
1347 | "dev": true,
1348 | "dependencies": {
1349 | "escape-string-regexp": "^1.0.2"
1350 | },
1351 | "engines": {
1352 | "node": ">=0.10.0"
1353 | }
1354 | },
1355 | "node_modules/type-fest": {
1356 | "version": "2.17.0",
1357 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.17.0.tgz",
1358 | "integrity": "sha512-U+g3/JVXnOki1kLSc+xZGPRll3Ah9u2VIG6Sn9iH9YX6UkPERmt6O/0fIyTgsd2/whV0+gAaHAg8fz6sG1QzMA==",
1359 | "dev": true,
1360 | "engines": {
1361 | "node": ">=12.20"
1362 | },
1363 | "funding": {
1364 | "url": "https://github.com/sponsors/sindresorhus"
1365 | }
1366 | },
1367 | "node_modules/typify-parser": {
1368 | "version": "1.1.0",
1369 | "resolved": "https://registry.npmjs.org/typify-parser/-/typify-parser-1.1.0.tgz",
1370 | "integrity": "sha512-p5+L1sc6Al3bcStMwiZNxDh4ii4JxL+famEbSIUuOUMVoNn9Nz27AT1jL3x7poMHxqKK0UQIUAp5lGkKbyKkFA==",
1371 | "dev": true,
1372 | "engines": {
1373 | "node": ">= 0.10.0"
1374 | }
1375 | },
1376 | "node_modules/universalify": {
1377 | "version": "0.1.2",
1378 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
1379 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
1380 | "dev": true,
1381 | "engines": {
1382 | "node": ">= 4.0.0"
1383 | }
1384 | },
1385 | "node_modules/update-check": {
1386 | "version": "1.5.4",
1387 | "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
1388 | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
1389 | "dev": true,
1390 | "dependencies": {
1391 | "registry-auth-token": "3.3.2",
1392 | "registry-url": "3.1.0"
1393 | }
1394 | },
1395 | "node_modules/uri-js": {
1396 | "version": "4.4.1",
1397 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1398 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1399 | "dev": true,
1400 | "dependencies": {
1401 | "punycode": "^2.1.0"
1402 | }
1403 | },
1404 | "node_modules/uri-js/node_modules/punycode": {
1405 | "version": "2.1.1",
1406 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1407 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1408 | "dev": true,
1409 | "engines": {
1410 | "node": ">=6"
1411 | }
1412 | },
1413 | "node_modules/vary": {
1414 | "version": "1.1.2",
1415 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1416 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1417 | "dev": true,
1418 | "engines": {
1419 | "node": ">= 0.8"
1420 | }
1421 | },
1422 | "node_modules/which": {
1423 | "version": "2.0.2",
1424 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1425 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1426 | "dev": true,
1427 | "dependencies": {
1428 | "isexe": "^2.0.0"
1429 | },
1430 | "bin": {
1431 | "node-which": "bin/node-which"
1432 | },
1433 | "engines": {
1434 | "node": ">= 8"
1435 | }
1436 | },
1437 | "node_modules/widest-line": {
1438 | "version": "4.0.1",
1439 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
1440 | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
1441 | "dev": true,
1442 | "dependencies": {
1443 | "string-width": "^5.0.1"
1444 | },
1445 | "engines": {
1446 | "node": ">=12"
1447 | },
1448 | "funding": {
1449 | "url": "https://github.com/sponsors/sindresorhus"
1450 | }
1451 | },
1452 | "node_modules/wrap-ansi": {
1453 | "version": "8.0.1",
1454 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
1455 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
1456 | "dev": true,
1457 | "dependencies": {
1458 | "ansi-styles": "^6.1.0",
1459 | "string-width": "^5.0.1",
1460 | "strip-ansi": "^7.0.1"
1461 | },
1462 | "engines": {
1463 | "node": ">=12"
1464 | },
1465 | "funding": {
1466 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1467 | }
1468 | },
1469 | "node_modules/wrappy": {
1470 | "version": "1.0.2",
1471 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1472 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1473 | "dev": true
1474 | }
1475 | },
1476 | "dependencies": {
1477 | "@zeit/schemas": {
1478 | "version": "2.21.0",
1479 | "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.21.0.tgz",
1480 | "integrity": "sha512-/J4WBTpWtQ4itN1rb3ao8LfClmVcmz2pO6oYb7Qd4h7VSqUhIbJIvrykz9Ew1WMg6eFWsKdsMHc5uPbFxqlCpg==",
1481 | "dev": true
1482 | },
1483 | "accepts": {
1484 | "version": "1.3.8",
1485 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
1486 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
1487 | "dev": true,
1488 | "requires": {
1489 | "mime-types": "~2.1.34",
1490 | "negotiator": "0.6.3"
1491 | }
1492 | },
1493 | "ajv": {
1494 | "version": "8.11.0",
1495 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
1496 | "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
1497 | "dev": true,
1498 | "requires": {
1499 | "fast-deep-equal": "^3.1.1",
1500 | "json-schema-traverse": "^1.0.0",
1501 | "require-from-string": "^2.0.2",
1502 | "uri-js": "^4.2.2"
1503 | }
1504 | },
1505 | "ansi-align": {
1506 | "version": "3.0.1",
1507 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
1508 | "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==",
1509 | "dev": true,
1510 | "requires": {
1511 | "string-width": "^4.1.0"
1512 | },
1513 | "dependencies": {
1514 | "ansi-regex": {
1515 | "version": "5.0.1",
1516 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1517 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1518 | "dev": true
1519 | },
1520 | "emoji-regex": {
1521 | "version": "8.0.0",
1522 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1523 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1524 | "dev": true
1525 | },
1526 | "string-width": {
1527 | "version": "4.2.3",
1528 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1529 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1530 | "dev": true,
1531 | "requires": {
1532 | "emoji-regex": "^8.0.0",
1533 | "is-fullwidth-code-point": "^3.0.0",
1534 | "strip-ansi": "^6.0.1"
1535 | }
1536 | },
1537 | "strip-ansi": {
1538 | "version": "6.0.1",
1539 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1540 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1541 | "dev": true,
1542 | "requires": {
1543 | "ansi-regex": "^5.0.1"
1544 | }
1545 | }
1546 | }
1547 | },
1548 | "ansi-regex": {
1549 | "version": "6.0.1",
1550 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
1551 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
1552 | "dev": true
1553 | },
1554 | "ansi-styles": {
1555 | "version": "6.1.0",
1556 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz",
1557 | "integrity": "sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==",
1558 | "dev": true
1559 | },
1560 | "arch": {
1561 | "version": "2.2.0",
1562 | "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
1563 | "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
1564 | "dev": true
1565 | },
1566 | "arg": {
1567 | "version": "5.0.2",
1568 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1569 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1570 | "dev": true
1571 | },
1572 | "array-union": {
1573 | "version": "1.0.2",
1574 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
1575 | "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
1576 | "dev": true,
1577 | "requires": {
1578 | "array-uniq": "^1.0.1"
1579 | }
1580 | },
1581 | "array-uniq": {
1582 | "version": "1.0.3",
1583 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
1584 | "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
1585 | "dev": true
1586 | },
1587 | "async": {
1588 | "version": "2.6.4",
1589 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
1590 | "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
1591 | "dev": true,
1592 | "requires": {
1593 | "lodash": "^4.17.14"
1594 | }
1595 | },
1596 | "balanced-match": {
1597 | "version": "1.0.2",
1598 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1599 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1600 | "dev": true
1601 | },
1602 | "boxen": {
1603 | "version": "7.0.0",
1604 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
1605 | "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
1606 | "dev": true,
1607 | "requires": {
1608 | "ansi-align": "^3.0.1",
1609 | "camelcase": "^7.0.0",
1610 | "chalk": "^5.0.1",
1611 | "cli-boxes": "^3.0.0",
1612 | "string-width": "^5.1.2",
1613 | "type-fest": "^2.13.0",
1614 | "widest-line": "^4.0.1",
1615 | "wrap-ansi": "^8.0.1"
1616 | }
1617 | },
1618 | "brace-expansion": {
1619 | "version": "1.1.11",
1620 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1621 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1622 | "dev": true,
1623 | "requires": {
1624 | "balanced-match": "^1.0.0",
1625 | "concat-map": "0.0.1"
1626 | }
1627 | },
1628 | "bytes": {
1629 | "version": "3.0.0",
1630 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
1631 | "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
1632 | "dev": true
1633 | },
1634 | "camelcase": {
1635 | "version": "7.0.0",
1636 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.0.tgz",
1637 | "integrity": "sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==",
1638 | "dev": true
1639 | },
1640 | "chalk": {
1641 | "version": "5.0.1",
1642 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
1643 | "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
1644 | "dev": true
1645 | },
1646 | "chalk-template": {
1647 | "version": "0.4.0",
1648 | "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
1649 | "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
1650 | "dev": true,
1651 | "requires": {
1652 | "chalk": "^4.1.2"
1653 | },
1654 | "dependencies": {
1655 | "ansi-styles": {
1656 | "version": "4.3.0",
1657 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1658 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1659 | "dev": true,
1660 | "requires": {
1661 | "color-convert": "^2.0.1"
1662 | }
1663 | },
1664 | "chalk": {
1665 | "version": "4.1.2",
1666 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1667 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1668 | "dev": true,
1669 | "requires": {
1670 | "ansi-styles": "^4.1.0",
1671 | "supports-color": "^7.1.0"
1672 | }
1673 | }
1674 | }
1675 | },
1676 | "cli-boxes": {
1677 | "version": "3.0.0",
1678 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
1679 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
1680 | "dev": true
1681 | },
1682 | "clipboardy": {
1683 | "version": "3.0.0",
1684 | "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
1685 | "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
1686 | "dev": true,
1687 | "requires": {
1688 | "arch": "^2.2.0",
1689 | "execa": "^5.1.1",
1690 | "is-wsl": "^2.2.0"
1691 | }
1692 | },
1693 | "color-convert": {
1694 | "version": "2.0.1",
1695 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1696 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1697 | "dev": true,
1698 | "requires": {
1699 | "color-name": "~1.1.4"
1700 | }
1701 | },
1702 | "color-name": {
1703 | "version": "1.1.4",
1704 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1705 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1706 | "dev": true
1707 | },
1708 | "commander": {
1709 | "version": "2.20.3",
1710 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
1711 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
1712 | "dev": true
1713 | },
1714 | "commondir": {
1715 | "version": "1.0.1",
1716 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
1717 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
1718 | "dev": true
1719 | },
1720 | "compressible": {
1721 | "version": "2.0.18",
1722 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
1723 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
1724 | "dev": true,
1725 | "requires": {
1726 | "mime-db": ">= 1.43.0 < 2"
1727 | }
1728 | },
1729 | "compression": {
1730 | "version": "1.7.4",
1731 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
1732 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
1733 | "dev": true,
1734 | "requires": {
1735 | "accepts": "~1.3.5",
1736 | "bytes": "3.0.0",
1737 | "compressible": "~2.0.16",
1738 | "debug": "2.6.9",
1739 | "on-headers": "~1.0.2",
1740 | "safe-buffer": "5.1.2",
1741 | "vary": "~1.1.2"
1742 | }
1743 | },
1744 | "concat-map": {
1745 | "version": "0.0.1",
1746 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1747 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
1748 | "dev": true
1749 | },
1750 | "content-disposition": {
1751 | "version": "0.5.2",
1752 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
1753 | "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
1754 | "dev": true
1755 | },
1756 | "cross-spawn": {
1757 | "version": "7.0.3",
1758 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1759 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1760 | "dev": true,
1761 | "requires": {
1762 | "path-key": "^3.1.0",
1763 | "shebang-command": "^2.0.0",
1764 | "which": "^2.0.1"
1765 | }
1766 | },
1767 | "debug": {
1768 | "version": "2.6.9",
1769 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1770 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1771 | "dev": true,
1772 | "requires": {
1773 | "ms": "2.0.0"
1774 | }
1775 | },
1776 | "deep-extend": {
1777 | "version": "0.6.0",
1778 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
1779 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
1780 | "dev": true
1781 | },
1782 | "eastasianwidth": {
1783 | "version": "0.2.0",
1784 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1785 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1786 | "dev": true
1787 | },
1788 | "email-addresses": {
1789 | "version": "3.1.0",
1790 | "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz",
1791 | "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==",
1792 | "dev": true
1793 | },
1794 | "emoji-regex": {
1795 | "version": "9.2.2",
1796 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1797 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1798 | "dev": true
1799 | },
1800 | "escape-string-regexp": {
1801 | "version": "1.0.5",
1802 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1803 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
1804 | "dev": true
1805 | },
1806 | "execa": {
1807 | "version": "5.1.1",
1808 | "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
1809 | "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
1810 | "dev": true,
1811 | "requires": {
1812 | "cross-spawn": "^7.0.3",
1813 | "get-stream": "^6.0.0",
1814 | "human-signals": "^2.1.0",
1815 | "is-stream": "^2.0.0",
1816 | "merge-stream": "^2.0.0",
1817 | "npm-run-path": "^4.0.1",
1818 | "onetime": "^5.1.2",
1819 | "signal-exit": "^3.0.3",
1820 | "strip-final-newline": "^2.0.0"
1821 | }
1822 | },
1823 | "fast-deep-equal": {
1824 | "version": "3.1.3",
1825 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1826 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1827 | "dev": true
1828 | },
1829 | "fast-url-parser": {
1830 | "version": "1.1.3",
1831 | "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
1832 | "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==",
1833 | "dev": true,
1834 | "requires": {
1835 | "punycode": "^1.3.2"
1836 | }
1837 | },
1838 | "filename-reserved-regex": {
1839 | "version": "2.0.0",
1840 | "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
1841 | "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==",
1842 | "dev": true
1843 | },
1844 | "filenamify": {
1845 | "version": "4.3.0",
1846 | "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz",
1847 | "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==",
1848 | "dev": true,
1849 | "requires": {
1850 | "filename-reserved-regex": "^2.0.0",
1851 | "strip-outer": "^1.0.1",
1852 | "trim-repeated": "^1.0.0"
1853 | }
1854 | },
1855 | "find-cache-dir": {
1856 | "version": "3.3.2",
1857 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
1858 | "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
1859 | "dev": true,
1860 | "requires": {
1861 | "commondir": "^1.0.1",
1862 | "make-dir": "^3.0.2",
1863 | "pkg-dir": "^4.1.0"
1864 | }
1865 | },
1866 | "find-up": {
1867 | "version": "4.1.0",
1868 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
1869 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
1870 | "dev": true,
1871 | "requires": {
1872 | "locate-path": "^5.0.0",
1873 | "path-exists": "^4.0.0"
1874 | }
1875 | },
1876 | "fs-extra": {
1877 | "version": "8.1.0",
1878 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
1879 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
1880 | "dev": true,
1881 | "requires": {
1882 | "graceful-fs": "^4.2.0",
1883 | "jsonfile": "^4.0.0",
1884 | "universalify": "^0.1.0"
1885 | }
1886 | },
1887 | "fs.realpath": {
1888 | "version": "1.0.0",
1889 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1890 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
1891 | "dev": true
1892 | },
1893 | "get-stream": {
1894 | "version": "6.0.1",
1895 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
1896 | "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
1897 | "dev": true
1898 | },
1899 | "gh-pages": {
1900 | "version": "4.0.0",
1901 | "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-4.0.0.tgz",
1902 | "integrity": "sha512-p8S0T3aGJc68MtwOcZusul5qPSNZCalap3NWbhRUZYu1YOdp+EjZ+4kPmRM8h3NNRdqw00yuevRjlkuSzCn7iQ==",
1903 | "dev": true,
1904 | "requires": {
1905 | "async": "^2.6.1",
1906 | "commander": "^2.18.0",
1907 | "email-addresses": "^3.0.1",
1908 | "filenamify": "^4.3.0",
1909 | "find-cache-dir": "^3.3.1",
1910 | "fs-extra": "^8.1.0",
1911 | "globby": "^6.1.0"
1912 | }
1913 | },
1914 | "glob": {
1915 | "version": "7.2.3",
1916 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1917 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1918 | "dev": true,
1919 | "requires": {
1920 | "fs.realpath": "^1.0.0",
1921 | "inflight": "^1.0.4",
1922 | "inherits": "2",
1923 | "minimatch": "^3.1.1",
1924 | "once": "^1.3.0",
1925 | "path-is-absolute": "^1.0.0"
1926 | }
1927 | },
1928 | "globby": {
1929 | "version": "6.1.0",
1930 | "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
1931 | "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
1932 | "dev": true,
1933 | "requires": {
1934 | "array-union": "^1.0.1",
1935 | "glob": "^7.0.3",
1936 | "object-assign": "^4.0.1",
1937 | "pify": "^2.0.0",
1938 | "pinkie-promise": "^2.0.0"
1939 | }
1940 | },
1941 | "graceful-fs": {
1942 | "version": "4.2.10",
1943 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
1944 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
1945 | "dev": true
1946 | },
1947 | "has-flag": {
1948 | "version": "4.0.0",
1949 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1950 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1951 | "dev": true
1952 | },
1953 | "human-signals": {
1954 | "version": "2.1.0",
1955 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
1956 | "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
1957 | "dev": true
1958 | },
1959 | "inflight": {
1960 | "version": "1.0.6",
1961 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1962 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
1963 | "dev": true,
1964 | "requires": {
1965 | "once": "^1.3.0",
1966 | "wrappy": "1"
1967 | }
1968 | },
1969 | "inherits": {
1970 | "version": "2.0.4",
1971 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1972 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1973 | "dev": true
1974 | },
1975 | "ini": {
1976 | "version": "1.3.8",
1977 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
1978 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
1979 | "dev": true
1980 | },
1981 | "is-docker": {
1982 | "version": "2.2.1",
1983 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
1984 | "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
1985 | "dev": true
1986 | },
1987 | "is-fullwidth-code-point": {
1988 | "version": "3.0.0",
1989 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1990 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1991 | "dev": true
1992 | },
1993 | "is-port-reachable": {
1994 | "version": "4.0.0",
1995 | "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
1996 | "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
1997 | "dev": true
1998 | },
1999 | "is-stream": {
2000 | "version": "2.0.1",
2001 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
2002 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
2003 | "dev": true
2004 | },
2005 | "is-wsl": {
2006 | "version": "2.2.0",
2007 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
2008 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
2009 | "dev": true,
2010 | "requires": {
2011 | "is-docker": "^2.0.0"
2012 | }
2013 | },
2014 | "isexe": {
2015 | "version": "2.0.0",
2016 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2017 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
2018 | "dev": true
2019 | },
2020 | "json-schema-traverse": {
2021 | "version": "1.0.0",
2022 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
2023 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
2024 | "dev": true
2025 | },
2026 | "jsonfile": {
2027 | "version": "4.0.0",
2028 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
2029 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
2030 | "dev": true,
2031 | "requires": {
2032 | "graceful-fs": "^4.1.6"
2033 | }
2034 | },
2035 | "jsverify": {
2036 | "version": "0.8.4",
2037 | "resolved": "https://registry.npmjs.org/jsverify/-/jsverify-0.8.4.tgz",
2038 | "integrity": "sha512-nUG73Sfi8L4eOkc7pv9sflgAm43v+z6XMuePGVdRoBUxBLJiVcMcf3Xgc4h19eHHF3JwsaagOkUu825UnPBLJw==",
2039 | "dev": true,
2040 | "requires": {
2041 | "lazy-seq": "^1.0.0",
2042 | "rc4": "~0.1.5",
2043 | "trampa": "^1.0.0",
2044 | "typify-parser": "^1.1.0"
2045 | }
2046 | },
2047 | "lazy-seq": {
2048 | "version": "1.0.0",
2049 | "resolved": "https://registry.npmjs.org/lazy-seq/-/lazy-seq-1.0.0.tgz",
2050 | "integrity": "sha512-AQ4vRcnULa7FX6R6YTAjKQAE1MuEThidVQm0TEtTpedaBpnOwid5k6go16E5NDkafel1xAsZL73WkwdG03IzhA==",
2051 | "dev": true
2052 | },
2053 | "locate-path": {
2054 | "version": "5.0.0",
2055 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
2056 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
2057 | "dev": true,
2058 | "requires": {
2059 | "p-locate": "^4.1.0"
2060 | }
2061 | },
2062 | "lodash": {
2063 | "version": "4.17.21",
2064 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
2065 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
2066 | "dev": true
2067 | },
2068 | "make-dir": {
2069 | "version": "3.1.0",
2070 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
2071 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
2072 | "dev": true,
2073 | "requires": {
2074 | "semver": "^6.0.0"
2075 | }
2076 | },
2077 | "merge-stream": {
2078 | "version": "2.0.0",
2079 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
2080 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
2081 | "dev": true
2082 | },
2083 | "mime-db": {
2084 | "version": "1.52.0",
2085 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
2086 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
2087 | "dev": true
2088 | },
2089 | "mime-types": {
2090 | "version": "2.1.35",
2091 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
2092 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
2093 | "dev": true,
2094 | "requires": {
2095 | "mime-db": "1.52.0"
2096 | }
2097 | },
2098 | "mimic-fn": {
2099 | "version": "2.1.0",
2100 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
2101 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
2102 | "dev": true
2103 | },
2104 | "minimatch": {
2105 | "version": "3.1.2",
2106 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
2107 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
2108 | "dev": true,
2109 | "requires": {
2110 | "brace-expansion": "^1.1.7"
2111 | }
2112 | },
2113 | "minimist": {
2114 | "version": "1.2.6",
2115 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
2116 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
2117 | "dev": true
2118 | },
2119 | "ms": {
2120 | "version": "2.0.0",
2121 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2122 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
2123 | "dev": true
2124 | },
2125 | "negotiator": {
2126 | "version": "0.6.3",
2127 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
2128 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
2129 | "dev": true
2130 | },
2131 | "npm-run-path": {
2132 | "version": "4.0.1",
2133 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
2134 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
2135 | "dev": true,
2136 | "requires": {
2137 | "path-key": "^3.0.0"
2138 | }
2139 | },
2140 | "object-assign": {
2141 | "version": "4.1.1",
2142 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2143 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
2144 | "dev": true
2145 | },
2146 | "on-headers": {
2147 | "version": "1.0.2",
2148 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
2149 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
2150 | "dev": true
2151 | },
2152 | "once": {
2153 | "version": "1.4.0",
2154 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2155 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
2156 | "dev": true,
2157 | "requires": {
2158 | "wrappy": "1"
2159 | }
2160 | },
2161 | "onetime": {
2162 | "version": "5.1.2",
2163 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
2164 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
2165 | "dev": true,
2166 | "requires": {
2167 | "mimic-fn": "^2.1.0"
2168 | }
2169 | },
2170 | "p-limit": {
2171 | "version": "2.3.0",
2172 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
2173 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
2174 | "dev": true,
2175 | "requires": {
2176 | "p-try": "^2.0.0"
2177 | }
2178 | },
2179 | "p-locate": {
2180 | "version": "4.1.0",
2181 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
2182 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
2183 | "dev": true,
2184 | "requires": {
2185 | "p-limit": "^2.2.0"
2186 | }
2187 | },
2188 | "p-try": {
2189 | "version": "2.2.0",
2190 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
2191 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
2192 | "dev": true
2193 | },
2194 | "path-exists": {
2195 | "version": "4.0.0",
2196 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2197 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2198 | "dev": true
2199 | },
2200 | "path-is-absolute": {
2201 | "version": "1.0.1",
2202 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2203 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
2204 | "dev": true
2205 | },
2206 | "path-is-inside": {
2207 | "version": "1.0.2",
2208 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
2209 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
2210 | "dev": true
2211 | },
2212 | "path-key": {
2213 | "version": "3.1.1",
2214 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2215 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
2216 | "dev": true
2217 | },
2218 | "path-to-regexp": {
2219 | "version": "2.2.1",
2220 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
2221 | "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==",
2222 | "dev": true
2223 | },
2224 | "pify": {
2225 | "version": "2.3.0",
2226 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2227 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
2228 | "dev": true
2229 | },
2230 | "pinkie": {
2231 | "version": "2.0.4",
2232 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
2233 | "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
2234 | "dev": true
2235 | },
2236 | "pinkie-promise": {
2237 | "version": "2.0.1",
2238 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
2239 | "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
2240 | "dev": true,
2241 | "requires": {
2242 | "pinkie": "^2.0.0"
2243 | }
2244 | },
2245 | "pkg-dir": {
2246 | "version": "4.2.0",
2247 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
2248 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
2249 | "dev": true,
2250 | "requires": {
2251 | "find-up": "^4.0.0"
2252 | }
2253 | },
2254 | "punycode": {
2255 | "version": "1.4.1",
2256 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
2257 | "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
2258 | "dev": true
2259 | },
2260 | "range-parser": {
2261 | "version": "1.2.0",
2262 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
2263 | "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
2264 | "dev": true
2265 | },
2266 | "rc": {
2267 | "version": "1.2.8",
2268 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
2269 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
2270 | "dev": true,
2271 | "requires": {
2272 | "deep-extend": "^0.6.0",
2273 | "ini": "~1.3.0",
2274 | "minimist": "^1.2.0",
2275 | "strip-json-comments": "~2.0.1"
2276 | }
2277 | },
2278 | "rc4": {
2279 | "version": "0.1.5",
2280 | "resolved": "https://registry.npmjs.org/rc4/-/rc4-0.1.5.tgz",
2281 | "integrity": "sha512-xdDTNV90z5x5u25Oc871Xnvu7yAr4tV7Eluh0VSvrhUkry39q1k+zkz7xroqHbRq+8PiazySHJPArqifUvz9VA==",
2282 | "dev": true
2283 | },
2284 | "registry-auth-token": {
2285 | "version": "3.3.2",
2286 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
2287 | "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
2288 | "dev": true,
2289 | "requires": {
2290 | "rc": "^1.1.6",
2291 | "safe-buffer": "^5.0.1"
2292 | }
2293 | },
2294 | "registry-url": {
2295 | "version": "3.1.0",
2296 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
2297 | "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
2298 | "dev": true,
2299 | "requires": {
2300 | "rc": "^1.0.1"
2301 | }
2302 | },
2303 | "require-from-string": {
2304 | "version": "2.0.2",
2305 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
2306 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
2307 | "dev": true
2308 | },
2309 | "safe-buffer": {
2310 | "version": "5.1.2",
2311 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2312 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2313 | "dev": true
2314 | },
2315 | "semver": {
2316 | "version": "6.3.0",
2317 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
2318 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
2319 | "dev": true
2320 | },
2321 | "serve": {
2322 | "version": "14.0.1",
2323 | "resolved": "https://registry.npmjs.org/serve/-/serve-14.0.1.tgz",
2324 | "integrity": "sha512-tNGwxl27FwA8TbmMQqN0jTaSx8/trL532qZsJHX1VdiEIjjtMJHCs7AFS6OvtC7cTHOvmjXqt5yczejU6CV2Xg==",
2325 | "dev": true,
2326 | "requires": {
2327 | "@zeit/schemas": "2.21.0",
2328 | "ajv": "8.11.0",
2329 | "arg": "5.0.2",
2330 | "boxen": "7.0.0",
2331 | "chalk": "5.0.1",
2332 | "chalk-template": "0.4.0",
2333 | "clipboardy": "3.0.0",
2334 | "compression": "1.7.4",
2335 | "is-port-reachable": "4.0.0",
2336 | "serve-handler": "6.1.3",
2337 | "update-check": "1.5.4"
2338 | }
2339 | },
2340 | "serve-handler": {
2341 | "version": "6.1.3",
2342 | "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz",
2343 | "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==",
2344 | "dev": true,
2345 | "requires": {
2346 | "bytes": "3.0.0",
2347 | "content-disposition": "0.5.2",
2348 | "fast-url-parser": "1.1.3",
2349 | "mime-types": "2.1.18",
2350 | "minimatch": "3.0.4",
2351 | "path-is-inside": "1.0.2",
2352 | "path-to-regexp": "2.2.1",
2353 | "range-parser": "1.2.0"
2354 | },
2355 | "dependencies": {
2356 | "mime-db": {
2357 | "version": "1.33.0",
2358 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
2359 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
2360 | "dev": true
2361 | },
2362 | "mime-types": {
2363 | "version": "2.1.18",
2364 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
2365 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
2366 | "dev": true,
2367 | "requires": {
2368 | "mime-db": "~1.33.0"
2369 | }
2370 | },
2371 | "minimatch": {
2372 | "version": "3.0.4",
2373 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2374 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2375 | "dev": true,
2376 | "requires": {
2377 | "brace-expansion": "^1.1.7"
2378 | }
2379 | }
2380 | }
2381 | },
2382 | "shebang-command": {
2383 | "version": "2.0.0",
2384 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2385 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2386 | "dev": true,
2387 | "requires": {
2388 | "shebang-regex": "^3.0.0"
2389 | }
2390 | },
2391 | "shebang-regex": {
2392 | "version": "3.0.0",
2393 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2394 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2395 | "dev": true
2396 | },
2397 | "shuffle-array": {
2398 | "version": "1.0.1",
2399 | "resolved": "https://registry.npmjs.org/shuffle-array/-/shuffle-array-1.0.1.tgz",
2400 | "integrity": "sha512-0TFRU8zVQaLatWKr0/czo19VyPNgb/a3sBc1GAjVfivfzEGaS54vueNgtAu/8/pW7EM/VF5fwq9zgpLdGyRmVw==",
2401 | "dev": true
2402 | },
2403 | "signal-exit": {
2404 | "version": "3.0.7",
2405 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
2406 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
2407 | "dev": true
2408 | },
2409 | "string-width": {
2410 | "version": "5.1.2",
2411 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
2412 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
2413 | "dev": true,
2414 | "requires": {
2415 | "eastasianwidth": "^0.2.0",
2416 | "emoji-regex": "^9.2.2",
2417 | "strip-ansi": "^7.0.1"
2418 | }
2419 | },
2420 | "strip-ansi": {
2421 | "version": "7.0.1",
2422 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz",
2423 | "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==",
2424 | "dev": true,
2425 | "requires": {
2426 | "ansi-regex": "^6.0.1"
2427 | }
2428 | },
2429 | "strip-final-newline": {
2430 | "version": "2.0.0",
2431 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
2432 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
2433 | "dev": true
2434 | },
2435 | "strip-json-comments": {
2436 | "version": "2.0.1",
2437 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
2438 | "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
2439 | "dev": true
2440 | },
2441 | "strip-outer": {
2442 | "version": "1.0.1",
2443 | "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz",
2444 | "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==",
2445 | "dev": true,
2446 | "requires": {
2447 | "escape-string-regexp": "^1.0.2"
2448 | }
2449 | },
2450 | "supports-color": {
2451 | "version": "7.2.0",
2452 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2453 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2454 | "dev": true,
2455 | "requires": {
2456 | "has-flag": "^4.0.0"
2457 | }
2458 | },
2459 | "trampa": {
2460 | "version": "1.0.1",
2461 | "resolved": "https://registry.npmjs.org/trampa/-/trampa-1.0.1.tgz",
2462 | "integrity": "sha512-93WeyHNuRggPEsfCe+yHxCgM2s6H3Q8Wmlt6b6ObJL8qc7eZlRaFjQxwTrB+zbvGtlDRnAkMoYYo3+2uH/fEwA==",
2463 | "dev": true
2464 | },
2465 | "trim-repeated": {
2466 | "version": "1.0.0",
2467 | "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
2468 | "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==",
2469 | "dev": true,
2470 | "requires": {
2471 | "escape-string-regexp": "^1.0.2"
2472 | }
2473 | },
2474 | "type-fest": {
2475 | "version": "2.17.0",
2476 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.17.0.tgz",
2477 | "integrity": "sha512-U+g3/JVXnOki1kLSc+xZGPRll3Ah9u2VIG6Sn9iH9YX6UkPERmt6O/0fIyTgsd2/whV0+gAaHAg8fz6sG1QzMA==",
2478 | "dev": true
2479 | },
2480 | "typify-parser": {
2481 | "version": "1.1.0",
2482 | "resolved": "https://registry.npmjs.org/typify-parser/-/typify-parser-1.1.0.tgz",
2483 | "integrity": "sha512-p5+L1sc6Al3bcStMwiZNxDh4ii4JxL+famEbSIUuOUMVoNn9Nz27AT1jL3x7poMHxqKK0UQIUAp5lGkKbyKkFA==",
2484 | "dev": true
2485 | },
2486 | "universalify": {
2487 | "version": "0.1.2",
2488 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
2489 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
2490 | "dev": true
2491 | },
2492 | "update-check": {
2493 | "version": "1.5.4",
2494 | "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
2495 | "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
2496 | "dev": true,
2497 | "requires": {
2498 | "registry-auth-token": "3.3.2",
2499 | "registry-url": "3.1.0"
2500 | }
2501 | },
2502 | "uri-js": {
2503 | "version": "4.4.1",
2504 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2505 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2506 | "dev": true,
2507 | "requires": {
2508 | "punycode": "^2.1.0"
2509 | },
2510 | "dependencies": {
2511 | "punycode": {
2512 | "version": "2.1.1",
2513 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2514 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
2515 | "dev": true
2516 | }
2517 | }
2518 | },
2519 | "vary": {
2520 | "version": "1.1.2",
2521 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
2522 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
2523 | "dev": true
2524 | },
2525 | "which": {
2526 | "version": "2.0.2",
2527 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2528 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2529 | "dev": true,
2530 | "requires": {
2531 | "isexe": "^2.0.0"
2532 | }
2533 | },
2534 | "widest-line": {
2535 | "version": "4.0.1",
2536 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz",
2537 | "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==",
2538 | "dev": true,
2539 | "requires": {
2540 | "string-width": "^5.0.1"
2541 | }
2542 | },
2543 | "wrap-ansi": {
2544 | "version": "8.0.1",
2545 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.0.1.tgz",
2546 | "integrity": "sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==",
2547 | "dev": true,
2548 | "requires": {
2549 | "ansi-styles": "^6.1.0",
2550 | "string-width": "^5.0.1",
2551 | "strip-ansi": "^7.0.1"
2552 | }
2553 | },
2554 | "wrappy": {
2555 | "version": "1.0.2",
2556 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2557 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
2558 | "dev": true
2559 | }
2560 | }
2561 | }
2562 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sss-wasm",
3 | "version": "0.4.0",
4 | "description": "wasm bindings for the sss secret sharing library",
5 | "author": "Bakaoh",
6 | "type": "module",
7 | "repository": "https://github.com/3box/sss-wasm.git",
8 | "license": "Apache-2.0",
9 | "main": "lib/node.js",
10 | "module": "lib/node.js",
11 | "browser": "lib/index.js",
12 | "types": "lib/index.d.ts",
13 | "exports": {
14 | "node": "./lib/node.js",
15 | "default": "./lib/index.js"
16 | },
17 | "files": [
18 | "lib/"
19 | ],
20 | "devDependencies": {
21 | "gh-pages": "^4.0.0",
22 | "jsverify": "^0.8.4",
23 | "serve": "^14.0.1",
24 | "shuffle-array": "1.0"
25 | },
26 | "scripts": {
27 | "build": "emcc -O3 -s WASM=1 -s EXPORT_ES6=1 -s MODULARIZE=1 -s EXPORT_NAME=\"Wrapper\" -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\"]' -I sss lib/wrapper.c sss/hazmat.c sss/tweetnacl.c sss/sss.c lib/randombytes.c -o lib/gen/wrapper.js",
28 | "test": "node ./test/test.js",
29 | "deploy": "gh-pages -d example",
30 | "serve": "serve ."
31 | },
32 | "homepage": "https://github.com/3box/sss-wasm#readme"
33 | }
34 |
--------------------------------------------------------------------------------
/test/test.js:
--------------------------------------------------------------------------------
1 | import * as sss from '../lib/node.js'
2 | import jsc from 'jsverify'
3 | import shuffle from 'shuffle-array'
4 |
5 | const data = Buffer.alloc(64, 0x42);
6 | const key = data.slice(32);
7 |
8 | let standardOperation = jsc.forall(jsc.integer(1, 255), jsc.integer(1, 255),
9 | jsc.integer(1, 255), (n, k, k2) => {
10 | // We can't really test anything if not n is not larger than k and k2
11 | if (k > n || k2 > n) return true;
12 | let sharesP = sss.createShares(data, n, k);
13 | let restoredP = sharesP.then(shares => {
14 | let newShares = shuffle(shares).slice(0, k2);
15 | return sss.combineShares(newShares);
16 | });
17 | return restoredP.then((restored) => {
18 | return (k2 >= k) && Buffer.from(restored).equals(data);
19 | }).catch((error) => {
20 | return k2 < k;
21 | });
22 | });
23 |
24 | let hazmatOperation = jsc.forall(jsc.integer(1, 255), jsc.integer(1, 255),
25 | jsc.integer(1, 255), (n, k, k2) => {
26 | // Unable to test if `k` or `k2` is larger than `n`
27 | if (k > n || k2 > n) return true;
28 | let keysharesP = sss.createKeyshares(key, n, k);
29 | let restoredP = keysharesP.then((keyshares) => {
30 | let newKeyshares = shuffle(keyshares).slice(0, k2);
31 | return sss.combineKeyshares(newKeyshares);
32 | });
33 | return restoredP.then((restored) => {
34 | return (k2 >= k) === Buffer.from(restored).equals(key);
35 | });
36 | });
37 |
38 | jsc.check(standardOperation, { tests: 1000 });
39 | jsc.check(hazmatOperation, { tests: 1000 });
40 |
--------------------------------------------------------------------------------