├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── demo.gif
├── dist
└── index.html
├── package-lock.json
├── package.json
├── src
├── css
│ ├── index.css
│ └── layout.css
└── js
│ ├── Sudoku.js
│ ├── SudokuGenerator.js
│ ├── SudokuRenderer.js
│ ├── SudokuSolver.js
│ ├── Util.js
│ └── index.js
└── webpack.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 |
84 | # Gatsby files
85 | .cache/
86 | # Comment in the public line in if your project uses Gatsby and not Next.js
87 | # https://nextjs.org/blog/next-9-1#public-directory-support
88 | # public
89 |
90 | # vuepress build output
91 | .vuepress/dist
92 |
93 | # Serverless directories
94 | .serverless/
95 |
96 | # FuseBox cache
97 | .fusebox/
98 |
99 | # DynamoDB Local files
100 | .dynamodb/
101 |
102 | # TernJS port file
103 | .tern-port
104 |
105 | # Stores VSCode versions used for testing VSCode extensions
106 | .vscode-test
107 |
108 | # VSCode settings
109 | .vscode/
110 |
111 | # deploy script
112 | deploy.sh
113 |
114 | # dist bundle.js
115 | dist/bundle.js
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 12.13.0
4 | cache:
5 | - npm
6 |
7 | install:
8 | - npm install
9 |
10 | script:
11 | - npm run build
12 |
13 | deploy:
14 | provider: pages
15 | skip_cleanup: true
16 | github_token: $GITHUB_TOKEN
17 | keep_history: true
18 | local_dir: dist
19 | on:
20 | branch: master
21 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Luis De Anda
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 | # Sudoku Solver Visualizer
2 | [](https://travis-ci.org/nibble-4bits/Sudoku-Solver-Visualizer)
3 |
4 | A web application to visualize sudoku solving using backtracking. I created this visualization tool to see the backtracking algorithm in action. I hope this may help a few people out there understand how backtracking works!
5 |
6 | ## Live Demo
7 | https://nibble-4bits.github.io/Sudoku-Solver-Visualizer/
8 |
9 | 
10 |
11 | ## To Do
12 | - [x] Add styling to the app to make it more appealing (DONE, 2/12/2020)
13 | - [x] Implement functionality for the user to be able to fill the sudoku cells (DONE, 2/11/2020)
14 | - [x] Implement functionality to generate sudokus (DONE, 2/20/2020)
15 |
16 | ## Built With
17 | * [Bootstrap](https://getbootstrap.com/) (formerly, now uses CSS Grid)
18 | * [CSS Grid](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout)
19 | * [Lodash](https://lodash.com/)
20 | * [Webpack](https://webpack.js.org/)
21 | * [Travis CI](https://travis-ci.org/)
22 |
23 | ## Acknowledgments
24 | * I was greatly inspired by [Clément Mihailescu](https://www.youtube.com/channel/UCaO6VoaYJv4kS-TQO_M-N_g) and his awesome pathfinder visualizer tool! You can check it [here](https://github.com/clementmihailescu/Pathfinding-Visualizer)
25 |
26 | ## License
27 | [MIT](https://choosealicense.com/licenses/mit/)
28 |
--------------------------------------------------------------------------------
/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nibble-4bits/Sudoku-Solver-Visualizer/4586f2a0df3a617f9c9152d5a25a6d027e37fd95/demo.gif
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Sudoku Solver Visualizer
9 |
10 |
11 |
12 |
13 |
14 |
Sudoku Solver
15 |
16 |
17 |
18 |
21 |
22 |
23 |
24 |
25 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Sudoku-Solver-Visualizer",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@webassemblyjs/ast": {
8 | "version": "1.8.5",
9 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
10 | "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
11 | "dev": true,
12 | "requires": {
13 | "@webassemblyjs/helper-module-context": "1.8.5",
14 | "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
15 | "@webassemblyjs/wast-parser": "1.8.5"
16 | }
17 | },
18 | "@webassemblyjs/floating-point-hex-parser": {
19 | "version": "1.8.5",
20 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
21 | "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
22 | "dev": true
23 | },
24 | "@webassemblyjs/helper-api-error": {
25 | "version": "1.8.5",
26 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
27 | "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
28 | "dev": true
29 | },
30 | "@webassemblyjs/helper-buffer": {
31 | "version": "1.8.5",
32 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
33 | "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
34 | "dev": true
35 | },
36 | "@webassemblyjs/helper-code-frame": {
37 | "version": "1.8.5",
38 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
39 | "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
40 | "dev": true,
41 | "requires": {
42 | "@webassemblyjs/wast-printer": "1.8.5"
43 | }
44 | },
45 | "@webassemblyjs/helper-fsm": {
46 | "version": "1.8.5",
47 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
48 | "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
49 | "dev": true
50 | },
51 | "@webassemblyjs/helper-module-context": {
52 | "version": "1.8.5",
53 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
54 | "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
55 | "dev": true,
56 | "requires": {
57 | "@webassemblyjs/ast": "1.8.5",
58 | "mamacro": "^0.0.3"
59 | }
60 | },
61 | "@webassemblyjs/helper-wasm-bytecode": {
62 | "version": "1.8.5",
63 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
64 | "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
65 | "dev": true
66 | },
67 | "@webassemblyjs/helper-wasm-section": {
68 | "version": "1.8.5",
69 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
70 | "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
71 | "dev": true,
72 | "requires": {
73 | "@webassemblyjs/ast": "1.8.5",
74 | "@webassemblyjs/helper-buffer": "1.8.5",
75 | "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
76 | "@webassemblyjs/wasm-gen": "1.8.5"
77 | }
78 | },
79 | "@webassemblyjs/ieee754": {
80 | "version": "1.8.5",
81 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
82 | "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
83 | "dev": true,
84 | "requires": {
85 | "@xtuc/ieee754": "^1.2.0"
86 | }
87 | },
88 | "@webassemblyjs/leb128": {
89 | "version": "1.8.5",
90 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
91 | "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
92 | "dev": true,
93 | "requires": {
94 | "@xtuc/long": "4.2.2"
95 | }
96 | },
97 | "@webassemblyjs/utf8": {
98 | "version": "1.8.5",
99 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
100 | "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
101 | "dev": true
102 | },
103 | "@webassemblyjs/wasm-edit": {
104 | "version": "1.8.5",
105 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
106 | "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
107 | "dev": true,
108 | "requires": {
109 | "@webassemblyjs/ast": "1.8.5",
110 | "@webassemblyjs/helper-buffer": "1.8.5",
111 | "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
112 | "@webassemblyjs/helper-wasm-section": "1.8.5",
113 | "@webassemblyjs/wasm-gen": "1.8.5",
114 | "@webassemblyjs/wasm-opt": "1.8.5",
115 | "@webassemblyjs/wasm-parser": "1.8.5",
116 | "@webassemblyjs/wast-printer": "1.8.5"
117 | }
118 | },
119 | "@webassemblyjs/wasm-gen": {
120 | "version": "1.8.5",
121 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
122 | "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
123 | "dev": true,
124 | "requires": {
125 | "@webassemblyjs/ast": "1.8.5",
126 | "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
127 | "@webassemblyjs/ieee754": "1.8.5",
128 | "@webassemblyjs/leb128": "1.8.5",
129 | "@webassemblyjs/utf8": "1.8.5"
130 | }
131 | },
132 | "@webassemblyjs/wasm-opt": {
133 | "version": "1.8.5",
134 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
135 | "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
136 | "dev": true,
137 | "requires": {
138 | "@webassemblyjs/ast": "1.8.5",
139 | "@webassemblyjs/helper-buffer": "1.8.5",
140 | "@webassemblyjs/wasm-gen": "1.8.5",
141 | "@webassemblyjs/wasm-parser": "1.8.5"
142 | }
143 | },
144 | "@webassemblyjs/wasm-parser": {
145 | "version": "1.8.5",
146 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
147 | "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
148 | "dev": true,
149 | "requires": {
150 | "@webassemblyjs/ast": "1.8.5",
151 | "@webassemblyjs/helper-api-error": "1.8.5",
152 | "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
153 | "@webassemblyjs/ieee754": "1.8.5",
154 | "@webassemblyjs/leb128": "1.8.5",
155 | "@webassemblyjs/utf8": "1.8.5"
156 | }
157 | },
158 | "@webassemblyjs/wast-parser": {
159 | "version": "1.8.5",
160 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
161 | "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
162 | "dev": true,
163 | "requires": {
164 | "@webassemblyjs/ast": "1.8.5",
165 | "@webassemblyjs/floating-point-hex-parser": "1.8.5",
166 | "@webassemblyjs/helper-api-error": "1.8.5",
167 | "@webassemblyjs/helper-code-frame": "1.8.5",
168 | "@webassemblyjs/helper-fsm": "1.8.5",
169 | "@xtuc/long": "4.2.2"
170 | }
171 | },
172 | "@webassemblyjs/wast-printer": {
173 | "version": "1.8.5",
174 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
175 | "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
176 | "dev": true,
177 | "requires": {
178 | "@webassemblyjs/ast": "1.8.5",
179 | "@webassemblyjs/wast-parser": "1.8.5",
180 | "@xtuc/long": "4.2.2"
181 | }
182 | },
183 | "@xtuc/ieee754": {
184 | "version": "1.2.0",
185 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
186 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
187 | "dev": true
188 | },
189 | "@xtuc/long": {
190 | "version": "4.2.2",
191 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
192 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
193 | "dev": true
194 | },
195 | "acorn": {
196 | "version": "6.4.1",
197 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
198 | "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
199 | "dev": true
200 | },
201 | "ajv": {
202 | "version": "6.12.6",
203 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
204 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
205 | "dev": true,
206 | "requires": {
207 | "fast-deep-equal": "^3.1.1",
208 | "fast-json-stable-stringify": "^2.0.0",
209 | "json-schema-traverse": "^0.4.1",
210 | "uri-js": "^4.2.2"
211 | }
212 | },
213 | "ajv-errors": {
214 | "version": "1.0.1",
215 | "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
216 | "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
217 | "dev": true
218 | },
219 | "ajv-keywords": {
220 | "version": "3.4.1",
221 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
222 | "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
223 | "dev": true
224 | },
225 | "ansi-regex": {
226 | "version": "4.1.1",
227 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
228 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
229 | "dev": true
230 | },
231 | "ansi-styles": {
232 | "version": "3.2.1",
233 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
234 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
235 | "dev": true,
236 | "requires": {
237 | "color-convert": "^1.9.0"
238 | }
239 | },
240 | "anymatch": {
241 | "version": "2.0.0",
242 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
243 | "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
244 | "dev": true,
245 | "requires": {
246 | "micromatch": "^3.1.4",
247 | "normalize-path": "^2.1.1"
248 | },
249 | "dependencies": {
250 | "normalize-path": {
251 | "version": "2.1.1",
252 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
253 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
254 | "dev": true,
255 | "requires": {
256 | "remove-trailing-separator": "^1.0.1"
257 | }
258 | }
259 | }
260 | },
261 | "aproba": {
262 | "version": "1.2.0",
263 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
264 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
265 | "dev": true
266 | },
267 | "arr-diff": {
268 | "version": "4.0.0",
269 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
270 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
271 | "dev": true
272 | },
273 | "arr-flatten": {
274 | "version": "1.1.0",
275 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
276 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
277 | "dev": true
278 | },
279 | "arr-union": {
280 | "version": "3.1.0",
281 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
282 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
283 | "dev": true
284 | },
285 | "array-unique": {
286 | "version": "0.3.2",
287 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
288 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
289 | "dev": true
290 | },
291 | "asn1.js": {
292 | "version": "4.10.1",
293 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
294 | "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
295 | "dev": true,
296 | "requires": {
297 | "bn.js": "^4.0.0",
298 | "inherits": "^2.0.1",
299 | "minimalistic-assert": "^1.0.0"
300 | }
301 | },
302 | "assert": {
303 | "version": "1.5.0",
304 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
305 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
306 | "dev": true,
307 | "requires": {
308 | "object-assign": "^4.1.1",
309 | "util": "0.10.3"
310 | },
311 | "dependencies": {
312 | "inherits": {
313 | "version": "2.0.1",
314 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
315 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
316 | "dev": true
317 | },
318 | "util": {
319 | "version": "0.10.3",
320 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
321 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
322 | "dev": true,
323 | "requires": {
324 | "inherits": "2.0.1"
325 | }
326 | }
327 | }
328 | },
329 | "assign-symbols": {
330 | "version": "1.0.0",
331 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
332 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
333 | "dev": true
334 | },
335 | "async-each": {
336 | "version": "1.0.3",
337 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
338 | "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
339 | "dev": true
340 | },
341 | "atob": {
342 | "version": "2.1.2",
343 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
344 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
345 | "dev": true
346 | },
347 | "balanced-match": {
348 | "version": "1.0.0",
349 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
350 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
351 | "dev": true
352 | },
353 | "base": {
354 | "version": "0.11.2",
355 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
356 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
357 | "dev": true,
358 | "requires": {
359 | "cache-base": "^1.0.1",
360 | "class-utils": "^0.3.5",
361 | "component-emitter": "^1.2.1",
362 | "define-property": "^1.0.0",
363 | "isobject": "^3.0.1",
364 | "mixin-deep": "^1.2.0",
365 | "pascalcase": "^0.1.1"
366 | },
367 | "dependencies": {
368 | "define-property": {
369 | "version": "1.0.0",
370 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
371 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
372 | "dev": true,
373 | "requires": {
374 | "is-descriptor": "^1.0.0"
375 | }
376 | },
377 | "is-accessor-descriptor": {
378 | "version": "1.0.0",
379 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
380 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
381 | "dev": true,
382 | "requires": {
383 | "kind-of": "^6.0.0"
384 | }
385 | },
386 | "is-data-descriptor": {
387 | "version": "1.0.0",
388 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
389 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
390 | "dev": true,
391 | "requires": {
392 | "kind-of": "^6.0.0"
393 | }
394 | },
395 | "is-descriptor": {
396 | "version": "1.0.2",
397 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
398 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
399 | "dev": true,
400 | "requires": {
401 | "is-accessor-descriptor": "^1.0.0",
402 | "is-data-descriptor": "^1.0.0",
403 | "kind-of": "^6.0.2"
404 | }
405 | }
406 | }
407 | },
408 | "base64-js": {
409 | "version": "1.3.1",
410 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
411 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
412 | "dev": true
413 | },
414 | "big.js": {
415 | "version": "5.2.2",
416 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
417 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
418 | "dev": true
419 | },
420 | "binary-extensions": {
421 | "version": "1.13.1",
422 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
423 | "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
424 | "dev": true
425 | },
426 | "bindings": {
427 | "version": "1.5.0",
428 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
429 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
430 | "dev": true,
431 | "optional": true,
432 | "requires": {
433 | "file-uri-to-path": "1.0.0"
434 | }
435 | },
436 | "bluebird": {
437 | "version": "3.7.2",
438 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
439 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
440 | "dev": true
441 | },
442 | "bn.js": {
443 | "version": "4.11.8",
444 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
445 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
446 | "dev": true
447 | },
448 | "brace-expansion": {
449 | "version": "1.1.11",
450 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
451 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
452 | "dev": true,
453 | "requires": {
454 | "balanced-match": "^1.0.0",
455 | "concat-map": "0.0.1"
456 | }
457 | },
458 | "braces": {
459 | "version": "2.3.2",
460 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
461 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
462 | "dev": true,
463 | "requires": {
464 | "arr-flatten": "^1.1.0",
465 | "array-unique": "^0.3.2",
466 | "extend-shallow": "^2.0.1",
467 | "fill-range": "^4.0.0",
468 | "isobject": "^3.0.1",
469 | "repeat-element": "^1.1.2",
470 | "snapdragon": "^0.8.1",
471 | "snapdragon-node": "^2.0.1",
472 | "split-string": "^3.0.2",
473 | "to-regex": "^3.0.1"
474 | },
475 | "dependencies": {
476 | "extend-shallow": {
477 | "version": "2.0.1",
478 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
479 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
480 | "dev": true,
481 | "requires": {
482 | "is-extendable": "^0.1.0"
483 | }
484 | }
485 | }
486 | },
487 | "brorand": {
488 | "version": "1.1.0",
489 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
490 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
491 | "dev": true
492 | },
493 | "browserify-aes": {
494 | "version": "1.2.0",
495 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
496 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
497 | "dev": true,
498 | "requires": {
499 | "buffer-xor": "^1.0.3",
500 | "cipher-base": "^1.0.0",
501 | "create-hash": "^1.1.0",
502 | "evp_bytestokey": "^1.0.3",
503 | "inherits": "^2.0.1",
504 | "safe-buffer": "^5.0.1"
505 | }
506 | },
507 | "browserify-cipher": {
508 | "version": "1.0.1",
509 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
510 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
511 | "dev": true,
512 | "requires": {
513 | "browserify-aes": "^1.0.4",
514 | "browserify-des": "^1.0.0",
515 | "evp_bytestokey": "^1.0.0"
516 | }
517 | },
518 | "browserify-des": {
519 | "version": "1.0.2",
520 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
521 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
522 | "dev": true,
523 | "requires": {
524 | "cipher-base": "^1.0.1",
525 | "des.js": "^1.0.0",
526 | "inherits": "^2.0.1",
527 | "safe-buffer": "^5.1.2"
528 | }
529 | },
530 | "browserify-rsa": {
531 | "version": "4.0.1",
532 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
533 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
534 | "dev": true,
535 | "requires": {
536 | "bn.js": "^4.1.0",
537 | "randombytes": "^2.0.1"
538 | }
539 | },
540 | "browserify-sign": {
541 | "version": "4.0.4",
542 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
543 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
544 | "dev": true,
545 | "requires": {
546 | "bn.js": "^4.1.1",
547 | "browserify-rsa": "^4.0.0",
548 | "create-hash": "^1.1.0",
549 | "create-hmac": "^1.1.2",
550 | "elliptic": "^6.0.0",
551 | "inherits": "^2.0.1",
552 | "parse-asn1": "^5.0.0"
553 | }
554 | },
555 | "browserify-zlib": {
556 | "version": "0.2.0",
557 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
558 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
559 | "dev": true,
560 | "requires": {
561 | "pako": "~1.0.5"
562 | }
563 | },
564 | "buffer": {
565 | "version": "4.9.2",
566 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
567 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
568 | "dev": true,
569 | "requires": {
570 | "base64-js": "^1.0.2",
571 | "ieee754": "^1.1.4",
572 | "isarray": "^1.0.0"
573 | }
574 | },
575 | "buffer-from": {
576 | "version": "1.1.1",
577 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
578 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
579 | "dev": true
580 | },
581 | "buffer-xor": {
582 | "version": "1.0.3",
583 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
584 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
585 | "dev": true
586 | },
587 | "builtin-status-codes": {
588 | "version": "3.0.0",
589 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
590 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
591 | "dev": true
592 | },
593 | "cacache": {
594 | "version": "12.0.3",
595 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
596 | "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
597 | "dev": true,
598 | "requires": {
599 | "bluebird": "^3.5.5",
600 | "chownr": "^1.1.1",
601 | "figgy-pudding": "^3.5.1",
602 | "glob": "^7.1.4",
603 | "graceful-fs": "^4.1.15",
604 | "infer-owner": "^1.0.3",
605 | "lru-cache": "^5.1.1",
606 | "mississippi": "^3.0.0",
607 | "mkdirp": "^0.5.1",
608 | "move-concurrently": "^1.0.1",
609 | "promise-inflight": "^1.0.1",
610 | "rimraf": "^2.6.3",
611 | "ssri": "^6.0.1",
612 | "unique-filename": "^1.1.1",
613 | "y18n": "^4.0.0"
614 | }
615 | },
616 | "cache-base": {
617 | "version": "1.0.1",
618 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
619 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
620 | "dev": true,
621 | "requires": {
622 | "collection-visit": "^1.0.0",
623 | "component-emitter": "^1.2.1",
624 | "get-value": "^2.0.6",
625 | "has-value": "^1.0.0",
626 | "isobject": "^3.0.1",
627 | "set-value": "^2.0.0",
628 | "to-object-path": "^0.3.0",
629 | "union-value": "^1.0.0",
630 | "unset-value": "^1.0.0"
631 | }
632 | },
633 | "camelcase": {
634 | "version": "5.3.1",
635 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
636 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
637 | "dev": true
638 | },
639 | "chalk": {
640 | "version": "2.4.2",
641 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
642 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
643 | "dev": true,
644 | "requires": {
645 | "ansi-styles": "^3.2.1",
646 | "escape-string-regexp": "^1.0.5",
647 | "supports-color": "^5.3.0"
648 | },
649 | "dependencies": {
650 | "supports-color": {
651 | "version": "5.5.0",
652 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
653 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
654 | "dev": true,
655 | "requires": {
656 | "has-flag": "^3.0.0"
657 | }
658 | }
659 | }
660 | },
661 | "chokidar": {
662 | "version": "2.1.8",
663 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
664 | "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
665 | "dev": true,
666 | "requires": {
667 | "anymatch": "^2.0.0",
668 | "async-each": "^1.0.1",
669 | "braces": "^2.3.2",
670 | "fsevents": "^1.2.7",
671 | "glob-parent": "^3.1.0",
672 | "inherits": "^2.0.3",
673 | "is-binary-path": "^1.0.0",
674 | "is-glob": "^4.0.0",
675 | "normalize-path": "^3.0.0",
676 | "path-is-absolute": "^1.0.0",
677 | "readdirp": "^2.2.1",
678 | "upath": "^1.1.1"
679 | }
680 | },
681 | "chownr": {
682 | "version": "1.1.4",
683 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
684 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
685 | "dev": true
686 | },
687 | "chrome-trace-event": {
688 | "version": "1.0.2",
689 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
690 | "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
691 | "dev": true,
692 | "requires": {
693 | "tslib": "^1.9.0"
694 | }
695 | },
696 | "cipher-base": {
697 | "version": "1.0.4",
698 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
699 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
700 | "dev": true,
701 | "requires": {
702 | "inherits": "^2.0.1",
703 | "safe-buffer": "^5.0.1"
704 | }
705 | },
706 | "class-utils": {
707 | "version": "0.3.6",
708 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
709 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
710 | "dev": true,
711 | "requires": {
712 | "arr-union": "^3.1.0",
713 | "define-property": "^0.2.5",
714 | "isobject": "^3.0.0",
715 | "static-extend": "^0.1.1"
716 | },
717 | "dependencies": {
718 | "define-property": {
719 | "version": "0.2.5",
720 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
721 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
722 | "dev": true,
723 | "requires": {
724 | "is-descriptor": "^0.1.0"
725 | }
726 | }
727 | }
728 | },
729 | "cliui": {
730 | "version": "5.0.0",
731 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
732 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
733 | "dev": true,
734 | "requires": {
735 | "string-width": "^3.1.0",
736 | "strip-ansi": "^5.2.0",
737 | "wrap-ansi": "^5.1.0"
738 | }
739 | },
740 | "collection-visit": {
741 | "version": "1.0.0",
742 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
743 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
744 | "dev": true,
745 | "requires": {
746 | "map-visit": "^1.0.0",
747 | "object-visit": "^1.0.0"
748 | }
749 | },
750 | "color-convert": {
751 | "version": "1.9.3",
752 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
753 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
754 | "dev": true,
755 | "requires": {
756 | "color-name": "1.1.3"
757 | }
758 | },
759 | "color-name": {
760 | "version": "1.1.3",
761 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
762 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
763 | "dev": true
764 | },
765 | "commander": {
766 | "version": "2.20.3",
767 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
768 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
769 | "dev": true
770 | },
771 | "commondir": {
772 | "version": "1.0.1",
773 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
774 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
775 | "dev": true
776 | },
777 | "component-emitter": {
778 | "version": "1.3.0",
779 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
780 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
781 | "dev": true
782 | },
783 | "concat-map": {
784 | "version": "0.0.1",
785 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
786 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
787 | "dev": true
788 | },
789 | "concat-stream": {
790 | "version": "1.6.2",
791 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
792 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
793 | "dev": true,
794 | "requires": {
795 | "buffer-from": "^1.0.0",
796 | "inherits": "^2.0.3",
797 | "readable-stream": "^2.2.2",
798 | "typedarray": "^0.0.6"
799 | }
800 | },
801 | "console-browserify": {
802 | "version": "1.2.0",
803 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
804 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
805 | "dev": true
806 | },
807 | "constants-browserify": {
808 | "version": "1.0.0",
809 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
810 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
811 | "dev": true
812 | },
813 | "copy-concurrently": {
814 | "version": "1.0.5",
815 | "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
816 | "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
817 | "dev": true,
818 | "requires": {
819 | "aproba": "^1.1.1",
820 | "fs-write-stream-atomic": "^1.0.8",
821 | "iferr": "^0.1.5",
822 | "mkdirp": "^0.5.1",
823 | "rimraf": "^2.5.4",
824 | "run-queue": "^1.0.0"
825 | }
826 | },
827 | "copy-descriptor": {
828 | "version": "0.1.1",
829 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
830 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
831 | "dev": true
832 | },
833 | "core-util-is": {
834 | "version": "1.0.2",
835 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
836 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
837 | "dev": true
838 | },
839 | "create-ecdh": {
840 | "version": "4.0.3",
841 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
842 | "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
843 | "dev": true,
844 | "requires": {
845 | "bn.js": "^4.1.0",
846 | "elliptic": "^6.0.0"
847 | }
848 | },
849 | "create-hash": {
850 | "version": "1.2.0",
851 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
852 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
853 | "dev": true,
854 | "requires": {
855 | "cipher-base": "^1.0.1",
856 | "inherits": "^2.0.1",
857 | "md5.js": "^1.3.4",
858 | "ripemd160": "^2.0.1",
859 | "sha.js": "^2.4.0"
860 | }
861 | },
862 | "create-hmac": {
863 | "version": "1.1.7",
864 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
865 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
866 | "dev": true,
867 | "requires": {
868 | "cipher-base": "^1.0.3",
869 | "create-hash": "^1.1.0",
870 | "inherits": "^2.0.1",
871 | "ripemd160": "^2.0.0",
872 | "safe-buffer": "^5.0.1",
873 | "sha.js": "^2.4.8"
874 | }
875 | },
876 | "cross-spawn": {
877 | "version": "6.0.5",
878 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
879 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
880 | "dev": true,
881 | "requires": {
882 | "nice-try": "^1.0.4",
883 | "path-key": "^2.0.1",
884 | "semver": "^5.5.0",
885 | "shebang-command": "^1.2.0",
886 | "which": "^1.2.9"
887 | }
888 | },
889 | "crypto-browserify": {
890 | "version": "3.12.0",
891 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
892 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
893 | "dev": true,
894 | "requires": {
895 | "browserify-cipher": "^1.0.0",
896 | "browserify-sign": "^4.0.0",
897 | "create-ecdh": "^4.0.0",
898 | "create-hash": "^1.1.0",
899 | "create-hmac": "^1.1.0",
900 | "diffie-hellman": "^5.0.0",
901 | "inherits": "^2.0.1",
902 | "pbkdf2": "^3.0.3",
903 | "public-encrypt": "^4.0.0",
904 | "randombytes": "^2.0.0",
905 | "randomfill": "^1.0.3"
906 | }
907 | },
908 | "css-loader": {
909 | "version": "3.4.2",
910 | "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz",
911 | "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==",
912 | "dev": true,
913 | "requires": {
914 | "camelcase": "^5.3.1",
915 | "cssesc": "^3.0.0",
916 | "icss-utils": "^4.1.1",
917 | "loader-utils": "^1.2.3",
918 | "normalize-path": "^3.0.0",
919 | "postcss": "^7.0.23",
920 | "postcss-modules-extract-imports": "^2.0.0",
921 | "postcss-modules-local-by-default": "^3.0.2",
922 | "postcss-modules-scope": "^2.1.1",
923 | "postcss-modules-values": "^3.0.0",
924 | "postcss-value-parser": "^4.0.2",
925 | "schema-utils": "^2.6.0"
926 | }
927 | },
928 | "cssesc": {
929 | "version": "3.0.0",
930 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
931 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
932 | "dev": true
933 | },
934 | "cyclist": {
935 | "version": "1.0.1",
936 | "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
937 | "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
938 | "dev": true
939 | },
940 | "debug": {
941 | "version": "2.6.9",
942 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
943 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
944 | "dev": true,
945 | "requires": {
946 | "ms": "2.0.0"
947 | }
948 | },
949 | "decamelize": {
950 | "version": "1.2.0",
951 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
952 | "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
953 | "dev": true
954 | },
955 | "decode-uri-component": {
956 | "version": "0.2.0",
957 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
958 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
959 | "dev": true
960 | },
961 | "define-property": {
962 | "version": "2.0.2",
963 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
964 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
965 | "dev": true,
966 | "requires": {
967 | "is-descriptor": "^1.0.2",
968 | "isobject": "^3.0.1"
969 | },
970 | "dependencies": {
971 | "is-accessor-descriptor": {
972 | "version": "1.0.0",
973 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
974 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
975 | "dev": true,
976 | "requires": {
977 | "kind-of": "^6.0.0"
978 | }
979 | },
980 | "is-data-descriptor": {
981 | "version": "1.0.0",
982 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
983 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
984 | "dev": true,
985 | "requires": {
986 | "kind-of": "^6.0.0"
987 | }
988 | },
989 | "is-descriptor": {
990 | "version": "1.0.2",
991 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
992 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
993 | "dev": true,
994 | "requires": {
995 | "is-accessor-descriptor": "^1.0.0",
996 | "is-data-descriptor": "^1.0.0",
997 | "kind-of": "^6.0.2"
998 | }
999 | }
1000 | }
1001 | },
1002 | "des.js": {
1003 | "version": "1.0.1",
1004 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
1005 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
1006 | "dev": true,
1007 | "requires": {
1008 | "inherits": "^2.0.1",
1009 | "minimalistic-assert": "^1.0.0"
1010 | }
1011 | },
1012 | "detect-file": {
1013 | "version": "1.0.0",
1014 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
1015 | "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
1016 | "dev": true
1017 | },
1018 | "diffie-hellman": {
1019 | "version": "5.0.3",
1020 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
1021 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
1022 | "dev": true,
1023 | "requires": {
1024 | "bn.js": "^4.1.0",
1025 | "miller-rabin": "^4.0.0",
1026 | "randombytes": "^2.0.0"
1027 | }
1028 | },
1029 | "domain-browser": {
1030 | "version": "1.2.0",
1031 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
1032 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
1033 | "dev": true
1034 | },
1035 | "duplexify": {
1036 | "version": "3.7.1",
1037 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
1038 | "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
1039 | "dev": true,
1040 | "requires": {
1041 | "end-of-stream": "^1.0.0",
1042 | "inherits": "^2.0.1",
1043 | "readable-stream": "^2.0.0",
1044 | "stream-shift": "^1.0.0"
1045 | }
1046 | },
1047 | "elliptic": {
1048 | "version": "6.5.4",
1049 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
1050 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
1051 | "dev": true,
1052 | "requires": {
1053 | "bn.js": "^4.11.9",
1054 | "brorand": "^1.1.0",
1055 | "hash.js": "^1.0.0",
1056 | "hmac-drbg": "^1.0.1",
1057 | "inherits": "^2.0.4",
1058 | "minimalistic-assert": "^1.0.1",
1059 | "minimalistic-crypto-utils": "^1.0.1"
1060 | },
1061 | "dependencies": {
1062 | "bn.js": {
1063 | "version": "4.12.0",
1064 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
1065 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
1066 | "dev": true
1067 | }
1068 | }
1069 | },
1070 | "emoji-regex": {
1071 | "version": "7.0.3",
1072 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
1073 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
1074 | "dev": true
1075 | },
1076 | "emojis-list": {
1077 | "version": "3.0.0",
1078 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
1079 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
1080 | "dev": true
1081 | },
1082 | "end-of-stream": {
1083 | "version": "1.4.4",
1084 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
1085 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
1086 | "dev": true,
1087 | "requires": {
1088 | "once": "^1.4.0"
1089 | }
1090 | },
1091 | "enhanced-resolve": {
1092 | "version": "4.1.1",
1093 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz",
1094 | "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==",
1095 | "dev": true,
1096 | "requires": {
1097 | "graceful-fs": "^4.1.2",
1098 | "memory-fs": "^0.5.0",
1099 | "tapable": "^1.0.0"
1100 | },
1101 | "dependencies": {
1102 | "memory-fs": {
1103 | "version": "0.5.0",
1104 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
1105 | "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
1106 | "dev": true,
1107 | "requires": {
1108 | "errno": "^0.1.3",
1109 | "readable-stream": "^2.0.1"
1110 | }
1111 | }
1112 | }
1113 | },
1114 | "errno": {
1115 | "version": "0.1.7",
1116 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
1117 | "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
1118 | "dev": true,
1119 | "requires": {
1120 | "prr": "~1.0.1"
1121 | }
1122 | },
1123 | "escape-string-regexp": {
1124 | "version": "1.0.5",
1125 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1126 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1127 | "dev": true
1128 | },
1129 | "eslint-scope": {
1130 | "version": "4.0.3",
1131 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
1132 | "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
1133 | "dev": true,
1134 | "requires": {
1135 | "esrecurse": "^4.1.0",
1136 | "estraverse": "^4.1.1"
1137 | }
1138 | },
1139 | "esrecurse": {
1140 | "version": "4.2.1",
1141 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
1142 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
1143 | "dev": true,
1144 | "requires": {
1145 | "estraverse": "^4.1.0"
1146 | }
1147 | },
1148 | "estraverse": {
1149 | "version": "4.3.0",
1150 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
1151 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
1152 | "dev": true
1153 | },
1154 | "events": {
1155 | "version": "3.1.0",
1156 | "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
1157 | "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==",
1158 | "dev": true
1159 | },
1160 | "evp_bytestokey": {
1161 | "version": "1.0.3",
1162 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
1163 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
1164 | "dev": true,
1165 | "requires": {
1166 | "md5.js": "^1.3.4",
1167 | "safe-buffer": "^5.1.1"
1168 | }
1169 | },
1170 | "expand-brackets": {
1171 | "version": "2.1.4",
1172 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
1173 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
1174 | "dev": true,
1175 | "requires": {
1176 | "debug": "^2.3.3",
1177 | "define-property": "^0.2.5",
1178 | "extend-shallow": "^2.0.1",
1179 | "posix-character-classes": "^0.1.0",
1180 | "regex-not": "^1.0.0",
1181 | "snapdragon": "^0.8.1",
1182 | "to-regex": "^3.0.1"
1183 | },
1184 | "dependencies": {
1185 | "define-property": {
1186 | "version": "0.2.5",
1187 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1188 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1189 | "dev": true,
1190 | "requires": {
1191 | "is-descriptor": "^0.1.0"
1192 | }
1193 | },
1194 | "extend-shallow": {
1195 | "version": "2.0.1",
1196 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1197 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1198 | "dev": true,
1199 | "requires": {
1200 | "is-extendable": "^0.1.0"
1201 | }
1202 | }
1203 | }
1204 | },
1205 | "expand-tilde": {
1206 | "version": "2.0.2",
1207 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
1208 | "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
1209 | "dev": true,
1210 | "requires": {
1211 | "homedir-polyfill": "^1.0.1"
1212 | }
1213 | },
1214 | "extend-shallow": {
1215 | "version": "3.0.2",
1216 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
1217 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
1218 | "dev": true,
1219 | "requires": {
1220 | "assign-symbols": "^1.0.0",
1221 | "is-extendable": "^1.0.1"
1222 | },
1223 | "dependencies": {
1224 | "is-extendable": {
1225 | "version": "1.0.1",
1226 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1227 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1228 | "dev": true,
1229 | "requires": {
1230 | "is-plain-object": "^2.0.4"
1231 | }
1232 | }
1233 | }
1234 | },
1235 | "extglob": {
1236 | "version": "2.0.4",
1237 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
1238 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
1239 | "dev": true,
1240 | "requires": {
1241 | "array-unique": "^0.3.2",
1242 | "define-property": "^1.0.0",
1243 | "expand-brackets": "^2.1.4",
1244 | "extend-shallow": "^2.0.1",
1245 | "fragment-cache": "^0.2.1",
1246 | "regex-not": "^1.0.0",
1247 | "snapdragon": "^0.8.1",
1248 | "to-regex": "^3.0.1"
1249 | },
1250 | "dependencies": {
1251 | "define-property": {
1252 | "version": "1.0.0",
1253 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
1254 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
1255 | "dev": true,
1256 | "requires": {
1257 | "is-descriptor": "^1.0.0"
1258 | }
1259 | },
1260 | "extend-shallow": {
1261 | "version": "2.0.1",
1262 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1263 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1264 | "dev": true,
1265 | "requires": {
1266 | "is-extendable": "^0.1.0"
1267 | }
1268 | },
1269 | "is-accessor-descriptor": {
1270 | "version": "1.0.0",
1271 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1272 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1273 | "dev": true,
1274 | "requires": {
1275 | "kind-of": "^6.0.0"
1276 | }
1277 | },
1278 | "is-data-descriptor": {
1279 | "version": "1.0.0",
1280 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1281 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1282 | "dev": true,
1283 | "requires": {
1284 | "kind-of": "^6.0.0"
1285 | }
1286 | },
1287 | "is-descriptor": {
1288 | "version": "1.0.2",
1289 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1290 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1291 | "dev": true,
1292 | "requires": {
1293 | "is-accessor-descriptor": "^1.0.0",
1294 | "is-data-descriptor": "^1.0.0",
1295 | "kind-of": "^6.0.2"
1296 | }
1297 | }
1298 | }
1299 | },
1300 | "fast-deep-equal": {
1301 | "version": "3.1.1",
1302 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
1303 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
1304 | "dev": true
1305 | },
1306 | "fast-json-stable-stringify": {
1307 | "version": "2.1.0",
1308 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1309 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1310 | "dev": true
1311 | },
1312 | "figgy-pudding": {
1313 | "version": "3.5.1",
1314 | "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
1315 | "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
1316 | "dev": true
1317 | },
1318 | "file-uri-to-path": {
1319 | "version": "1.0.0",
1320 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
1321 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
1322 | "dev": true,
1323 | "optional": true
1324 | },
1325 | "fill-range": {
1326 | "version": "4.0.0",
1327 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
1328 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
1329 | "dev": true,
1330 | "requires": {
1331 | "extend-shallow": "^2.0.1",
1332 | "is-number": "^3.0.0",
1333 | "repeat-string": "^1.6.1",
1334 | "to-regex-range": "^2.1.0"
1335 | },
1336 | "dependencies": {
1337 | "extend-shallow": {
1338 | "version": "2.0.1",
1339 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1340 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1341 | "dev": true,
1342 | "requires": {
1343 | "is-extendable": "^0.1.0"
1344 | }
1345 | }
1346 | }
1347 | },
1348 | "find-cache-dir": {
1349 | "version": "2.1.0",
1350 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
1351 | "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
1352 | "dev": true,
1353 | "requires": {
1354 | "commondir": "^1.0.1",
1355 | "make-dir": "^2.0.0",
1356 | "pkg-dir": "^3.0.0"
1357 | }
1358 | },
1359 | "find-up": {
1360 | "version": "3.0.0",
1361 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
1362 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
1363 | "dev": true,
1364 | "requires": {
1365 | "locate-path": "^3.0.0"
1366 | }
1367 | },
1368 | "findup-sync": {
1369 | "version": "3.0.0",
1370 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
1371 | "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
1372 | "dev": true,
1373 | "requires": {
1374 | "detect-file": "^1.0.0",
1375 | "is-glob": "^4.0.0",
1376 | "micromatch": "^3.0.4",
1377 | "resolve-dir": "^1.0.1"
1378 | }
1379 | },
1380 | "flush-write-stream": {
1381 | "version": "1.1.1",
1382 | "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
1383 | "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
1384 | "dev": true,
1385 | "requires": {
1386 | "inherits": "^2.0.3",
1387 | "readable-stream": "^2.3.6"
1388 | }
1389 | },
1390 | "for-in": {
1391 | "version": "1.0.2",
1392 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1393 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1394 | "dev": true
1395 | },
1396 | "fragment-cache": {
1397 | "version": "0.2.1",
1398 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
1399 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
1400 | "dev": true,
1401 | "requires": {
1402 | "map-cache": "^0.2.2"
1403 | }
1404 | },
1405 | "from2": {
1406 | "version": "2.3.0",
1407 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
1408 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
1409 | "dev": true,
1410 | "requires": {
1411 | "inherits": "^2.0.1",
1412 | "readable-stream": "^2.0.0"
1413 | }
1414 | },
1415 | "fs-write-stream-atomic": {
1416 | "version": "1.0.10",
1417 | "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
1418 | "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
1419 | "dev": true,
1420 | "requires": {
1421 | "graceful-fs": "^4.1.2",
1422 | "iferr": "^0.1.5",
1423 | "imurmurhash": "^0.1.4",
1424 | "readable-stream": "1 || 2"
1425 | }
1426 | },
1427 | "fs.realpath": {
1428 | "version": "1.0.0",
1429 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1430 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1431 | "dev": true
1432 | },
1433 | "fsevents": {
1434 | "version": "1.2.12",
1435 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
1436 | "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
1437 | "dev": true,
1438 | "optional": true,
1439 | "requires": {
1440 | "bindings": "^1.5.0",
1441 | "nan": "^2.12.1",
1442 | "node-pre-gyp": "*"
1443 | },
1444 | "dependencies": {
1445 | "abbrev": {
1446 | "version": "1.1.1",
1447 | "bundled": true,
1448 | "dev": true,
1449 | "optional": true
1450 | },
1451 | "ansi-regex": {
1452 | "version": "2.1.1",
1453 | "bundled": true,
1454 | "dev": true,
1455 | "optional": true
1456 | },
1457 | "aproba": {
1458 | "version": "1.2.0",
1459 | "bundled": true,
1460 | "dev": true,
1461 | "optional": true
1462 | },
1463 | "are-we-there-yet": {
1464 | "version": "1.1.5",
1465 | "bundled": true,
1466 | "dev": true,
1467 | "optional": true,
1468 | "requires": {
1469 | "delegates": "^1.0.0",
1470 | "readable-stream": "^2.0.6"
1471 | }
1472 | },
1473 | "balanced-match": {
1474 | "version": "1.0.0",
1475 | "bundled": true,
1476 | "dev": true,
1477 | "optional": true
1478 | },
1479 | "brace-expansion": {
1480 | "version": "1.1.11",
1481 | "bundled": true,
1482 | "dev": true,
1483 | "optional": true,
1484 | "requires": {
1485 | "balanced-match": "^1.0.0",
1486 | "concat-map": "0.0.1"
1487 | }
1488 | },
1489 | "chownr": {
1490 | "version": "1.1.4",
1491 | "bundled": true,
1492 | "dev": true,
1493 | "optional": true
1494 | },
1495 | "code-point-at": {
1496 | "version": "1.1.0",
1497 | "bundled": true,
1498 | "dev": true,
1499 | "optional": true
1500 | },
1501 | "concat-map": {
1502 | "version": "0.0.1",
1503 | "bundled": true,
1504 | "dev": true,
1505 | "optional": true
1506 | },
1507 | "console-control-strings": {
1508 | "version": "1.1.0",
1509 | "bundled": true,
1510 | "dev": true,
1511 | "optional": true
1512 | },
1513 | "core-util-is": {
1514 | "version": "1.0.2",
1515 | "bundled": true,
1516 | "dev": true,
1517 | "optional": true
1518 | },
1519 | "debug": {
1520 | "version": "3.2.6",
1521 | "bundled": true,
1522 | "dev": true,
1523 | "optional": true,
1524 | "requires": {
1525 | "ms": "^2.1.1"
1526 | }
1527 | },
1528 | "deep-extend": {
1529 | "version": "0.6.0",
1530 | "bundled": true,
1531 | "dev": true,
1532 | "optional": true
1533 | },
1534 | "delegates": {
1535 | "version": "1.0.0",
1536 | "bundled": true,
1537 | "dev": true,
1538 | "optional": true
1539 | },
1540 | "detect-libc": {
1541 | "version": "1.0.3",
1542 | "bundled": true,
1543 | "dev": true,
1544 | "optional": true
1545 | },
1546 | "fs-minipass": {
1547 | "version": "1.2.7",
1548 | "bundled": true,
1549 | "dev": true,
1550 | "optional": true,
1551 | "requires": {
1552 | "minipass": "^2.6.0"
1553 | }
1554 | },
1555 | "fs.realpath": {
1556 | "version": "1.0.0",
1557 | "bundled": true,
1558 | "dev": true,
1559 | "optional": true
1560 | },
1561 | "gauge": {
1562 | "version": "2.7.4",
1563 | "bundled": true,
1564 | "dev": true,
1565 | "optional": true,
1566 | "requires": {
1567 | "aproba": "^1.0.3",
1568 | "console-control-strings": "^1.0.0",
1569 | "has-unicode": "^2.0.0",
1570 | "object-assign": "^4.1.0",
1571 | "signal-exit": "^3.0.0",
1572 | "string-width": "^1.0.1",
1573 | "strip-ansi": "^3.0.1",
1574 | "wide-align": "^1.1.0"
1575 | }
1576 | },
1577 | "glob": {
1578 | "version": "7.1.6",
1579 | "bundled": true,
1580 | "dev": true,
1581 | "optional": true,
1582 | "requires": {
1583 | "fs.realpath": "^1.0.0",
1584 | "inflight": "^1.0.4",
1585 | "inherits": "2",
1586 | "minimatch": "^3.0.4",
1587 | "once": "^1.3.0",
1588 | "path-is-absolute": "^1.0.0"
1589 | }
1590 | },
1591 | "has-unicode": {
1592 | "version": "2.0.1",
1593 | "bundled": true,
1594 | "dev": true,
1595 | "optional": true
1596 | },
1597 | "iconv-lite": {
1598 | "version": "0.4.24",
1599 | "bundled": true,
1600 | "dev": true,
1601 | "optional": true,
1602 | "requires": {
1603 | "safer-buffer": ">= 2.1.2 < 3"
1604 | }
1605 | },
1606 | "ignore-walk": {
1607 | "version": "3.0.3",
1608 | "bundled": true,
1609 | "dev": true,
1610 | "optional": true,
1611 | "requires": {
1612 | "minimatch": "^3.0.4"
1613 | }
1614 | },
1615 | "inflight": {
1616 | "version": "1.0.6",
1617 | "bundled": true,
1618 | "dev": true,
1619 | "optional": true,
1620 | "requires": {
1621 | "once": "^1.3.0",
1622 | "wrappy": "1"
1623 | }
1624 | },
1625 | "inherits": {
1626 | "version": "2.0.4",
1627 | "bundled": true,
1628 | "dev": true,
1629 | "optional": true
1630 | },
1631 | "is-fullwidth-code-point": {
1632 | "version": "1.0.0",
1633 | "bundled": true,
1634 | "dev": true,
1635 | "optional": true,
1636 | "requires": {
1637 | "number-is-nan": "^1.0.0"
1638 | }
1639 | },
1640 | "isarray": {
1641 | "version": "1.0.0",
1642 | "bundled": true,
1643 | "dev": true,
1644 | "optional": true
1645 | },
1646 | "minimatch": {
1647 | "version": "3.0.4",
1648 | "bundled": true,
1649 | "dev": true,
1650 | "optional": true,
1651 | "requires": {
1652 | "brace-expansion": "^1.1.7"
1653 | }
1654 | },
1655 | "minipass": {
1656 | "version": "2.9.0",
1657 | "bundled": true,
1658 | "dev": true,
1659 | "optional": true,
1660 | "requires": {
1661 | "safe-buffer": "^5.1.2",
1662 | "yallist": "^3.0.0"
1663 | }
1664 | },
1665 | "minizlib": {
1666 | "version": "1.3.3",
1667 | "bundled": true,
1668 | "dev": true,
1669 | "optional": true,
1670 | "requires": {
1671 | "minipass": "^2.9.0"
1672 | }
1673 | },
1674 | "mkdirp": {
1675 | "version": "0.5.3",
1676 | "bundled": true,
1677 | "dev": true,
1678 | "optional": true,
1679 | "requires": {
1680 | "minimist": "^1.2.5"
1681 | }
1682 | },
1683 | "ms": {
1684 | "version": "2.1.2",
1685 | "bundled": true,
1686 | "dev": true,
1687 | "optional": true
1688 | },
1689 | "needle": {
1690 | "version": "2.3.3",
1691 | "bundled": true,
1692 | "dev": true,
1693 | "optional": true,
1694 | "requires": {
1695 | "debug": "^3.2.6",
1696 | "iconv-lite": "^0.4.4",
1697 | "sax": "^1.2.4"
1698 | }
1699 | },
1700 | "node-pre-gyp": {
1701 | "version": "0.14.0",
1702 | "bundled": true,
1703 | "dev": true,
1704 | "optional": true,
1705 | "requires": {
1706 | "detect-libc": "^1.0.2",
1707 | "mkdirp": "^0.5.1",
1708 | "needle": "^2.2.1",
1709 | "nopt": "^4.0.1",
1710 | "npm-packlist": "^1.1.6",
1711 | "npmlog": "^4.0.2",
1712 | "rc": "^1.2.7",
1713 | "rimraf": "^2.6.1",
1714 | "semver": "^5.3.0",
1715 | "tar": "^4.4.2"
1716 | }
1717 | },
1718 | "nopt": {
1719 | "version": "4.0.3",
1720 | "bundled": true,
1721 | "dev": true,
1722 | "optional": true,
1723 | "requires": {
1724 | "abbrev": "1",
1725 | "osenv": "^0.1.4"
1726 | }
1727 | },
1728 | "npm-bundled": {
1729 | "version": "1.1.1",
1730 | "bundled": true,
1731 | "dev": true,
1732 | "optional": true,
1733 | "requires": {
1734 | "npm-normalize-package-bin": "^1.0.1"
1735 | }
1736 | },
1737 | "npm-normalize-package-bin": {
1738 | "version": "1.0.1",
1739 | "bundled": true,
1740 | "dev": true,
1741 | "optional": true
1742 | },
1743 | "npm-packlist": {
1744 | "version": "1.4.8",
1745 | "bundled": true,
1746 | "dev": true,
1747 | "optional": true,
1748 | "requires": {
1749 | "ignore-walk": "^3.0.1",
1750 | "npm-bundled": "^1.0.1",
1751 | "npm-normalize-package-bin": "^1.0.1"
1752 | }
1753 | },
1754 | "npmlog": {
1755 | "version": "4.1.2",
1756 | "bundled": true,
1757 | "dev": true,
1758 | "optional": true,
1759 | "requires": {
1760 | "are-we-there-yet": "~1.1.2",
1761 | "console-control-strings": "~1.1.0",
1762 | "gauge": "~2.7.3",
1763 | "set-blocking": "~2.0.0"
1764 | }
1765 | },
1766 | "number-is-nan": {
1767 | "version": "1.0.1",
1768 | "bundled": true,
1769 | "dev": true,
1770 | "optional": true
1771 | },
1772 | "object-assign": {
1773 | "version": "4.1.1",
1774 | "bundled": true,
1775 | "dev": true,
1776 | "optional": true
1777 | },
1778 | "once": {
1779 | "version": "1.4.0",
1780 | "bundled": true,
1781 | "dev": true,
1782 | "optional": true,
1783 | "requires": {
1784 | "wrappy": "1"
1785 | }
1786 | },
1787 | "os-homedir": {
1788 | "version": "1.0.2",
1789 | "bundled": true,
1790 | "dev": true,
1791 | "optional": true
1792 | },
1793 | "os-tmpdir": {
1794 | "version": "1.0.2",
1795 | "bundled": true,
1796 | "dev": true,
1797 | "optional": true
1798 | },
1799 | "osenv": {
1800 | "version": "0.1.5",
1801 | "bundled": true,
1802 | "dev": true,
1803 | "optional": true,
1804 | "requires": {
1805 | "os-homedir": "^1.0.0",
1806 | "os-tmpdir": "^1.0.0"
1807 | }
1808 | },
1809 | "path-is-absolute": {
1810 | "version": "1.0.1",
1811 | "bundled": true,
1812 | "dev": true,
1813 | "optional": true
1814 | },
1815 | "process-nextick-args": {
1816 | "version": "2.0.1",
1817 | "bundled": true,
1818 | "dev": true,
1819 | "optional": true
1820 | },
1821 | "rc": {
1822 | "version": "1.2.8",
1823 | "bundled": true,
1824 | "dev": true,
1825 | "optional": true,
1826 | "requires": {
1827 | "deep-extend": "^0.6.0",
1828 | "ini": "~1.3.0",
1829 | "minimist": "^1.2.0",
1830 | "strip-json-comments": "~2.0.1"
1831 | }
1832 | },
1833 | "readable-stream": {
1834 | "version": "2.3.7",
1835 | "bundled": true,
1836 | "dev": true,
1837 | "optional": true,
1838 | "requires": {
1839 | "core-util-is": "~1.0.0",
1840 | "inherits": "~2.0.3",
1841 | "isarray": "~1.0.0",
1842 | "process-nextick-args": "~2.0.0",
1843 | "safe-buffer": "~5.1.1",
1844 | "string_decoder": "~1.1.1",
1845 | "util-deprecate": "~1.0.1"
1846 | }
1847 | },
1848 | "rimraf": {
1849 | "version": "2.7.1",
1850 | "bundled": true,
1851 | "dev": true,
1852 | "optional": true,
1853 | "requires": {
1854 | "glob": "^7.1.3"
1855 | }
1856 | },
1857 | "safe-buffer": {
1858 | "version": "5.1.2",
1859 | "bundled": true,
1860 | "dev": true,
1861 | "optional": true
1862 | },
1863 | "safer-buffer": {
1864 | "version": "2.1.2",
1865 | "bundled": true,
1866 | "dev": true,
1867 | "optional": true
1868 | },
1869 | "sax": {
1870 | "version": "1.2.4",
1871 | "bundled": true,
1872 | "dev": true,
1873 | "optional": true
1874 | },
1875 | "semver": {
1876 | "version": "5.7.1",
1877 | "bundled": true,
1878 | "dev": true,
1879 | "optional": true
1880 | },
1881 | "set-blocking": {
1882 | "version": "2.0.0",
1883 | "bundled": true,
1884 | "dev": true,
1885 | "optional": true
1886 | },
1887 | "signal-exit": {
1888 | "version": "3.0.2",
1889 | "bundled": true,
1890 | "dev": true,
1891 | "optional": true
1892 | },
1893 | "string-width": {
1894 | "version": "1.0.2",
1895 | "bundled": true,
1896 | "dev": true,
1897 | "optional": true,
1898 | "requires": {
1899 | "code-point-at": "^1.0.0",
1900 | "is-fullwidth-code-point": "^1.0.0",
1901 | "strip-ansi": "^3.0.0"
1902 | }
1903 | },
1904 | "string_decoder": {
1905 | "version": "1.1.1",
1906 | "bundled": true,
1907 | "dev": true,
1908 | "optional": true,
1909 | "requires": {
1910 | "safe-buffer": "~5.1.0"
1911 | }
1912 | },
1913 | "strip-ansi": {
1914 | "version": "3.0.1",
1915 | "bundled": true,
1916 | "dev": true,
1917 | "optional": true,
1918 | "requires": {
1919 | "ansi-regex": "^2.0.0"
1920 | }
1921 | },
1922 | "strip-json-comments": {
1923 | "version": "2.0.1",
1924 | "bundled": true,
1925 | "dev": true,
1926 | "optional": true
1927 | },
1928 | "tar": {
1929 | "version": "4.4.13",
1930 | "bundled": true,
1931 | "dev": true,
1932 | "optional": true,
1933 | "requires": {
1934 | "chownr": "^1.1.1",
1935 | "fs-minipass": "^1.2.5",
1936 | "minipass": "^2.8.6",
1937 | "minizlib": "^1.2.1",
1938 | "mkdirp": "^0.5.0",
1939 | "safe-buffer": "^5.1.2",
1940 | "yallist": "^3.0.3"
1941 | }
1942 | },
1943 | "util-deprecate": {
1944 | "version": "1.0.2",
1945 | "bundled": true,
1946 | "dev": true,
1947 | "optional": true
1948 | },
1949 | "wide-align": {
1950 | "version": "1.1.3",
1951 | "bundled": true,
1952 | "dev": true,
1953 | "optional": true,
1954 | "requires": {
1955 | "string-width": "^1.0.2 || 2"
1956 | }
1957 | },
1958 | "wrappy": {
1959 | "version": "1.0.2",
1960 | "bundled": true,
1961 | "dev": true,
1962 | "optional": true
1963 | },
1964 | "yallist": {
1965 | "version": "3.1.1",
1966 | "bundled": true,
1967 | "dev": true,
1968 | "optional": true
1969 | }
1970 | }
1971 | },
1972 | "get-caller-file": {
1973 | "version": "2.0.5",
1974 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
1975 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
1976 | "dev": true
1977 | },
1978 | "get-value": {
1979 | "version": "2.0.6",
1980 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
1981 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
1982 | "dev": true
1983 | },
1984 | "glob": {
1985 | "version": "7.1.6",
1986 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
1987 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
1988 | "dev": true,
1989 | "requires": {
1990 | "fs.realpath": "^1.0.0",
1991 | "inflight": "^1.0.4",
1992 | "inherits": "2",
1993 | "minimatch": "^3.0.4",
1994 | "once": "^1.3.0",
1995 | "path-is-absolute": "^1.0.0"
1996 | }
1997 | },
1998 | "glob-parent": {
1999 | "version": "3.1.0",
2000 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
2001 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
2002 | "dev": true,
2003 | "requires": {
2004 | "is-glob": "^3.1.0",
2005 | "path-dirname": "^1.0.0"
2006 | },
2007 | "dependencies": {
2008 | "is-glob": {
2009 | "version": "3.1.0",
2010 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
2011 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
2012 | "dev": true,
2013 | "requires": {
2014 | "is-extglob": "^2.1.0"
2015 | }
2016 | }
2017 | }
2018 | },
2019 | "global-modules": {
2020 | "version": "2.0.0",
2021 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
2022 | "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
2023 | "dev": true,
2024 | "requires": {
2025 | "global-prefix": "^3.0.0"
2026 | },
2027 | "dependencies": {
2028 | "global-prefix": {
2029 | "version": "3.0.0",
2030 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
2031 | "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
2032 | "dev": true,
2033 | "requires": {
2034 | "ini": "^1.3.5",
2035 | "kind-of": "^6.0.2",
2036 | "which": "^1.3.1"
2037 | }
2038 | }
2039 | }
2040 | },
2041 | "global-prefix": {
2042 | "version": "1.0.2",
2043 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
2044 | "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
2045 | "dev": true,
2046 | "requires": {
2047 | "expand-tilde": "^2.0.2",
2048 | "homedir-polyfill": "^1.0.1",
2049 | "ini": "^1.3.4",
2050 | "is-windows": "^1.0.1",
2051 | "which": "^1.2.14"
2052 | }
2053 | },
2054 | "graceful-fs": {
2055 | "version": "4.2.3",
2056 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
2057 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
2058 | "dev": true
2059 | },
2060 | "has-flag": {
2061 | "version": "3.0.0",
2062 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
2063 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
2064 | "dev": true
2065 | },
2066 | "has-value": {
2067 | "version": "1.0.0",
2068 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
2069 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
2070 | "dev": true,
2071 | "requires": {
2072 | "get-value": "^2.0.6",
2073 | "has-values": "^1.0.0",
2074 | "isobject": "^3.0.0"
2075 | }
2076 | },
2077 | "has-values": {
2078 | "version": "1.0.0",
2079 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
2080 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
2081 | "dev": true,
2082 | "requires": {
2083 | "is-number": "^3.0.0",
2084 | "kind-of": "^4.0.0"
2085 | },
2086 | "dependencies": {
2087 | "kind-of": {
2088 | "version": "4.0.0",
2089 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
2090 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
2091 | "dev": true,
2092 | "requires": {
2093 | "is-buffer": "^1.1.5"
2094 | }
2095 | }
2096 | }
2097 | },
2098 | "hash-base": {
2099 | "version": "3.0.4",
2100 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
2101 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
2102 | "dev": true,
2103 | "requires": {
2104 | "inherits": "^2.0.1",
2105 | "safe-buffer": "^5.0.1"
2106 | }
2107 | },
2108 | "hash.js": {
2109 | "version": "1.1.7",
2110 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
2111 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
2112 | "dev": true,
2113 | "requires": {
2114 | "inherits": "^2.0.3",
2115 | "minimalistic-assert": "^1.0.1"
2116 | }
2117 | },
2118 | "hmac-drbg": {
2119 | "version": "1.0.1",
2120 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
2121 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
2122 | "dev": true,
2123 | "requires": {
2124 | "hash.js": "^1.0.3",
2125 | "minimalistic-assert": "^1.0.0",
2126 | "minimalistic-crypto-utils": "^1.0.1"
2127 | }
2128 | },
2129 | "homedir-polyfill": {
2130 | "version": "1.0.3",
2131 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
2132 | "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
2133 | "dev": true,
2134 | "requires": {
2135 | "parse-passwd": "^1.0.0"
2136 | }
2137 | },
2138 | "https-browserify": {
2139 | "version": "1.0.0",
2140 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
2141 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
2142 | "dev": true
2143 | },
2144 | "icss-utils": {
2145 | "version": "4.1.1",
2146 | "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
2147 | "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
2148 | "dev": true,
2149 | "requires": {
2150 | "postcss": "^7.0.14"
2151 | }
2152 | },
2153 | "ieee754": {
2154 | "version": "1.1.13",
2155 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
2156 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
2157 | "dev": true
2158 | },
2159 | "iferr": {
2160 | "version": "0.1.5",
2161 | "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
2162 | "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
2163 | "dev": true
2164 | },
2165 | "import-local": {
2166 | "version": "2.0.0",
2167 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
2168 | "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
2169 | "dev": true,
2170 | "requires": {
2171 | "pkg-dir": "^3.0.0",
2172 | "resolve-cwd": "^2.0.0"
2173 | }
2174 | },
2175 | "imurmurhash": {
2176 | "version": "0.1.4",
2177 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
2178 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
2179 | "dev": true
2180 | },
2181 | "indexes-of": {
2182 | "version": "1.0.1",
2183 | "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
2184 | "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
2185 | "dev": true
2186 | },
2187 | "infer-owner": {
2188 | "version": "1.0.4",
2189 | "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
2190 | "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
2191 | "dev": true
2192 | },
2193 | "inflight": {
2194 | "version": "1.0.6",
2195 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2196 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
2197 | "dev": true,
2198 | "requires": {
2199 | "once": "^1.3.0",
2200 | "wrappy": "1"
2201 | }
2202 | },
2203 | "inherits": {
2204 | "version": "2.0.4",
2205 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2206 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
2207 | "dev": true
2208 | },
2209 | "ini": {
2210 | "version": "1.3.8",
2211 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
2212 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
2213 | "dev": true
2214 | },
2215 | "interpret": {
2216 | "version": "1.4.0",
2217 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
2218 | "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
2219 | "dev": true
2220 | },
2221 | "is-accessor-descriptor": {
2222 | "version": "0.1.6",
2223 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
2224 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
2225 | "dev": true,
2226 | "requires": {
2227 | "kind-of": "^3.0.2"
2228 | },
2229 | "dependencies": {
2230 | "kind-of": {
2231 | "version": "3.2.2",
2232 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2233 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2234 | "dev": true,
2235 | "requires": {
2236 | "is-buffer": "^1.1.5"
2237 | }
2238 | }
2239 | }
2240 | },
2241 | "is-binary-path": {
2242 | "version": "1.0.1",
2243 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
2244 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
2245 | "dev": true,
2246 | "requires": {
2247 | "binary-extensions": "^1.0.0"
2248 | }
2249 | },
2250 | "is-buffer": {
2251 | "version": "1.1.6",
2252 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
2253 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
2254 | "dev": true
2255 | },
2256 | "is-data-descriptor": {
2257 | "version": "0.1.4",
2258 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
2259 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
2260 | "dev": true,
2261 | "requires": {
2262 | "kind-of": "^3.0.2"
2263 | },
2264 | "dependencies": {
2265 | "kind-of": {
2266 | "version": "3.2.2",
2267 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2268 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2269 | "dev": true,
2270 | "requires": {
2271 | "is-buffer": "^1.1.5"
2272 | }
2273 | }
2274 | }
2275 | },
2276 | "is-descriptor": {
2277 | "version": "0.1.6",
2278 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
2279 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
2280 | "dev": true,
2281 | "requires": {
2282 | "is-accessor-descriptor": "^0.1.6",
2283 | "is-data-descriptor": "^0.1.4",
2284 | "kind-of": "^5.0.0"
2285 | },
2286 | "dependencies": {
2287 | "kind-of": {
2288 | "version": "5.1.0",
2289 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
2290 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
2291 | "dev": true
2292 | }
2293 | }
2294 | },
2295 | "is-extendable": {
2296 | "version": "0.1.1",
2297 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
2298 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
2299 | "dev": true
2300 | },
2301 | "is-extglob": {
2302 | "version": "2.1.1",
2303 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2304 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
2305 | "dev": true
2306 | },
2307 | "is-fullwidth-code-point": {
2308 | "version": "2.0.0",
2309 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2310 | "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
2311 | "dev": true
2312 | },
2313 | "is-glob": {
2314 | "version": "4.0.1",
2315 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
2316 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
2317 | "dev": true,
2318 | "requires": {
2319 | "is-extglob": "^2.1.1"
2320 | }
2321 | },
2322 | "is-number": {
2323 | "version": "3.0.0",
2324 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
2325 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
2326 | "dev": true,
2327 | "requires": {
2328 | "kind-of": "^3.0.2"
2329 | },
2330 | "dependencies": {
2331 | "kind-of": {
2332 | "version": "3.2.2",
2333 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2334 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2335 | "dev": true,
2336 | "requires": {
2337 | "is-buffer": "^1.1.5"
2338 | }
2339 | }
2340 | }
2341 | },
2342 | "is-plain-object": {
2343 | "version": "2.0.4",
2344 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
2345 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
2346 | "dev": true,
2347 | "requires": {
2348 | "isobject": "^3.0.1"
2349 | }
2350 | },
2351 | "is-windows": {
2352 | "version": "1.0.2",
2353 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
2354 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
2355 | "dev": true
2356 | },
2357 | "is-wsl": {
2358 | "version": "1.1.0",
2359 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
2360 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
2361 | "dev": true
2362 | },
2363 | "isarray": {
2364 | "version": "1.0.0",
2365 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2366 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
2367 | "dev": true
2368 | },
2369 | "isexe": {
2370 | "version": "2.0.0",
2371 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2372 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
2373 | "dev": true
2374 | },
2375 | "isobject": {
2376 | "version": "3.0.1",
2377 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
2378 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
2379 | "dev": true
2380 | },
2381 | "jquery": {
2382 | "version": "3.5.0",
2383 | "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.0.tgz",
2384 | "integrity": "sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ=="
2385 | },
2386 | "json-parse-better-errors": {
2387 | "version": "1.0.2",
2388 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
2389 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
2390 | "dev": true
2391 | },
2392 | "json-schema-traverse": {
2393 | "version": "0.4.1",
2394 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2395 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2396 | "dev": true
2397 | },
2398 | "json5": {
2399 | "version": "1.0.1",
2400 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
2401 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
2402 | "dev": true,
2403 | "requires": {
2404 | "minimist": "^1.2.0"
2405 | }
2406 | },
2407 | "kind-of": {
2408 | "version": "6.0.3",
2409 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
2410 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
2411 | "dev": true
2412 | },
2413 | "loader-runner": {
2414 | "version": "2.4.0",
2415 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
2416 | "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
2417 | "dev": true
2418 | },
2419 | "loader-utils": {
2420 | "version": "1.4.2",
2421 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
2422 | "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
2423 | "dev": true,
2424 | "requires": {
2425 | "big.js": "^5.2.2",
2426 | "emojis-list": "^3.0.0",
2427 | "json5": "^1.0.1"
2428 | }
2429 | },
2430 | "locate-path": {
2431 | "version": "3.0.0",
2432 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
2433 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
2434 | "dev": true,
2435 | "requires": {
2436 | "p-locate": "^3.0.0",
2437 | "path-exists": "^3.0.0"
2438 | }
2439 | },
2440 | "lodash": {
2441 | "version": "4.17.21",
2442 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
2443 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
2444 | },
2445 | "lru-cache": {
2446 | "version": "5.1.1",
2447 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
2448 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2449 | "dev": true,
2450 | "requires": {
2451 | "yallist": "^3.0.2"
2452 | }
2453 | },
2454 | "make-dir": {
2455 | "version": "2.1.0",
2456 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
2457 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
2458 | "dev": true,
2459 | "requires": {
2460 | "pify": "^4.0.1",
2461 | "semver": "^5.6.0"
2462 | }
2463 | },
2464 | "mamacro": {
2465 | "version": "0.0.3",
2466 | "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
2467 | "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
2468 | "dev": true
2469 | },
2470 | "map-cache": {
2471 | "version": "0.2.2",
2472 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
2473 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
2474 | "dev": true
2475 | },
2476 | "map-visit": {
2477 | "version": "1.0.0",
2478 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
2479 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
2480 | "dev": true,
2481 | "requires": {
2482 | "object-visit": "^1.0.0"
2483 | }
2484 | },
2485 | "md5.js": {
2486 | "version": "1.3.5",
2487 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
2488 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
2489 | "dev": true,
2490 | "requires": {
2491 | "hash-base": "^3.0.0",
2492 | "inherits": "^2.0.1",
2493 | "safe-buffer": "^5.1.2"
2494 | }
2495 | },
2496 | "memory-fs": {
2497 | "version": "0.4.1",
2498 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
2499 | "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
2500 | "dev": true,
2501 | "requires": {
2502 | "errno": "^0.1.3",
2503 | "readable-stream": "^2.0.1"
2504 | }
2505 | },
2506 | "micromatch": {
2507 | "version": "3.1.10",
2508 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
2509 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
2510 | "dev": true,
2511 | "requires": {
2512 | "arr-diff": "^4.0.0",
2513 | "array-unique": "^0.3.2",
2514 | "braces": "^2.3.1",
2515 | "define-property": "^2.0.2",
2516 | "extend-shallow": "^3.0.2",
2517 | "extglob": "^2.0.4",
2518 | "fragment-cache": "^0.2.1",
2519 | "kind-of": "^6.0.2",
2520 | "nanomatch": "^1.2.9",
2521 | "object.pick": "^1.3.0",
2522 | "regex-not": "^1.0.0",
2523 | "snapdragon": "^0.8.1",
2524 | "to-regex": "^3.0.2"
2525 | }
2526 | },
2527 | "miller-rabin": {
2528 | "version": "4.0.1",
2529 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
2530 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
2531 | "dev": true,
2532 | "requires": {
2533 | "bn.js": "^4.0.0",
2534 | "brorand": "^1.0.1"
2535 | }
2536 | },
2537 | "minimalistic-assert": {
2538 | "version": "1.0.1",
2539 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
2540 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
2541 | "dev": true
2542 | },
2543 | "minimalistic-crypto-utils": {
2544 | "version": "1.0.1",
2545 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
2546 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
2547 | "dev": true
2548 | },
2549 | "minimatch": {
2550 | "version": "3.0.4",
2551 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2552 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2553 | "dev": true,
2554 | "requires": {
2555 | "brace-expansion": "^1.1.7"
2556 | }
2557 | },
2558 | "minimist": {
2559 | "version": "1.2.6",
2560 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
2561 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
2562 | "dev": true
2563 | },
2564 | "mississippi": {
2565 | "version": "3.0.0",
2566 | "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
2567 | "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
2568 | "dev": true,
2569 | "requires": {
2570 | "concat-stream": "^1.5.0",
2571 | "duplexify": "^3.4.2",
2572 | "end-of-stream": "^1.1.0",
2573 | "flush-write-stream": "^1.0.0",
2574 | "from2": "^2.1.0",
2575 | "parallel-transform": "^1.1.0",
2576 | "pump": "^3.0.0",
2577 | "pumpify": "^1.3.3",
2578 | "stream-each": "^1.1.0",
2579 | "through2": "^2.0.0"
2580 | }
2581 | },
2582 | "mixin-deep": {
2583 | "version": "1.3.2",
2584 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
2585 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
2586 | "dev": true,
2587 | "requires": {
2588 | "for-in": "^1.0.2",
2589 | "is-extendable": "^1.0.1"
2590 | },
2591 | "dependencies": {
2592 | "is-extendable": {
2593 | "version": "1.0.1",
2594 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
2595 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
2596 | "dev": true,
2597 | "requires": {
2598 | "is-plain-object": "^2.0.4"
2599 | }
2600 | }
2601 | }
2602 | },
2603 | "mkdirp": {
2604 | "version": "0.5.3",
2605 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
2606 | "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
2607 | "dev": true,
2608 | "requires": {
2609 | "minimist": "^1.2.5"
2610 | }
2611 | },
2612 | "move-concurrently": {
2613 | "version": "1.0.1",
2614 | "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
2615 | "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
2616 | "dev": true,
2617 | "requires": {
2618 | "aproba": "^1.1.1",
2619 | "copy-concurrently": "^1.0.0",
2620 | "fs-write-stream-atomic": "^1.0.8",
2621 | "mkdirp": "^0.5.1",
2622 | "rimraf": "^2.5.4",
2623 | "run-queue": "^1.0.3"
2624 | }
2625 | },
2626 | "ms": {
2627 | "version": "2.0.0",
2628 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2629 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
2630 | "dev": true
2631 | },
2632 | "nan": {
2633 | "version": "2.14.0",
2634 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
2635 | "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
2636 | "dev": true,
2637 | "optional": true
2638 | },
2639 | "nanomatch": {
2640 | "version": "1.2.13",
2641 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
2642 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
2643 | "dev": true,
2644 | "requires": {
2645 | "arr-diff": "^4.0.0",
2646 | "array-unique": "^0.3.2",
2647 | "define-property": "^2.0.2",
2648 | "extend-shallow": "^3.0.2",
2649 | "fragment-cache": "^0.2.1",
2650 | "is-windows": "^1.0.2",
2651 | "kind-of": "^6.0.2",
2652 | "object.pick": "^1.3.0",
2653 | "regex-not": "^1.0.0",
2654 | "snapdragon": "^0.8.1",
2655 | "to-regex": "^3.0.1"
2656 | }
2657 | },
2658 | "neo-async": {
2659 | "version": "2.6.1",
2660 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
2661 | "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
2662 | "dev": true
2663 | },
2664 | "nice-try": {
2665 | "version": "1.0.5",
2666 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
2667 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
2668 | "dev": true
2669 | },
2670 | "node-libs-browser": {
2671 | "version": "2.2.1",
2672 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
2673 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
2674 | "dev": true,
2675 | "requires": {
2676 | "assert": "^1.1.1",
2677 | "browserify-zlib": "^0.2.0",
2678 | "buffer": "^4.3.0",
2679 | "console-browserify": "^1.1.0",
2680 | "constants-browserify": "^1.0.0",
2681 | "crypto-browserify": "^3.11.0",
2682 | "domain-browser": "^1.1.1",
2683 | "events": "^3.0.0",
2684 | "https-browserify": "^1.0.0",
2685 | "os-browserify": "^0.3.0",
2686 | "path-browserify": "0.0.1",
2687 | "process": "^0.11.10",
2688 | "punycode": "^1.2.4",
2689 | "querystring-es3": "^0.2.0",
2690 | "readable-stream": "^2.3.3",
2691 | "stream-browserify": "^2.0.1",
2692 | "stream-http": "^2.7.2",
2693 | "string_decoder": "^1.0.0",
2694 | "timers-browserify": "^2.0.4",
2695 | "tty-browserify": "0.0.0",
2696 | "url": "^0.11.0",
2697 | "util": "^0.11.0",
2698 | "vm-browserify": "^1.0.1"
2699 | },
2700 | "dependencies": {
2701 | "punycode": {
2702 | "version": "1.4.1",
2703 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
2704 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
2705 | "dev": true
2706 | }
2707 | }
2708 | },
2709 | "normalize-path": {
2710 | "version": "3.0.0",
2711 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
2712 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
2713 | "dev": true
2714 | },
2715 | "object-assign": {
2716 | "version": "4.1.1",
2717 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2718 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
2719 | "dev": true
2720 | },
2721 | "object-copy": {
2722 | "version": "0.1.0",
2723 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
2724 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
2725 | "dev": true,
2726 | "requires": {
2727 | "copy-descriptor": "^0.1.0",
2728 | "define-property": "^0.2.5",
2729 | "kind-of": "^3.0.3"
2730 | },
2731 | "dependencies": {
2732 | "define-property": {
2733 | "version": "0.2.5",
2734 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
2735 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
2736 | "dev": true,
2737 | "requires": {
2738 | "is-descriptor": "^0.1.0"
2739 | }
2740 | },
2741 | "kind-of": {
2742 | "version": "3.2.2",
2743 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2744 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2745 | "dev": true,
2746 | "requires": {
2747 | "is-buffer": "^1.1.5"
2748 | }
2749 | }
2750 | }
2751 | },
2752 | "object-visit": {
2753 | "version": "1.0.1",
2754 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
2755 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
2756 | "dev": true,
2757 | "requires": {
2758 | "isobject": "^3.0.0"
2759 | }
2760 | },
2761 | "object.pick": {
2762 | "version": "1.3.0",
2763 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
2764 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
2765 | "dev": true,
2766 | "requires": {
2767 | "isobject": "^3.0.1"
2768 | }
2769 | },
2770 | "once": {
2771 | "version": "1.4.0",
2772 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2773 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2774 | "dev": true,
2775 | "requires": {
2776 | "wrappy": "1"
2777 | }
2778 | },
2779 | "os-browserify": {
2780 | "version": "0.3.0",
2781 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
2782 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
2783 | "dev": true
2784 | },
2785 | "p-limit": {
2786 | "version": "2.2.2",
2787 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz",
2788 | "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==",
2789 | "dev": true,
2790 | "requires": {
2791 | "p-try": "^2.0.0"
2792 | }
2793 | },
2794 | "p-locate": {
2795 | "version": "3.0.0",
2796 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
2797 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
2798 | "dev": true,
2799 | "requires": {
2800 | "p-limit": "^2.0.0"
2801 | }
2802 | },
2803 | "p-try": {
2804 | "version": "2.2.0",
2805 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
2806 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
2807 | "dev": true
2808 | },
2809 | "pako": {
2810 | "version": "1.0.11",
2811 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
2812 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
2813 | "dev": true
2814 | },
2815 | "parallel-transform": {
2816 | "version": "1.2.0",
2817 | "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
2818 | "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
2819 | "dev": true,
2820 | "requires": {
2821 | "cyclist": "^1.0.1",
2822 | "inherits": "^2.0.3",
2823 | "readable-stream": "^2.1.5"
2824 | }
2825 | },
2826 | "parse-asn1": {
2827 | "version": "5.1.5",
2828 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
2829 | "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
2830 | "dev": true,
2831 | "requires": {
2832 | "asn1.js": "^4.0.0",
2833 | "browserify-aes": "^1.0.0",
2834 | "create-hash": "^1.1.0",
2835 | "evp_bytestokey": "^1.0.0",
2836 | "pbkdf2": "^3.0.3",
2837 | "safe-buffer": "^5.1.1"
2838 | }
2839 | },
2840 | "parse-passwd": {
2841 | "version": "1.0.0",
2842 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
2843 | "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
2844 | "dev": true
2845 | },
2846 | "pascalcase": {
2847 | "version": "0.1.1",
2848 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
2849 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
2850 | "dev": true
2851 | },
2852 | "path-browserify": {
2853 | "version": "0.0.1",
2854 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
2855 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
2856 | "dev": true
2857 | },
2858 | "path-dirname": {
2859 | "version": "1.0.2",
2860 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
2861 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
2862 | "dev": true
2863 | },
2864 | "path-exists": {
2865 | "version": "3.0.0",
2866 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2867 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2868 | "dev": true
2869 | },
2870 | "path-is-absolute": {
2871 | "version": "1.0.1",
2872 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2873 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2874 | "dev": true
2875 | },
2876 | "path-key": {
2877 | "version": "2.0.1",
2878 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
2879 | "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
2880 | "dev": true
2881 | },
2882 | "pbkdf2": {
2883 | "version": "3.0.17",
2884 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
2885 | "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
2886 | "dev": true,
2887 | "requires": {
2888 | "create-hash": "^1.1.2",
2889 | "create-hmac": "^1.1.4",
2890 | "ripemd160": "^2.0.1",
2891 | "safe-buffer": "^5.0.1",
2892 | "sha.js": "^2.4.8"
2893 | }
2894 | },
2895 | "pify": {
2896 | "version": "4.0.1",
2897 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
2898 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
2899 | "dev": true
2900 | },
2901 | "pkg-dir": {
2902 | "version": "3.0.0",
2903 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
2904 | "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
2905 | "dev": true,
2906 | "requires": {
2907 | "find-up": "^3.0.0"
2908 | }
2909 | },
2910 | "popper.js": {
2911 | "version": "1.16.1",
2912 | "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
2913 | "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
2914 | },
2915 | "posix-character-classes": {
2916 | "version": "0.1.1",
2917 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
2918 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
2919 | "dev": true
2920 | },
2921 | "postcss": {
2922 | "version": "7.0.36",
2923 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz",
2924 | "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
2925 | "dev": true,
2926 | "requires": {
2927 | "chalk": "^2.4.2",
2928 | "source-map": "^0.6.1",
2929 | "supports-color": "^6.1.0"
2930 | }
2931 | },
2932 | "postcss-modules-extract-imports": {
2933 | "version": "2.0.0",
2934 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
2935 | "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
2936 | "dev": true,
2937 | "requires": {
2938 | "postcss": "^7.0.5"
2939 | }
2940 | },
2941 | "postcss-modules-local-by-default": {
2942 | "version": "3.0.2",
2943 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz",
2944 | "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==",
2945 | "dev": true,
2946 | "requires": {
2947 | "icss-utils": "^4.1.1",
2948 | "postcss": "^7.0.16",
2949 | "postcss-selector-parser": "^6.0.2",
2950 | "postcss-value-parser": "^4.0.0"
2951 | }
2952 | },
2953 | "postcss-modules-scope": {
2954 | "version": "2.1.1",
2955 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz",
2956 | "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==",
2957 | "dev": true,
2958 | "requires": {
2959 | "postcss": "^7.0.6",
2960 | "postcss-selector-parser": "^6.0.0"
2961 | }
2962 | },
2963 | "postcss-modules-values": {
2964 | "version": "3.0.0",
2965 | "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
2966 | "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
2967 | "dev": true,
2968 | "requires": {
2969 | "icss-utils": "^4.0.0",
2970 | "postcss": "^7.0.6"
2971 | }
2972 | },
2973 | "postcss-selector-parser": {
2974 | "version": "6.0.2",
2975 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
2976 | "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
2977 | "dev": true,
2978 | "requires": {
2979 | "cssesc": "^3.0.0",
2980 | "indexes-of": "^1.0.1",
2981 | "uniq": "^1.0.1"
2982 | }
2983 | },
2984 | "postcss-value-parser": {
2985 | "version": "4.0.3",
2986 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz",
2987 | "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==",
2988 | "dev": true
2989 | },
2990 | "process": {
2991 | "version": "0.11.10",
2992 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
2993 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
2994 | "dev": true
2995 | },
2996 | "process-nextick-args": {
2997 | "version": "2.0.1",
2998 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
2999 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
3000 | "dev": true
3001 | },
3002 | "promise-inflight": {
3003 | "version": "1.0.1",
3004 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
3005 | "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
3006 | "dev": true
3007 | },
3008 | "prr": {
3009 | "version": "1.0.1",
3010 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
3011 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
3012 | "dev": true
3013 | },
3014 | "public-encrypt": {
3015 | "version": "4.0.3",
3016 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
3017 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
3018 | "dev": true,
3019 | "requires": {
3020 | "bn.js": "^4.1.0",
3021 | "browserify-rsa": "^4.0.0",
3022 | "create-hash": "^1.1.0",
3023 | "parse-asn1": "^5.0.0",
3024 | "randombytes": "^2.0.1",
3025 | "safe-buffer": "^5.1.2"
3026 | }
3027 | },
3028 | "pump": {
3029 | "version": "3.0.0",
3030 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
3031 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
3032 | "dev": true,
3033 | "requires": {
3034 | "end-of-stream": "^1.1.0",
3035 | "once": "^1.3.1"
3036 | }
3037 | },
3038 | "pumpify": {
3039 | "version": "1.5.1",
3040 | "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
3041 | "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
3042 | "dev": true,
3043 | "requires": {
3044 | "duplexify": "^3.6.0",
3045 | "inherits": "^2.0.3",
3046 | "pump": "^2.0.0"
3047 | },
3048 | "dependencies": {
3049 | "pump": {
3050 | "version": "2.0.1",
3051 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
3052 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
3053 | "dev": true,
3054 | "requires": {
3055 | "end-of-stream": "^1.1.0",
3056 | "once": "^1.3.1"
3057 | }
3058 | }
3059 | }
3060 | },
3061 | "punycode": {
3062 | "version": "2.1.1",
3063 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
3064 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
3065 | "dev": true
3066 | },
3067 | "querystring": {
3068 | "version": "0.2.0",
3069 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
3070 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
3071 | "dev": true
3072 | },
3073 | "querystring-es3": {
3074 | "version": "0.2.1",
3075 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
3076 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
3077 | "dev": true
3078 | },
3079 | "randombytes": {
3080 | "version": "2.1.0",
3081 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
3082 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
3083 | "dev": true,
3084 | "requires": {
3085 | "safe-buffer": "^5.1.0"
3086 | }
3087 | },
3088 | "randomfill": {
3089 | "version": "1.0.4",
3090 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
3091 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
3092 | "dev": true,
3093 | "requires": {
3094 | "randombytes": "^2.0.5",
3095 | "safe-buffer": "^5.1.0"
3096 | }
3097 | },
3098 | "readable-stream": {
3099 | "version": "2.3.7",
3100 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
3101 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
3102 | "dev": true,
3103 | "requires": {
3104 | "core-util-is": "~1.0.0",
3105 | "inherits": "~2.0.3",
3106 | "isarray": "~1.0.0",
3107 | "process-nextick-args": "~2.0.0",
3108 | "safe-buffer": "~5.1.1",
3109 | "string_decoder": "~1.1.1",
3110 | "util-deprecate": "~1.0.1"
3111 | }
3112 | },
3113 | "readdirp": {
3114 | "version": "2.2.1",
3115 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
3116 | "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
3117 | "dev": true,
3118 | "requires": {
3119 | "graceful-fs": "^4.1.11",
3120 | "micromatch": "^3.1.10",
3121 | "readable-stream": "^2.0.2"
3122 | }
3123 | },
3124 | "regex-not": {
3125 | "version": "1.0.2",
3126 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
3127 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
3128 | "dev": true,
3129 | "requires": {
3130 | "extend-shallow": "^3.0.2",
3131 | "safe-regex": "^1.1.0"
3132 | }
3133 | },
3134 | "remove-trailing-separator": {
3135 | "version": "1.1.0",
3136 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
3137 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
3138 | "dev": true
3139 | },
3140 | "repeat-element": {
3141 | "version": "1.1.3",
3142 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
3143 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
3144 | "dev": true
3145 | },
3146 | "repeat-string": {
3147 | "version": "1.6.1",
3148 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
3149 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
3150 | "dev": true
3151 | },
3152 | "require-directory": {
3153 | "version": "2.1.1",
3154 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
3155 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
3156 | "dev": true
3157 | },
3158 | "require-main-filename": {
3159 | "version": "2.0.0",
3160 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
3161 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
3162 | "dev": true
3163 | },
3164 | "resolve-cwd": {
3165 | "version": "2.0.0",
3166 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
3167 | "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
3168 | "dev": true,
3169 | "requires": {
3170 | "resolve-from": "^3.0.0"
3171 | }
3172 | },
3173 | "resolve-dir": {
3174 | "version": "1.0.1",
3175 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
3176 | "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
3177 | "dev": true,
3178 | "requires": {
3179 | "expand-tilde": "^2.0.0",
3180 | "global-modules": "^1.0.0"
3181 | },
3182 | "dependencies": {
3183 | "global-modules": {
3184 | "version": "1.0.0",
3185 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
3186 | "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
3187 | "dev": true,
3188 | "requires": {
3189 | "global-prefix": "^1.0.1",
3190 | "is-windows": "^1.0.1",
3191 | "resolve-dir": "^1.0.0"
3192 | }
3193 | }
3194 | }
3195 | },
3196 | "resolve-from": {
3197 | "version": "3.0.0",
3198 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
3199 | "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
3200 | "dev": true
3201 | },
3202 | "resolve-url": {
3203 | "version": "0.2.1",
3204 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
3205 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
3206 | "dev": true
3207 | },
3208 | "ret": {
3209 | "version": "0.1.15",
3210 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
3211 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
3212 | "dev": true
3213 | },
3214 | "rimraf": {
3215 | "version": "2.7.1",
3216 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
3217 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
3218 | "dev": true,
3219 | "requires": {
3220 | "glob": "^7.1.3"
3221 | }
3222 | },
3223 | "ripemd160": {
3224 | "version": "2.0.2",
3225 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
3226 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
3227 | "dev": true,
3228 | "requires": {
3229 | "hash-base": "^3.0.0",
3230 | "inherits": "^2.0.1"
3231 | }
3232 | },
3233 | "run-queue": {
3234 | "version": "1.0.3",
3235 | "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
3236 | "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
3237 | "dev": true,
3238 | "requires": {
3239 | "aproba": "^1.1.1"
3240 | }
3241 | },
3242 | "safe-buffer": {
3243 | "version": "5.1.2",
3244 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
3245 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
3246 | "dev": true
3247 | },
3248 | "safe-regex": {
3249 | "version": "1.1.0",
3250 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
3251 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
3252 | "dev": true,
3253 | "requires": {
3254 | "ret": "~0.1.10"
3255 | }
3256 | },
3257 | "schema-utils": {
3258 | "version": "2.6.4",
3259 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.4.tgz",
3260 | "integrity": "sha512-VNjcaUxVnEeun6B2fiiUDjXXBtD4ZSH7pdbfIu1pOFwgptDPLMo/z9jr4sUfsjFVPqDCEin/F7IYlq7/E6yDbQ==",
3261 | "dev": true,
3262 | "requires": {
3263 | "ajv": "^6.10.2",
3264 | "ajv-keywords": "^3.4.1"
3265 | }
3266 | },
3267 | "semver": {
3268 | "version": "5.7.1",
3269 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
3270 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
3271 | "dev": true
3272 | },
3273 | "serialize-javascript": {
3274 | "version": "2.1.2",
3275 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
3276 | "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
3277 | "dev": true
3278 | },
3279 | "set-blocking": {
3280 | "version": "2.0.0",
3281 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
3282 | "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
3283 | "dev": true
3284 | },
3285 | "set-value": {
3286 | "version": "2.0.1",
3287 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
3288 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
3289 | "dev": true,
3290 | "requires": {
3291 | "extend-shallow": "^2.0.1",
3292 | "is-extendable": "^0.1.1",
3293 | "is-plain-object": "^2.0.3",
3294 | "split-string": "^3.0.1"
3295 | },
3296 | "dependencies": {
3297 | "extend-shallow": {
3298 | "version": "2.0.1",
3299 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
3300 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
3301 | "dev": true,
3302 | "requires": {
3303 | "is-extendable": "^0.1.0"
3304 | }
3305 | }
3306 | }
3307 | },
3308 | "setimmediate": {
3309 | "version": "1.0.5",
3310 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
3311 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
3312 | "dev": true
3313 | },
3314 | "sha.js": {
3315 | "version": "2.4.11",
3316 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
3317 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
3318 | "dev": true,
3319 | "requires": {
3320 | "inherits": "^2.0.1",
3321 | "safe-buffer": "^5.0.1"
3322 | }
3323 | },
3324 | "shebang-command": {
3325 | "version": "1.2.0",
3326 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
3327 | "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
3328 | "dev": true,
3329 | "requires": {
3330 | "shebang-regex": "^1.0.0"
3331 | }
3332 | },
3333 | "shebang-regex": {
3334 | "version": "1.0.0",
3335 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
3336 | "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
3337 | "dev": true
3338 | },
3339 | "snapdragon": {
3340 | "version": "0.8.2",
3341 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
3342 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
3343 | "dev": true,
3344 | "requires": {
3345 | "base": "^0.11.1",
3346 | "debug": "^2.2.0",
3347 | "define-property": "^0.2.5",
3348 | "extend-shallow": "^2.0.1",
3349 | "map-cache": "^0.2.2",
3350 | "source-map": "^0.5.6",
3351 | "source-map-resolve": "^0.5.0",
3352 | "use": "^3.1.0"
3353 | },
3354 | "dependencies": {
3355 | "define-property": {
3356 | "version": "0.2.5",
3357 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
3358 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
3359 | "dev": true,
3360 | "requires": {
3361 | "is-descriptor": "^0.1.0"
3362 | }
3363 | },
3364 | "extend-shallow": {
3365 | "version": "2.0.1",
3366 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
3367 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
3368 | "dev": true,
3369 | "requires": {
3370 | "is-extendable": "^0.1.0"
3371 | }
3372 | },
3373 | "source-map": {
3374 | "version": "0.5.7",
3375 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
3376 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
3377 | "dev": true
3378 | }
3379 | }
3380 | },
3381 | "snapdragon-node": {
3382 | "version": "2.1.1",
3383 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
3384 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
3385 | "dev": true,
3386 | "requires": {
3387 | "define-property": "^1.0.0",
3388 | "isobject": "^3.0.0",
3389 | "snapdragon-util": "^3.0.1"
3390 | },
3391 | "dependencies": {
3392 | "define-property": {
3393 | "version": "1.0.0",
3394 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
3395 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
3396 | "dev": true,
3397 | "requires": {
3398 | "is-descriptor": "^1.0.0"
3399 | }
3400 | },
3401 | "is-accessor-descriptor": {
3402 | "version": "1.0.0",
3403 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
3404 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
3405 | "dev": true,
3406 | "requires": {
3407 | "kind-of": "^6.0.0"
3408 | }
3409 | },
3410 | "is-data-descriptor": {
3411 | "version": "1.0.0",
3412 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
3413 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
3414 | "dev": true,
3415 | "requires": {
3416 | "kind-of": "^6.0.0"
3417 | }
3418 | },
3419 | "is-descriptor": {
3420 | "version": "1.0.2",
3421 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
3422 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
3423 | "dev": true,
3424 | "requires": {
3425 | "is-accessor-descriptor": "^1.0.0",
3426 | "is-data-descriptor": "^1.0.0",
3427 | "kind-of": "^6.0.2"
3428 | }
3429 | }
3430 | }
3431 | },
3432 | "snapdragon-util": {
3433 | "version": "3.0.1",
3434 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
3435 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
3436 | "dev": true,
3437 | "requires": {
3438 | "kind-of": "^3.2.0"
3439 | },
3440 | "dependencies": {
3441 | "kind-of": {
3442 | "version": "3.2.2",
3443 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
3444 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
3445 | "dev": true,
3446 | "requires": {
3447 | "is-buffer": "^1.1.5"
3448 | }
3449 | }
3450 | }
3451 | },
3452 | "source-list-map": {
3453 | "version": "2.0.1",
3454 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
3455 | "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
3456 | "dev": true
3457 | },
3458 | "source-map": {
3459 | "version": "0.6.1",
3460 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3461 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3462 | "dev": true
3463 | },
3464 | "source-map-resolve": {
3465 | "version": "0.5.3",
3466 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
3467 | "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
3468 | "dev": true,
3469 | "requires": {
3470 | "atob": "^2.1.2",
3471 | "decode-uri-component": "^0.2.0",
3472 | "resolve-url": "^0.2.1",
3473 | "source-map-url": "^0.4.0",
3474 | "urix": "^0.1.0"
3475 | }
3476 | },
3477 | "source-map-support": {
3478 | "version": "0.5.16",
3479 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
3480 | "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
3481 | "dev": true,
3482 | "requires": {
3483 | "buffer-from": "^1.0.0",
3484 | "source-map": "^0.6.0"
3485 | }
3486 | },
3487 | "source-map-url": {
3488 | "version": "0.4.0",
3489 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
3490 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
3491 | "dev": true
3492 | },
3493 | "split-string": {
3494 | "version": "3.1.0",
3495 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
3496 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
3497 | "dev": true,
3498 | "requires": {
3499 | "extend-shallow": "^3.0.0"
3500 | }
3501 | },
3502 | "ssri": {
3503 | "version": "6.0.2",
3504 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
3505 | "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
3506 | "dev": true,
3507 | "requires": {
3508 | "figgy-pudding": "^3.5.1"
3509 | }
3510 | },
3511 | "static-extend": {
3512 | "version": "0.1.2",
3513 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
3514 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
3515 | "dev": true,
3516 | "requires": {
3517 | "define-property": "^0.2.5",
3518 | "object-copy": "^0.1.0"
3519 | },
3520 | "dependencies": {
3521 | "define-property": {
3522 | "version": "0.2.5",
3523 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
3524 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
3525 | "dev": true,
3526 | "requires": {
3527 | "is-descriptor": "^0.1.0"
3528 | }
3529 | }
3530 | }
3531 | },
3532 | "stream-browserify": {
3533 | "version": "2.0.2",
3534 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
3535 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
3536 | "dev": true,
3537 | "requires": {
3538 | "inherits": "~2.0.1",
3539 | "readable-stream": "^2.0.2"
3540 | }
3541 | },
3542 | "stream-each": {
3543 | "version": "1.2.3",
3544 | "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
3545 | "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
3546 | "dev": true,
3547 | "requires": {
3548 | "end-of-stream": "^1.1.0",
3549 | "stream-shift": "^1.0.0"
3550 | }
3551 | },
3552 | "stream-http": {
3553 | "version": "2.8.3",
3554 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
3555 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
3556 | "dev": true,
3557 | "requires": {
3558 | "builtin-status-codes": "^3.0.0",
3559 | "inherits": "^2.0.1",
3560 | "readable-stream": "^2.3.6",
3561 | "to-arraybuffer": "^1.0.0",
3562 | "xtend": "^4.0.0"
3563 | }
3564 | },
3565 | "stream-shift": {
3566 | "version": "1.0.1",
3567 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
3568 | "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
3569 | "dev": true
3570 | },
3571 | "string-width": {
3572 | "version": "3.1.0",
3573 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
3574 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
3575 | "dev": true,
3576 | "requires": {
3577 | "emoji-regex": "^7.0.1",
3578 | "is-fullwidth-code-point": "^2.0.0",
3579 | "strip-ansi": "^5.1.0"
3580 | }
3581 | },
3582 | "string_decoder": {
3583 | "version": "1.1.1",
3584 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
3585 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
3586 | "dev": true,
3587 | "requires": {
3588 | "safe-buffer": "~5.1.0"
3589 | }
3590 | },
3591 | "strip-ansi": {
3592 | "version": "5.2.0",
3593 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
3594 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
3595 | "dev": true,
3596 | "requires": {
3597 | "ansi-regex": "^4.1.0"
3598 | }
3599 | },
3600 | "style-loader": {
3601 | "version": "1.1.3",
3602 | "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz",
3603 | "integrity": "sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==",
3604 | "dev": true,
3605 | "requires": {
3606 | "loader-utils": "^1.2.3",
3607 | "schema-utils": "^2.6.4"
3608 | }
3609 | },
3610 | "supports-color": {
3611 | "version": "6.1.0",
3612 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
3613 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
3614 | "dev": true,
3615 | "requires": {
3616 | "has-flag": "^3.0.0"
3617 | }
3618 | },
3619 | "tapable": {
3620 | "version": "1.1.3",
3621 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
3622 | "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
3623 | "dev": true
3624 | },
3625 | "terser": {
3626 | "version": "4.8.1",
3627 | "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
3628 | "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
3629 | "dev": true,
3630 | "requires": {
3631 | "commander": "^2.20.0",
3632 | "source-map": "~0.6.1",
3633 | "source-map-support": "~0.5.12"
3634 | }
3635 | },
3636 | "terser-webpack-plugin": {
3637 | "version": "1.4.3",
3638 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz",
3639 | "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==",
3640 | "dev": true,
3641 | "requires": {
3642 | "cacache": "^12.0.2",
3643 | "find-cache-dir": "^2.1.0",
3644 | "is-wsl": "^1.1.0",
3645 | "schema-utils": "^1.0.0",
3646 | "serialize-javascript": "^2.1.2",
3647 | "source-map": "^0.6.1",
3648 | "terser": "^4.1.2",
3649 | "webpack-sources": "^1.4.0",
3650 | "worker-farm": "^1.7.0"
3651 | },
3652 | "dependencies": {
3653 | "schema-utils": {
3654 | "version": "1.0.0",
3655 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
3656 | "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
3657 | "dev": true,
3658 | "requires": {
3659 | "ajv": "^6.1.0",
3660 | "ajv-errors": "^1.0.0",
3661 | "ajv-keywords": "^3.1.0"
3662 | }
3663 | }
3664 | }
3665 | },
3666 | "through2": {
3667 | "version": "2.0.5",
3668 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
3669 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
3670 | "dev": true,
3671 | "requires": {
3672 | "readable-stream": "~2.3.6",
3673 | "xtend": "~4.0.1"
3674 | }
3675 | },
3676 | "timers-browserify": {
3677 | "version": "2.0.11",
3678 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
3679 | "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
3680 | "dev": true,
3681 | "requires": {
3682 | "setimmediate": "^1.0.4"
3683 | }
3684 | },
3685 | "to-arraybuffer": {
3686 | "version": "1.0.1",
3687 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
3688 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
3689 | "dev": true
3690 | },
3691 | "to-object-path": {
3692 | "version": "0.3.0",
3693 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
3694 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
3695 | "dev": true,
3696 | "requires": {
3697 | "kind-of": "^3.0.2"
3698 | },
3699 | "dependencies": {
3700 | "kind-of": {
3701 | "version": "3.2.2",
3702 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
3703 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
3704 | "dev": true,
3705 | "requires": {
3706 | "is-buffer": "^1.1.5"
3707 | }
3708 | }
3709 | }
3710 | },
3711 | "to-regex": {
3712 | "version": "3.0.2",
3713 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
3714 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
3715 | "dev": true,
3716 | "requires": {
3717 | "define-property": "^2.0.2",
3718 | "extend-shallow": "^3.0.2",
3719 | "regex-not": "^1.0.2",
3720 | "safe-regex": "^1.1.0"
3721 | }
3722 | },
3723 | "to-regex-range": {
3724 | "version": "2.1.1",
3725 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
3726 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
3727 | "dev": true,
3728 | "requires": {
3729 | "is-number": "^3.0.0",
3730 | "repeat-string": "^1.6.1"
3731 | }
3732 | },
3733 | "tslib": {
3734 | "version": "1.11.1",
3735 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
3736 | "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==",
3737 | "dev": true
3738 | },
3739 | "tty-browserify": {
3740 | "version": "0.0.0",
3741 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
3742 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
3743 | "dev": true
3744 | },
3745 | "typedarray": {
3746 | "version": "0.0.6",
3747 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
3748 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
3749 | "dev": true
3750 | },
3751 | "union-value": {
3752 | "version": "1.0.1",
3753 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
3754 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
3755 | "dev": true,
3756 | "requires": {
3757 | "arr-union": "^3.1.0",
3758 | "get-value": "^2.0.6",
3759 | "is-extendable": "^0.1.1",
3760 | "set-value": "^2.0.1"
3761 | }
3762 | },
3763 | "uniq": {
3764 | "version": "1.0.1",
3765 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
3766 | "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
3767 | "dev": true
3768 | },
3769 | "unique-filename": {
3770 | "version": "1.1.1",
3771 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
3772 | "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
3773 | "dev": true,
3774 | "requires": {
3775 | "unique-slug": "^2.0.0"
3776 | }
3777 | },
3778 | "unique-slug": {
3779 | "version": "2.0.2",
3780 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
3781 | "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
3782 | "dev": true,
3783 | "requires": {
3784 | "imurmurhash": "^0.1.4"
3785 | }
3786 | },
3787 | "unset-value": {
3788 | "version": "1.0.0",
3789 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
3790 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
3791 | "dev": true,
3792 | "requires": {
3793 | "has-value": "^0.3.1",
3794 | "isobject": "^3.0.0"
3795 | },
3796 | "dependencies": {
3797 | "has-value": {
3798 | "version": "0.3.1",
3799 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
3800 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
3801 | "dev": true,
3802 | "requires": {
3803 | "get-value": "^2.0.3",
3804 | "has-values": "^0.1.4",
3805 | "isobject": "^2.0.0"
3806 | },
3807 | "dependencies": {
3808 | "isobject": {
3809 | "version": "2.1.0",
3810 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
3811 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
3812 | "dev": true,
3813 | "requires": {
3814 | "isarray": "1.0.0"
3815 | }
3816 | }
3817 | }
3818 | },
3819 | "has-values": {
3820 | "version": "0.1.4",
3821 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
3822 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
3823 | "dev": true
3824 | }
3825 | }
3826 | },
3827 | "upath": {
3828 | "version": "1.2.0",
3829 | "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
3830 | "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
3831 | "dev": true
3832 | },
3833 | "uri-js": {
3834 | "version": "4.2.2",
3835 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
3836 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
3837 | "dev": true,
3838 | "requires": {
3839 | "punycode": "^2.1.0"
3840 | }
3841 | },
3842 | "urix": {
3843 | "version": "0.1.0",
3844 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
3845 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
3846 | "dev": true
3847 | },
3848 | "url": {
3849 | "version": "0.11.0",
3850 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
3851 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
3852 | "dev": true,
3853 | "requires": {
3854 | "punycode": "1.3.2",
3855 | "querystring": "0.2.0"
3856 | },
3857 | "dependencies": {
3858 | "punycode": {
3859 | "version": "1.3.2",
3860 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
3861 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
3862 | "dev": true
3863 | }
3864 | }
3865 | },
3866 | "use": {
3867 | "version": "3.1.1",
3868 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
3869 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
3870 | "dev": true
3871 | },
3872 | "util": {
3873 | "version": "0.11.1",
3874 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
3875 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
3876 | "dev": true,
3877 | "requires": {
3878 | "inherits": "2.0.3"
3879 | },
3880 | "dependencies": {
3881 | "inherits": {
3882 | "version": "2.0.3",
3883 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
3884 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
3885 | "dev": true
3886 | }
3887 | }
3888 | },
3889 | "util-deprecate": {
3890 | "version": "1.0.2",
3891 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
3892 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
3893 | "dev": true
3894 | },
3895 | "v8-compile-cache": {
3896 | "version": "2.3.0",
3897 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
3898 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
3899 | "dev": true
3900 | },
3901 | "vm-browserify": {
3902 | "version": "1.1.2",
3903 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
3904 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
3905 | "dev": true
3906 | },
3907 | "watchpack": {
3908 | "version": "1.6.0",
3909 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
3910 | "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
3911 | "dev": true,
3912 | "requires": {
3913 | "chokidar": "^2.0.2",
3914 | "graceful-fs": "^4.1.2",
3915 | "neo-async": "^2.5.0"
3916 | }
3917 | },
3918 | "webpack": {
3919 | "version": "4.42.0",
3920 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz",
3921 | "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==",
3922 | "dev": true,
3923 | "requires": {
3924 | "@webassemblyjs/ast": "1.8.5",
3925 | "@webassemblyjs/helper-module-context": "1.8.5",
3926 | "@webassemblyjs/wasm-edit": "1.8.5",
3927 | "@webassemblyjs/wasm-parser": "1.8.5",
3928 | "acorn": "^6.2.1",
3929 | "ajv": "^6.10.2",
3930 | "ajv-keywords": "^3.4.1",
3931 | "chrome-trace-event": "^1.0.2",
3932 | "enhanced-resolve": "^4.1.0",
3933 | "eslint-scope": "^4.0.3",
3934 | "json-parse-better-errors": "^1.0.2",
3935 | "loader-runner": "^2.4.0",
3936 | "loader-utils": "^1.2.3",
3937 | "memory-fs": "^0.4.1",
3938 | "micromatch": "^3.1.10",
3939 | "mkdirp": "^0.5.1",
3940 | "neo-async": "^2.6.1",
3941 | "node-libs-browser": "^2.2.1",
3942 | "schema-utils": "^1.0.0",
3943 | "tapable": "^1.1.3",
3944 | "terser-webpack-plugin": "^1.4.3",
3945 | "watchpack": "^1.6.0",
3946 | "webpack-sources": "^1.4.1"
3947 | },
3948 | "dependencies": {
3949 | "schema-utils": {
3950 | "version": "1.0.0",
3951 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
3952 | "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
3953 | "dev": true,
3954 | "requires": {
3955 | "ajv": "^6.1.0",
3956 | "ajv-errors": "^1.0.0",
3957 | "ajv-keywords": "^3.1.0"
3958 | }
3959 | }
3960 | }
3961 | },
3962 | "webpack-cli": {
3963 | "version": "3.3.12",
3964 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz",
3965 | "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==",
3966 | "dev": true,
3967 | "requires": {
3968 | "chalk": "^2.4.2",
3969 | "cross-spawn": "^6.0.5",
3970 | "enhanced-resolve": "^4.1.1",
3971 | "findup-sync": "^3.0.0",
3972 | "global-modules": "^2.0.0",
3973 | "import-local": "^2.0.0",
3974 | "interpret": "^1.4.0",
3975 | "loader-utils": "^1.4.0",
3976 | "supports-color": "^6.1.0",
3977 | "v8-compile-cache": "^2.1.1",
3978 | "yargs": "^13.3.2"
3979 | }
3980 | },
3981 | "webpack-sources": {
3982 | "version": "1.4.3",
3983 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
3984 | "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
3985 | "dev": true,
3986 | "requires": {
3987 | "source-list-map": "^2.0.0",
3988 | "source-map": "~0.6.1"
3989 | }
3990 | },
3991 | "which": {
3992 | "version": "1.3.1",
3993 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
3994 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
3995 | "dev": true,
3996 | "requires": {
3997 | "isexe": "^2.0.0"
3998 | }
3999 | },
4000 | "which-module": {
4001 | "version": "2.0.0",
4002 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
4003 | "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
4004 | "dev": true
4005 | },
4006 | "worker-farm": {
4007 | "version": "1.7.0",
4008 | "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
4009 | "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
4010 | "dev": true,
4011 | "requires": {
4012 | "errno": "~0.1.7"
4013 | }
4014 | },
4015 | "wrap-ansi": {
4016 | "version": "5.1.0",
4017 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
4018 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
4019 | "dev": true,
4020 | "requires": {
4021 | "ansi-styles": "^3.2.0",
4022 | "string-width": "^3.0.0",
4023 | "strip-ansi": "^5.0.0"
4024 | }
4025 | },
4026 | "wrappy": {
4027 | "version": "1.0.2",
4028 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
4029 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
4030 | "dev": true
4031 | },
4032 | "xtend": {
4033 | "version": "4.0.2",
4034 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
4035 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
4036 | "dev": true
4037 | },
4038 | "y18n": {
4039 | "version": "4.0.1",
4040 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
4041 | "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
4042 | "dev": true
4043 | },
4044 | "yallist": {
4045 | "version": "3.1.1",
4046 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
4047 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
4048 | "dev": true
4049 | },
4050 | "yargs": {
4051 | "version": "13.3.2",
4052 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
4053 | "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
4054 | "dev": true,
4055 | "requires": {
4056 | "cliui": "^5.0.0",
4057 | "find-up": "^3.0.0",
4058 | "get-caller-file": "^2.0.1",
4059 | "require-directory": "^2.1.1",
4060 | "require-main-filename": "^2.0.0",
4061 | "set-blocking": "^2.0.0",
4062 | "string-width": "^3.0.0",
4063 | "which-module": "^2.0.0",
4064 | "y18n": "^4.0.0",
4065 | "yargs-parser": "^13.1.2"
4066 | }
4067 | },
4068 | "yargs-parser": {
4069 | "version": "13.1.2",
4070 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
4071 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
4072 | "dev": true,
4073 | "requires": {
4074 | "camelcase": "^5.0.0",
4075 | "decamelize": "^1.2.0"
4076 | }
4077 | }
4078 | }
4079 | }
4080 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Sudoku-Solver-Visualizer",
3 | "version": "1.0.0",
4 | "description": "A web application to visualize sudoku solving using backtracking. I created this visualization tool to see the backtracking algorithm in action. I hope this may help a few people out there understand how backtracking works!",
5 | "private": true,
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "build": "webpack"
9 | },
10 | "repository": {
11 | "type": "git",
12 | "url": "git+https://github.com/nibble-4bits/Sudoku-Solver-Visualizer.git"
13 | },
14 | "keywords": [],
15 | "author": "Luis De Anda",
16 | "license": "MIT",
17 | "bugs": {
18 | "url": "https://github.com/nibble-4bits/Sudoku-Solver-Visualizer/issues"
19 | },
20 | "homepage": "https://github.com/nibble-4bits/Sudoku-Solver-Visualizer#readme",
21 | "devDependencies": {
22 | "css-loader": "^3.4.2",
23 | "style-loader": "^1.1.3",
24 | "webpack": "^4.42.0",
25 | "webpack-cli": "^3.3.12"
26 | },
27 | "dependencies": {
28 | "jquery": "^3.5.0",
29 | "lodash": "^4.17.21",
30 | "popper.js": "^1.16.1"
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/css/index.css:
--------------------------------------------------------------------------------
1 | h1,
2 | h2,
3 | h3,
4 | h4,
5 | h5,
6 | h6 {
7 | margin: 0.33em 0;
8 | }
9 |
10 | table {
11 | border: 5px solid #000000;
12 | border-collapse: collapse;
13 | }
14 |
15 | td {
16 | font-size: 1.8em;
17 | text-align: center;
18 | border: 1px solid #000000;
19 | width: 45px;
20 | height: 45px;
21 | caret-color: #000000;
22 | }
23 |
24 | .focused-cell {
25 | background-color: #ddd;
26 | }
27 |
28 | td.discovered-num {
29 | color: #ff0000;
30 | }
31 |
32 | td.box-boundary-row {
33 | border-bottom: 3px solid #000000;
34 | }
35 |
36 | td.box-boundary-col {
37 | border-right: 3px solid #000000;
38 | }
39 |
40 | .status-success {
41 | color: #008000;
42 | }
43 |
44 | .status-failed {
45 | color: #ff0000;
46 | }
47 |
48 | button {
49 | font-size: 16px;
50 | margin: 0 1em;
51 | border: none;
52 | border-radius: 0.25em;
53 | padding: 0.5em 0.8em;
54 | color: #ffffff;
55 | background-color: #196cca;
56 | cursor: pointer;
57 | }
58 |
--------------------------------------------------------------------------------
/src/css/layout.css:
--------------------------------------------------------------------------------
1 | @import url("https://fonts.googleapis.com/css?family=Lato&display=swap");
2 |
3 | html {
4 | height: 100%;
5 | }
6 |
7 | body {
8 | font-family: "Lato", sans-serif;
9 | background-color: #eef0f2;
10 | margin: 0;
11 | height: 100%;
12 | display: grid;
13 | grid-template-areas:
14 | "sudoku"
15 | "gap"
16 | "footer";
17 | grid-template-rows: min-content 1fr min-content;
18 | }
19 |
20 | .container {
21 | grid-area: sudoku;
22 | display: grid;
23 | margin-top: 1rem;
24 | grid-template-areas:
25 | "title"
26 | "board"
27 | "slider"
28 | "buttons"
29 | "status";
30 | }
31 |
32 | .title-row {
33 | grid-area: title;
34 | justify-self: center;
35 | }
36 |
37 | .board-row {
38 | grid-area: board;
39 | justify-self: center;
40 | margin-top: 1em;
41 | }
42 |
43 | .slider-row {
44 | grid-area: slider;
45 | justify-self: center;
46 | display: flex;
47 | align-items: center;
48 | margin-top: 1em;
49 | }
50 |
51 | .buttons-row {
52 | grid-area: buttons;
53 | justify-self: center;
54 | margin-top: 1em;
55 | }
56 |
57 | .status-row {
58 | grid-area: status;
59 | justify-self: center;
60 | }
61 |
62 | footer {
63 | grid-area: footer;
64 | width: 100%;
65 | background-color: #196cca;
66 | color: #eef0f2;
67 | padding: 1em 0;
68 | text-align: center;
69 | }
70 |
71 | .footer-info {
72 | margin: 0;
73 | }
74 |
75 | .footer-info a {
76 | color: inherit;
77 | text-decoration: none;
78 | }
79 |
80 | .footer-info a:hover {
81 | text-decoration: underline;
82 | }
83 |
--------------------------------------------------------------------------------
/src/js/Sudoku.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | class Sudoku {
4 | constructor() {
5 | this.board = [
6 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
7 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
8 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
9 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
10 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
11 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
12 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
13 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
14 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
15 | ];
16 | }
17 |
18 | /**
19 | * Clears the board
20 | */
21 | clear() {
22 | this.board = [
23 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
24 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
25 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
26 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
27 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
28 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
29 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
30 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
31 | [0, 0, 0, 0, 0, 0, 0, 0, 0],
32 | ];
33 | }
34 |
35 | /**
36 | * Checks if a number can be placed in the square specified by (row, col)
37 | * @param {Number} row Row index to be checked
38 | * @param {Number} col Column index to be checked
39 | * @param {Number} number Number to test if it is possible to place
40 | * @returns {Boolean} True if the number can be placed, false otherwise
41 | */
42 | isNumberValid(row, col, number) {
43 | return this.isNumberValidRow(row, number) &&
44 | this.isNumberValidCol(col, number) &&
45 | this.isNumberValidBox(row, col, number);
46 | }
47 |
48 | /**
49 | * Checks if a number can be placed in the row specified
50 | * @param {Number} row Row index to be checked
51 | * @param {Number} number Number to test if it is possible to place
52 | * @returns {Boolean} True if the number can be placed, false otherwise
53 | */
54 | isNumberValidRow(row, number) {
55 | for (let y = 0; y < this.board.length; y++) {
56 | if (this.board[row][y] === number) {
57 | return false;
58 | }
59 | }
60 | return true;
61 | }
62 |
63 | /**
64 | * Checks if a number can be placed in the column specified
65 | * @param {*} col Column index to be checked
66 | * @param {*} number Number to test if it is possible to place
67 | * @returns {Boolean} True if the number can be placed, false otherwise
68 | */
69 | isNumberValidCol(col, number) {
70 | for (let x = 0; x < this.board.length; x++) {
71 | if (this.board[x][col] === number) {
72 | return false;
73 | }
74 | }
75 | return true;
76 | }
77 |
78 | /**
79 | * Checks if number can be placed in the box that contains the square specified by (row, col)
80 | * @param {Number} row Row index to be checked
81 | * @param {Number} col Column index to be checked
82 | * @param {Number} number Number to test if it is possible to place
83 | * @returns {Boolean} True if the number can be placed, false otherwise
84 | */
85 | isNumberValidBox(row, col, number) {
86 | let rowStart = row - row % 3;
87 | let rowEnd = rowStart + 3;
88 | let colStart = col - col % 3;
89 | let colEnd = colStart + 3;
90 |
91 | for (let x = rowStart; x < rowEnd; x++) {
92 | for (let y = colStart; y < colEnd; y++) {
93 | if (this.board[x][y] === number) {
94 | return false;
95 | }
96 | }
97 | }
98 | return true;
99 | }
100 |
101 | /**
102 | * Finds the next empty cell
103 | * @returns {Array|null} A pair of coordinates if an empty cell was found, null otherwise
104 | */
105 | findNextEmpty() {
106 | for (let i = 0; i < this.board.length; i++) {
107 | for (let j = 0; j < this.board.length; j++) {
108 | if (this.board[i][j] === 0) {
109 | return [i, j];
110 | }
111 | }
112 | }
113 | return null;
114 | }
115 | }
116 |
117 | export { Sudoku };
--------------------------------------------------------------------------------
/src/js/SudokuGenerator.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | import { Sudoku } from './Sudoku.js';
4 | import _ from 'lodash';
5 |
6 | class SudokuGenerator {
7 | constructor() {
8 | this.sudoku = new Sudoku();
9 | }
10 |
11 | /**
12 | * Solves the sudoku puzzle by using backtracking
13 | * @returns {Boolean} True if the sudoku has at least 1 solution, false if unsolvable
14 | */
15 | solve() {
16 | let empty = this.sudoku.findNextEmpty();
17 | if (!empty) {
18 | return true;
19 | }
20 | else {
21 | let [row, col] = empty;
22 | let possibleNums = [1, 2, 3, 4, 5, 6, 7, 8, 9];
23 | possibleNums = _.shuffle(possibleNums);
24 |
25 | for (const possibleNum of possibleNums) {
26 | if (this.sudoku.isNumberValid(row, col, possibleNum)) {
27 | this.sudoku.board[row][col] = possibleNum;
28 |
29 | if (this.solve()) {
30 | return true;
31 | }
32 |
33 | this.sudoku.board[row][col] = 0;
34 | }
35 | }
36 | return false;
37 | }
38 | }
39 |
40 | /**
41 | * Solves and empty sudoku and then removes cells to generate a puzzle
42 | */
43 | generateSudoku() {
44 | this.solve();
45 | let emptyCells = Math.floor(Math.random() * 14) + 51; // Number between 51 and 64
46 | let cellPositions = [];
47 |
48 | for (let i = 0; i < this.sudoku.board.length; i++) {
49 | for (let j = 0; j < this.sudoku.board.length; j++) {
50 | cellPositions.push([i, j]);
51 | }
52 | }
53 |
54 | cellPositions = _.shuffle(cellPositions).slice(0, emptyCells);
55 |
56 | for (let i = 0; i < emptyCells; i++) {
57 | let [row, col] = cellPositions[i];
58 | this.sudoku.board[row][col] = 0;
59 | }
60 |
61 | return this.sudoku;
62 | }
63 | }
64 |
65 | export { SudokuGenerator };
--------------------------------------------------------------------------------
/src/js/SudokuRenderer.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | import { Sudoku } from './Sudoku.js';
4 | import { SudokuSolver } from './SudokuSolver.js';
5 |
6 | class SudokuRenderer {
7 | constructor(sudokuHTMLElement) {
8 | this.sudokuHTMLElement = sudokuHTMLElement;
9 | this.sudoku = new Sudoku();
10 | this.solver = new SudokuSolver(this.sudoku, this.renderCell);
11 | }
12 |
13 | /**
14 | * Render the sudoku on the HTML view
15 | */
16 | renderSudoku() {
17 | // Remove all children of the sudokuHTMLElement
18 | while (this.sudokuHTMLElement.firstChild) {
19 | this.sudokuHTMLElement.removeChild(this.sudokuHTMLElement.firstChild);
20 | }
21 |
22 | for (let i = 0; i < this.sudoku.board.length; i++) {
23 | let sudokuRow = document.createElement('tr');
24 | for (let j = 0; j < this.sudoku.board.length; j++) {
25 | let sudokuCell = document.createElement('td');
26 | let num = this.sudoku.board[i][j];
27 |
28 | sudokuCell.id = `cell-${i}-${j}`;
29 |
30 | sudokuCell.addEventListener('keydown', evt => {
31 | let [row, col] = evt.target.id.match(/\d/g).map(num => parseInt(num));
32 | let input = parseInt(evt.key);
33 |
34 | if (evt.target.textContent.length > 0 || isNaN(input)) {
35 | if (evt.key === 'Backspace') {
36 | evt.target.classList.remove('given-num');
37 | evt.target.classList.add('discovered-num');
38 | this.sudoku.board[row][col] = 0;
39 | }
40 | else {
41 | evt.preventDefault();
42 | }
43 | }
44 | else {
45 | if (this.sudoku.isNumberValid(row, col, input)) {
46 | evt.target.classList.remove('discovered-num');
47 | evt.target.classList.add('given-num');
48 | this.sudoku.board[row][col] = input;
49 | }
50 | else {
51 | evt.preventDefault();
52 | }
53 | }
54 | });
55 |
56 | // Highlight row, column and box where the focused cell is in
57 | sudokuCell.addEventListener('focusin', evt => {
58 | let [row, col] = evt.target.id.match(/\d/g).map(num => parseInt(num));
59 | let rowStart = row - row % 3;
60 | let rowEnd = rowStart + 3;
61 | let colStart = col - col % 3;
62 | let colEnd = colStart + 3;
63 |
64 | for (let i = 0; i < this.sudoku.board[row].length; i++) {
65 | let cellRow = document.getElementById(`cell-${row}-${i}`);
66 | let cellCol = document.getElementById(`cell-${i}-${col}`);
67 | cellRow.classList.add('focused-cell');
68 | cellCol.classList.add('focused-cell');
69 | }
70 |
71 | for (let x = rowStart; x < rowEnd; x++) {
72 | for (let y = colStart; y < colEnd; y++) {
73 | let cellBox = document.getElementById(`cell-${x}-${y}`);
74 | cellBox.classList.add('focused-cell');
75 | }
76 | }
77 | });
78 |
79 | // Remove highlight of row, column and box where the focused cell was in
80 | sudokuCell.addEventListener('focusout', evt => {
81 | let [row, col] = evt.target.id.match(/\d/g).map(num => parseInt(num));
82 | let rowStart = row - row % 3;
83 | let rowEnd = rowStart + 3;
84 | let colStart = col - col % 3;
85 | let colEnd = colStart + 3;
86 |
87 | for (let i = 0; i < this.sudoku.board[row].length; i++) {
88 | let cellRow = document.getElementById(`cell-${row}-${i}`);
89 | let cellCol = document.getElementById(`cell-${i}-${col}`);
90 | cellRow.classList.remove('focused-cell');
91 | cellCol.classList.remove('focused-cell');
92 | }
93 |
94 | for (let x = rowStart; x < rowEnd; x++) {
95 | for (let y = colStart; y < colEnd; y++) {
96 | let cellBox = document.getElementById(`cell-${x}-${y}`);
97 | cellBox.classList.remove('focused-cell');
98 | }
99 | }
100 | });
101 |
102 | if (num !== 0) {
103 | sudokuCell.textContent = num;
104 | sudokuCell.classList.add('given-num');
105 | }
106 | else {
107 | sudokuCell.classList.add('discovered-num');
108 | }
109 |
110 | if (i === 2 || i === 5) {
111 | sudokuCell.classList.add('box-boundary-row');
112 | }
113 | if (j === 2 || j === 5) {
114 | sudokuCell.classList.add('box-boundary-col');
115 | }
116 |
117 | sudokuRow.appendChild(sudokuCell);
118 | }
119 | this.sudokuHTMLElement.appendChild(sudokuRow);
120 | }
121 | }
122 |
123 | /**
124 | * Change the text content of the cell specified by cellId
125 | * @param {String} cellId The HTML id of the cell whose text context will be changed
126 | * @param {String|Number} value The new text/value for the cell
127 | */
128 | renderCell(cellId, value) {
129 | let cell = document.getElementById(cellId);
130 | cell.textContent = value;
131 | }
132 |
133 | async renderSolve() {
134 | return await this.solver.solve();
135 | }
136 |
137 | /**
138 | * Re-renders the sudoku
139 | */
140 | clear() {
141 | this.solver.cancelSolve();
142 | this.sudoku.clear();
143 | this.renderSudoku();
144 | }
145 |
146 | setSudoku(sudoku) {
147 | this.sudoku = sudoku;
148 | this.solver.setSudoku(sudoku);
149 | }
150 |
151 | /**
152 | * Makes the sudoku editable or uneditable by the user
153 | * @param {Boolean} editable If true the sudoku can be edited by the user, otherwise it can't be edited
154 | */
155 | setEditable(editable) {
156 | for (let i = 0; i < this.sudoku.board.length; i++) {
157 | for (let j = 0; j < this.sudoku.board.length; j++) {
158 | let currentCell = document.getElementById(`cell-${i}-${j}`);
159 | currentCell.contentEditable = editable;
160 | }
161 | }
162 | }
163 | }
164 |
165 | export { SudokuRenderer };
--------------------------------------------------------------------------------
/src/js/SudokuSolver.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | import { Util } from './Util.js';
4 |
5 | // Constants for the simulation speed,
6 | // each value represents the how much the solve function will sleep in milliseconds
7 | const solvingSpeed = {
8 | SLOW: 80,
9 | AVERAGE: 35,
10 | FAST: 1,
11 | FASTEST: 0
12 | };
13 |
14 | class SudokuSolver {
15 | constructor(sudoku, renderCellFunc) {
16 | this.sudoku = sudoku;
17 | this.renderCell = renderCellFunc;
18 | this.speed = solvingSpeed.FAST;
19 | this.isSolveCanceled = false;
20 | this.wasCanceled = false;
21 | this.isBeingSolved = false;
22 | }
23 |
24 | setSudoku(sudoku) {
25 | this.sudoku = sudoku;
26 | }
27 |
28 | setSolvingSpeed(speed) {
29 | this.speed = speed;
30 | }
31 |
32 | /**
33 | * Solves the sudoku puzzle by using backtracking
34 | * @returns {Boolean} True if the sudoku has at least 1 solution, false if unsolvable
35 | */
36 | async solve() {
37 | if (!this.isSolveCanceled) {
38 | const empty = this.sudoku.findNextEmpty();
39 | if (!empty) {
40 | this.wasCanceled = false;
41 | this.isBeingSolved = false;
42 | return true;
43 | }
44 | else {
45 | this.isBeingSolved = true;
46 | let [row, col] = empty;
47 |
48 | for (let possibleNum = 1; possibleNum <= 9; possibleNum++) {
49 | if (this.sudoku.isNumberValid(row, col, possibleNum)) {
50 | this.sudoku.board[row][col] = possibleNum;
51 |
52 | this.renderCell(`cell-${row}-${col}`, possibleNum);
53 | await Util.sleep(this.speed);
54 |
55 | if (await this.solve()) {
56 | return true;
57 | }
58 |
59 | this.sudoku.board[row][col] = 0;
60 | this.renderCell(`cell-${row}-${col}`, '');
61 | }
62 | }
63 | return false;
64 | }
65 | }
66 | this.isSolveCanceled = false;
67 | this.wasCanceled = true;
68 | this.isBeingSolved = false;
69 | return true;
70 | }
71 |
72 | cancelSolve() {
73 | if (this.isBeingSolved) {
74 | this.isSolveCanceled = true;
75 | }
76 | }
77 | }
78 |
79 | export { SudokuSolver, solvingSpeed };
--------------------------------------------------------------------------------
/src/js/Util.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const Util = {
4 | /**
5 | * Sleeps for a certain number of milliseconds
6 | * @param {Number} ms Number of milliseconds to sleep
7 | * @throws Will throw if the argument is null or undefined
8 | */
9 | sleep: async function (ms) {
10 | if (ms === 0) return;
11 | if (!ms) throw new Error('Parameter ms not defined!');
12 |
13 | return new Promise((resolve, reject) => {
14 | setTimeout(resolve, ms);
15 | });
16 | }
17 | }
18 |
19 | export { Util };
--------------------------------------------------------------------------------
/src/js/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | import { SudokuRenderer } from './SudokuRenderer.js';
4 | import { solvingSpeed } from './SudokuSolver.js';
5 | import { SudokuGenerator } from './SudokuGenerator.js';
6 |
7 | // Import custom stylesheets
8 | import '../css/index.css';
9 | import '../css/layout.css';
10 |
11 | const sudokuTblElement = document.getElementById('sudoku');
12 | const sldSolvingSpeed = document.getElementById('sld-solving-speed');
13 | const btnClear = document.getElementById('btn-clear');
14 | const btnSolve = document.getElementById('btn-solve');
15 | const btnGenerate = document.getElementById('btn-generate');
16 | const sudokuStatus = document.getElementById('sudoku-status');
17 |
18 | const sudokuRenderer = new SudokuRenderer(sudokuTblElement);
19 | sudokuRenderer.renderSudoku();
20 | sudokuRenderer.setEditable(true);
21 |
22 | sldSolvingSpeed.addEventListener('change', evt => {
23 | const sliderValue = parseInt(evt.target.value);
24 |
25 | switch (sliderValue) {
26 | case 0:
27 | sudokuRenderer.solver.setSolvingSpeed(solvingSpeed.SLOW);
28 | break;
29 | case 1:
30 | sudokuRenderer.solver.setSolvingSpeed(solvingSpeed.AVERAGE);
31 | break;
32 | case 2:
33 | sudokuRenderer.solver.setSolvingSpeed(solvingSpeed.FAST);
34 | break;
35 | case 3:
36 | sudokuRenderer.solver.setSolvingSpeed(solvingSpeed.FASTEST);
37 | break;
38 | }
39 | });
40 |
41 | btnClear.addEventListener('click', evt => {
42 | sudokuRenderer.clear();
43 | sudokuRenderer.setEditable(true);
44 | sudokuStatus.textContent = '';
45 | btnSolve.disabled = false;
46 | });
47 |
48 | btnSolve.addEventListener('click', async evt => {
49 | sudokuRenderer.setEditable(false);
50 | sudokuStatus.textContent = '';
51 | sudokuStatus.classList.value = '';
52 | evt.target.disabled = true;
53 | if (await sudokuRenderer.renderSolve()) {
54 | if (!sudokuRenderer.solver.wasCanceled) {
55 | sudokuStatus.classList.add('status-success');
56 | sudokuStatus.textContent = 'Solved!';
57 | }
58 | }
59 | else {
60 | sudokuStatus.classList.add('status-failed');
61 | sudokuStatus.textContent = 'Unsolvable!';
62 | }
63 | evt.target.disabled = false;
64 | });
65 |
66 | btnGenerate.addEventListener('click', evt => {
67 | const sudokuGenerator = new SudokuGenerator();
68 | sudokuRenderer.setSudoku(sudokuGenerator.generateSudoku());
69 | sudokuRenderer.renderSudoku();
70 | sudokuStatus.textContent = '';
71 | });
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const path = require('path');
2 |
3 | module.exports = {
4 | entry: './src/js/index.js',
5 | mode: 'production',
6 | output: {
7 | filename: 'bundle.js',
8 | path: path.resolve(__dirname, 'dist')
9 | },
10 | module: {
11 | rules: [
12 | {
13 | test: /\.css$/,
14 | use: [
15 | 'style-loader',
16 | 'css-loader'
17 | ]
18 | }
19 | ]
20 | }
21 | };
--------------------------------------------------------------------------------