├── .gitignore ├── LICENSE ├── index.html ├── package-lock.json ├── package.json ├── src ├── App.tsx ├── HangmanDrawing.tsx ├── HangmanWord.tsx ├── Keyboard.module.css ├── Keyboard.tsx ├── main.tsx ├── vite-env.d.ts └── wordList.json ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 WebDevSimplified 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 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hangman", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "hangman", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "react": "^18.0.0", 12 | "react-dom": "^18.0.0" 13 | }, 14 | "devDependencies": { 15 | "@types/react": "^18.0.0", 16 | "@types/react-dom": "^18.0.0", 17 | "@vitejs/plugin-react": "^1.3.0", 18 | "typescript": "^4.6.3", 19 | "vite": "^2.9.15" 20 | } 21 | }, 22 | "node_modules/@ampproject/remapping": { 23 | "version": "2.2.0", 24 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 25 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 26 | "dev": true, 27 | "dependencies": { 28 | "@jridgewell/gen-mapping": "^0.1.0", 29 | "@jridgewell/trace-mapping": "^0.3.9" 30 | }, 31 | "engines": { 32 | "node": ">=6.0.0" 33 | } 34 | }, 35 | "node_modules/@babel/code-frame": { 36 | "version": "7.18.6", 37 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 38 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 39 | "dev": true, 40 | "dependencies": { 41 | "@babel/highlight": "^7.18.6" 42 | }, 43 | "engines": { 44 | "node": ">=6.9.0" 45 | } 46 | }, 47 | "node_modules/@babel/compat-data": { 48 | "version": "7.19.4", 49 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", 50 | "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", 51 | "dev": true, 52 | "engines": { 53 | "node": ">=6.9.0" 54 | } 55 | }, 56 | "node_modules/@babel/core": { 57 | "version": "7.19.6", 58 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", 59 | "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", 60 | "dev": true, 61 | "dependencies": { 62 | "@ampproject/remapping": "^2.1.0", 63 | "@babel/code-frame": "^7.18.6", 64 | "@babel/generator": "^7.19.6", 65 | "@babel/helper-compilation-targets": "^7.19.3", 66 | "@babel/helper-module-transforms": "^7.19.6", 67 | "@babel/helpers": "^7.19.4", 68 | "@babel/parser": "^7.19.6", 69 | "@babel/template": "^7.18.10", 70 | "@babel/traverse": "^7.19.6", 71 | "@babel/types": "^7.19.4", 72 | "convert-source-map": "^1.7.0", 73 | "debug": "^4.1.0", 74 | "gensync": "^1.0.0-beta.2", 75 | "json5": "^2.2.1", 76 | "semver": "^6.3.0" 77 | }, 78 | "engines": { 79 | "node": ">=6.9.0" 80 | }, 81 | "funding": { 82 | "type": "opencollective", 83 | "url": "https://opencollective.com/babel" 84 | } 85 | }, 86 | "node_modules/@babel/generator": { 87 | "version": "7.19.6", 88 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz", 89 | "integrity": "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==", 90 | "dev": true, 91 | "dependencies": { 92 | "@babel/types": "^7.19.4", 93 | "@jridgewell/gen-mapping": "^0.3.2", 94 | "jsesc": "^2.5.1" 95 | }, 96 | "engines": { 97 | "node": ">=6.9.0" 98 | } 99 | }, 100 | "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { 101 | "version": "0.3.2", 102 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 103 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 104 | "dev": true, 105 | "dependencies": { 106 | "@jridgewell/set-array": "^1.0.1", 107 | "@jridgewell/sourcemap-codec": "^1.4.10", 108 | "@jridgewell/trace-mapping": "^0.3.9" 109 | }, 110 | "engines": { 111 | "node": ">=6.0.0" 112 | } 113 | }, 114 | "node_modules/@babel/helper-annotate-as-pure": { 115 | "version": "7.18.6", 116 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", 117 | "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", 118 | "dev": true, 119 | "dependencies": { 120 | "@babel/types": "^7.18.6" 121 | }, 122 | "engines": { 123 | "node": ">=6.9.0" 124 | } 125 | }, 126 | "node_modules/@babel/helper-compilation-targets": { 127 | "version": "7.19.3", 128 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", 129 | "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", 130 | "dev": true, 131 | "dependencies": { 132 | "@babel/compat-data": "^7.19.3", 133 | "@babel/helper-validator-option": "^7.18.6", 134 | "browserslist": "^4.21.3", 135 | "semver": "^6.3.0" 136 | }, 137 | "engines": { 138 | "node": ">=6.9.0" 139 | }, 140 | "peerDependencies": { 141 | "@babel/core": "^7.0.0" 142 | } 143 | }, 144 | "node_modules/@babel/helper-environment-visitor": { 145 | "version": "7.18.9", 146 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 147 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 148 | "dev": true, 149 | "engines": { 150 | "node": ">=6.9.0" 151 | } 152 | }, 153 | "node_modules/@babel/helper-function-name": { 154 | "version": "7.19.0", 155 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", 156 | "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", 157 | "dev": true, 158 | "dependencies": { 159 | "@babel/template": "^7.18.10", 160 | "@babel/types": "^7.19.0" 161 | }, 162 | "engines": { 163 | "node": ">=6.9.0" 164 | } 165 | }, 166 | "node_modules/@babel/helper-hoist-variables": { 167 | "version": "7.18.6", 168 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 169 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 170 | "dev": true, 171 | "dependencies": { 172 | "@babel/types": "^7.18.6" 173 | }, 174 | "engines": { 175 | "node": ">=6.9.0" 176 | } 177 | }, 178 | "node_modules/@babel/helper-module-imports": { 179 | "version": "7.18.6", 180 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 181 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 182 | "dev": true, 183 | "dependencies": { 184 | "@babel/types": "^7.18.6" 185 | }, 186 | "engines": { 187 | "node": ">=6.9.0" 188 | } 189 | }, 190 | "node_modules/@babel/helper-module-transforms": { 191 | "version": "7.19.6", 192 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", 193 | "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", 194 | "dev": true, 195 | "dependencies": { 196 | "@babel/helper-environment-visitor": "^7.18.9", 197 | "@babel/helper-module-imports": "^7.18.6", 198 | "@babel/helper-simple-access": "^7.19.4", 199 | "@babel/helper-split-export-declaration": "^7.18.6", 200 | "@babel/helper-validator-identifier": "^7.19.1", 201 | "@babel/template": "^7.18.10", 202 | "@babel/traverse": "^7.19.6", 203 | "@babel/types": "^7.19.4" 204 | }, 205 | "engines": { 206 | "node": ">=6.9.0" 207 | } 208 | }, 209 | "node_modules/@babel/helper-plugin-utils": { 210 | "version": "7.19.0", 211 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", 212 | "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", 213 | "dev": true, 214 | "engines": { 215 | "node": ">=6.9.0" 216 | } 217 | }, 218 | "node_modules/@babel/helper-simple-access": { 219 | "version": "7.19.4", 220 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", 221 | "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", 222 | "dev": true, 223 | "dependencies": { 224 | "@babel/types": "^7.19.4" 225 | }, 226 | "engines": { 227 | "node": ">=6.9.0" 228 | } 229 | }, 230 | "node_modules/@babel/helper-split-export-declaration": { 231 | "version": "7.18.6", 232 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 233 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 234 | "dev": true, 235 | "dependencies": { 236 | "@babel/types": "^7.18.6" 237 | }, 238 | "engines": { 239 | "node": ">=6.9.0" 240 | } 241 | }, 242 | "node_modules/@babel/helper-string-parser": { 243 | "version": "7.19.4", 244 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", 245 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", 246 | "dev": true, 247 | "engines": { 248 | "node": ">=6.9.0" 249 | } 250 | }, 251 | "node_modules/@babel/helper-validator-identifier": { 252 | "version": "7.19.1", 253 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 254 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 255 | "dev": true, 256 | "engines": { 257 | "node": ">=6.9.0" 258 | } 259 | }, 260 | "node_modules/@babel/helper-validator-option": { 261 | "version": "7.18.6", 262 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 263 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 264 | "dev": true, 265 | "engines": { 266 | "node": ">=6.9.0" 267 | } 268 | }, 269 | "node_modules/@babel/helpers": { 270 | "version": "7.19.4", 271 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", 272 | "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", 273 | "dev": true, 274 | "dependencies": { 275 | "@babel/template": "^7.18.10", 276 | "@babel/traverse": "^7.19.4", 277 | "@babel/types": "^7.19.4" 278 | }, 279 | "engines": { 280 | "node": ">=6.9.0" 281 | } 282 | }, 283 | "node_modules/@babel/highlight": { 284 | "version": "7.18.6", 285 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 286 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 287 | "dev": true, 288 | "dependencies": { 289 | "@babel/helper-validator-identifier": "^7.18.6", 290 | "chalk": "^2.0.0", 291 | "js-tokens": "^4.0.0" 292 | }, 293 | "engines": { 294 | "node": ">=6.9.0" 295 | } 296 | }, 297 | "node_modules/@babel/parser": { 298 | "version": "7.19.6", 299 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", 300 | "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==", 301 | "dev": true, 302 | "bin": { 303 | "parser": "bin/babel-parser.js" 304 | }, 305 | "engines": { 306 | "node": ">=6.0.0" 307 | } 308 | }, 309 | "node_modules/@babel/plugin-syntax-jsx": { 310 | "version": "7.18.6", 311 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", 312 | "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", 313 | "dev": true, 314 | "dependencies": { 315 | "@babel/helper-plugin-utils": "^7.18.6" 316 | }, 317 | "engines": { 318 | "node": ">=6.9.0" 319 | }, 320 | "peerDependencies": { 321 | "@babel/core": "^7.0.0-0" 322 | } 323 | }, 324 | "node_modules/@babel/plugin-transform-react-jsx": { 325 | "version": "7.19.0", 326 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", 327 | "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", 328 | "dev": true, 329 | "dependencies": { 330 | "@babel/helper-annotate-as-pure": "^7.18.6", 331 | "@babel/helper-module-imports": "^7.18.6", 332 | "@babel/helper-plugin-utils": "^7.19.0", 333 | "@babel/plugin-syntax-jsx": "^7.18.6", 334 | "@babel/types": "^7.19.0" 335 | }, 336 | "engines": { 337 | "node": ">=6.9.0" 338 | }, 339 | "peerDependencies": { 340 | "@babel/core": "^7.0.0-0" 341 | } 342 | }, 343 | "node_modules/@babel/plugin-transform-react-jsx-development": { 344 | "version": "7.18.6", 345 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", 346 | "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", 347 | "dev": true, 348 | "dependencies": { 349 | "@babel/plugin-transform-react-jsx": "^7.18.6" 350 | }, 351 | "engines": { 352 | "node": ">=6.9.0" 353 | }, 354 | "peerDependencies": { 355 | "@babel/core": "^7.0.0-0" 356 | } 357 | }, 358 | "node_modules/@babel/plugin-transform-react-jsx-self": { 359 | "version": "7.18.6", 360 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", 361 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", 362 | "dev": true, 363 | "dependencies": { 364 | "@babel/helper-plugin-utils": "^7.18.6" 365 | }, 366 | "engines": { 367 | "node": ">=6.9.0" 368 | }, 369 | "peerDependencies": { 370 | "@babel/core": "^7.0.0-0" 371 | } 372 | }, 373 | "node_modules/@babel/plugin-transform-react-jsx-source": { 374 | "version": "7.19.6", 375 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", 376 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", 377 | "dev": true, 378 | "dependencies": { 379 | "@babel/helper-plugin-utils": "^7.19.0" 380 | }, 381 | "engines": { 382 | "node": ">=6.9.0" 383 | }, 384 | "peerDependencies": { 385 | "@babel/core": "^7.0.0-0" 386 | } 387 | }, 388 | "node_modules/@babel/template": { 389 | "version": "7.18.10", 390 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", 391 | "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", 392 | "dev": true, 393 | "dependencies": { 394 | "@babel/code-frame": "^7.18.6", 395 | "@babel/parser": "^7.18.10", 396 | "@babel/types": "^7.18.10" 397 | }, 398 | "engines": { 399 | "node": ">=6.9.0" 400 | } 401 | }, 402 | "node_modules/@babel/traverse": { 403 | "version": "7.19.6", 404 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz", 405 | "integrity": "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==", 406 | "dev": true, 407 | "dependencies": { 408 | "@babel/code-frame": "^7.18.6", 409 | "@babel/generator": "^7.19.6", 410 | "@babel/helper-environment-visitor": "^7.18.9", 411 | "@babel/helper-function-name": "^7.19.0", 412 | "@babel/helper-hoist-variables": "^7.18.6", 413 | "@babel/helper-split-export-declaration": "^7.18.6", 414 | "@babel/parser": "^7.19.6", 415 | "@babel/types": "^7.19.4", 416 | "debug": "^4.1.0", 417 | "globals": "^11.1.0" 418 | }, 419 | "engines": { 420 | "node": ">=6.9.0" 421 | } 422 | }, 423 | "node_modules/@babel/types": { 424 | "version": "7.19.4", 425 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", 426 | "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", 427 | "dev": true, 428 | "dependencies": { 429 | "@babel/helper-string-parser": "^7.19.4", 430 | "@babel/helper-validator-identifier": "^7.19.1", 431 | "to-fast-properties": "^2.0.0" 432 | }, 433 | "engines": { 434 | "node": ">=6.9.0" 435 | } 436 | }, 437 | "node_modules/@esbuild/linux-loong64": { 438 | "version": "0.14.54", 439 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", 440 | "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", 441 | "cpu": [ 442 | "loong64" 443 | ], 444 | "dev": true, 445 | "optional": true, 446 | "os": [ 447 | "linux" 448 | ], 449 | "engines": { 450 | "node": ">=12" 451 | } 452 | }, 453 | "node_modules/@jridgewell/gen-mapping": { 454 | "version": "0.1.1", 455 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 456 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 457 | "dev": true, 458 | "dependencies": { 459 | "@jridgewell/set-array": "^1.0.0", 460 | "@jridgewell/sourcemap-codec": "^1.4.10" 461 | }, 462 | "engines": { 463 | "node": ">=6.0.0" 464 | } 465 | }, 466 | "node_modules/@jridgewell/resolve-uri": { 467 | "version": "3.1.0", 468 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 469 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 470 | "dev": true, 471 | "engines": { 472 | "node": ">=6.0.0" 473 | } 474 | }, 475 | "node_modules/@jridgewell/set-array": { 476 | "version": "1.1.2", 477 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 478 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 479 | "dev": true, 480 | "engines": { 481 | "node": ">=6.0.0" 482 | } 483 | }, 484 | "node_modules/@jridgewell/sourcemap-codec": { 485 | "version": "1.4.14", 486 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 487 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 488 | "dev": true 489 | }, 490 | "node_modules/@jridgewell/trace-mapping": { 491 | "version": "0.3.17", 492 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 493 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 494 | "dev": true, 495 | "dependencies": { 496 | "@jridgewell/resolve-uri": "3.1.0", 497 | "@jridgewell/sourcemap-codec": "1.4.14" 498 | } 499 | }, 500 | "node_modules/@rollup/pluginutils": { 501 | "version": "4.2.1", 502 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", 503 | "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", 504 | "dev": true, 505 | "dependencies": { 506 | "estree-walker": "^2.0.1", 507 | "picomatch": "^2.2.2" 508 | }, 509 | "engines": { 510 | "node": ">= 8.0.0" 511 | } 512 | }, 513 | "node_modules/@types/prop-types": { 514 | "version": "15.7.5", 515 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 516 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 517 | "dev": true 518 | }, 519 | "node_modules/@types/react": { 520 | "version": "18.0.22", 521 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.22.tgz", 522 | "integrity": "sha512-4yWc5PyCkZN8ke8K9rQHkTXxHIWHxLzzW6RI1kXVoepkD3vULpKzC2sDtAMKn78h92BRYuzf+7b/ms7ajE6hFw==", 523 | "dev": true, 524 | "dependencies": { 525 | "@types/prop-types": "*", 526 | "@types/scheduler": "*", 527 | "csstype": "^3.0.2" 528 | } 529 | }, 530 | "node_modules/@types/react-dom": { 531 | "version": "18.0.7", 532 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.7.tgz", 533 | "integrity": "sha512-HaXc+BbqAZE1RdsK3tC8SbkFy6UL2xF76lT9rQs5JkPrJg3rWA3Ou/Lhw3YJQzEDkBpmJ79nBsfnd05WrBd2QQ==", 534 | "dev": true, 535 | "dependencies": { 536 | "@types/react": "*" 537 | } 538 | }, 539 | "node_modules/@types/scheduler": { 540 | "version": "0.16.2", 541 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 542 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 543 | "dev": true 544 | }, 545 | "node_modules/@vitejs/plugin-react": { 546 | "version": "1.3.2", 547 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.3.2.tgz", 548 | "integrity": "sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA==", 549 | "dev": true, 550 | "dependencies": { 551 | "@babel/core": "^7.17.10", 552 | "@babel/plugin-transform-react-jsx": "^7.17.3", 553 | "@babel/plugin-transform-react-jsx-development": "^7.16.7", 554 | "@babel/plugin-transform-react-jsx-self": "^7.16.7", 555 | "@babel/plugin-transform-react-jsx-source": "^7.16.7", 556 | "@rollup/pluginutils": "^4.2.1", 557 | "react-refresh": "^0.13.0", 558 | "resolve": "^1.22.0" 559 | }, 560 | "engines": { 561 | "node": ">=12.0.0" 562 | } 563 | }, 564 | "node_modules/ansi-styles": { 565 | "version": "3.2.1", 566 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 567 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 568 | "dev": true, 569 | "dependencies": { 570 | "color-convert": "^1.9.0" 571 | }, 572 | "engines": { 573 | "node": ">=4" 574 | } 575 | }, 576 | "node_modules/browserslist": { 577 | "version": "4.21.4", 578 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", 579 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", 580 | "dev": true, 581 | "funding": [ 582 | { 583 | "type": "opencollective", 584 | "url": "https://opencollective.com/browserslist" 585 | }, 586 | { 587 | "type": "tidelift", 588 | "url": "https://tidelift.com/funding/github/npm/browserslist" 589 | } 590 | ], 591 | "dependencies": { 592 | "caniuse-lite": "^1.0.30001400", 593 | "electron-to-chromium": "^1.4.251", 594 | "node-releases": "^2.0.6", 595 | "update-browserslist-db": "^1.0.9" 596 | }, 597 | "bin": { 598 | "browserslist": "cli.js" 599 | }, 600 | "engines": { 601 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 602 | } 603 | }, 604 | "node_modules/caniuse-lite": { 605 | "version": "1.0.30001425", 606 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001425.tgz", 607 | "integrity": "sha512-/pzFv0OmNG6W0ym80P3NtapU0QEiDS3VuYAZMGoLLqiC7f6FJFe1MjpQDREGApeenD9wloeytmVDj+JLXPC6qw==", 608 | "dev": true, 609 | "funding": [ 610 | { 611 | "type": "opencollective", 612 | "url": "https://opencollective.com/browserslist" 613 | }, 614 | { 615 | "type": "tidelift", 616 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 617 | } 618 | ] 619 | }, 620 | "node_modules/chalk": { 621 | "version": "2.4.2", 622 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 623 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 624 | "dev": true, 625 | "dependencies": { 626 | "ansi-styles": "^3.2.1", 627 | "escape-string-regexp": "^1.0.5", 628 | "supports-color": "^5.3.0" 629 | }, 630 | "engines": { 631 | "node": ">=4" 632 | } 633 | }, 634 | "node_modules/color-convert": { 635 | "version": "1.9.3", 636 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 637 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 638 | "dev": true, 639 | "dependencies": { 640 | "color-name": "1.1.3" 641 | } 642 | }, 643 | "node_modules/color-name": { 644 | "version": "1.1.3", 645 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 646 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 647 | "dev": true 648 | }, 649 | "node_modules/convert-source-map": { 650 | "version": "1.9.0", 651 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 652 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 653 | "dev": true 654 | }, 655 | "node_modules/csstype": { 656 | "version": "3.1.1", 657 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 658 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", 659 | "dev": true 660 | }, 661 | "node_modules/debug": { 662 | "version": "4.3.4", 663 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 664 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 665 | "dev": true, 666 | "dependencies": { 667 | "ms": "2.1.2" 668 | }, 669 | "engines": { 670 | "node": ">=6.0" 671 | }, 672 | "peerDependenciesMeta": { 673 | "supports-color": { 674 | "optional": true 675 | } 676 | } 677 | }, 678 | "node_modules/electron-to-chromium": { 679 | "version": "1.4.284", 680 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", 681 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", 682 | "dev": true 683 | }, 684 | "node_modules/esbuild": { 685 | "version": "0.14.54", 686 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", 687 | "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", 688 | "dev": true, 689 | "hasInstallScript": true, 690 | "bin": { 691 | "esbuild": "bin/esbuild" 692 | }, 693 | "engines": { 694 | "node": ">=12" 695 | }, 696 | "optionalDependencies": { 697 | "@esbuild/linux-loong64": "0.14.54", 698 | "esbuild-android-64": "0.14.54", 699 | "esbuild-android-arm64": "0.14.54", 700 | "esbuild-darwin-64": "0.14.54", 701 | "esbuild-darwin-arm64": "0.14.54", 702 | "esbuild-freebsd-64": "0.14.54", 703 | "esbuild-freebsd-arm64": "0.14.54", 704 | "esbuild-linux-32": "0.14.54", 705 | "esbuild-linux-64": "0.14.54", 706 | "esbuild-linux-arm": "0.14.54", 707 | "esbuild-linux-arm64": "0.14.54", 708 | "esbuild-linux-mips64le": "0.14.54", 709 | "esbuild-linux-ppc64le": "0.14.54", 710 | "esbuild-linux-riscv64": "0.14.54", 711 | "esbuild-linux-s390x": "0.14.54", 712 | "esbuild-netbsd-64": "0.14.54", 713 | "esbuild-openbsd-64": "0.14.54", 714 | "esbuild-sunos-64": "0.14.54", 715 | "esbuild-windows-32": "0.14.54", 716 | "esbuild-windows-64": "0.14.54", 717 | "esbuild-windows-arm64": "0.14.54" 718 | } 719 | }, 720 | "node_modules/esbuild-android-64": { 721 | "version": "0.14.54", 722 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", 723 | "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", 724 | "cpu": [ 725 | "x64" 726 | ], 727 | "dev": true, 728 | "optional": true, 729 | "os": [ 730 | "android" 731 | ], 732 | "engines": { 733 | "node": ">=12" 734 | } 735 | }, 736 | "node_modules/esbuild-android-arm64": { 737 | "version": "0.14.54", 738 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", 739 | "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", 740 | "cpu": [ 741 | "arm64" 742 | ], 743 | "dev": true, 744 | "optional": true, 745 | "os": [ 746 | "android" 747 | ], 748 | "engines": { 749 | "node": ">=12" 750 | } 751 | }, 752 | "node_modules/esbuild-darwin-64": { 753 | "version": "0.14.54", 754 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", 755 | "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", 756 | "cpu": [ 757 | "x64" 758 | ], 759 | "dev": true, 760 | "optional": true, 761 | "os": [ 762 | "darwin" 763 | ], 764 | "engines": { 765 | "node": ">=12" 766 | } 767 | }, 768 | "node_modules/esbuild-darwin-arm64": { 769 | "version": "0.14.54", 770 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", 771 | "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", 772 | "cpu": [ 773 | "arm64" 774 | ], 775 | "dev": true, 776 | "optional": true, 777 | "os": [ 778 | "darwin" 779 | ], 780 | "engines": { 781 | "node": ">=12" 782 | } 783 | }, 784 | "node_modules/esbuild-freebsd-64": { 785 | "version": "0.14.54", 786 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", 787 | "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", 788 | "cpu": [ 789 | "x64" 790 | ], 791 | "dev": true, 792 | "optional": true, 793 | "os": [ 794 | "freebsd" 795 | ], 796 | "engines": { 797 | "node": ">=12" 798 | } 799 | }, 800 | "node_modules/esbuild-freebsd-arm64": { 801 | "version": "0.14.54", 802 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", 803 | "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", 804 | "cpu": [ 805 | "arm64" 806 | ], 807 | "dev": true, 808 | "optional": true, 809 | "os": [ 810 | "freebsd" 811 | ], 812 | "engines": { 813 | "node": ">=12" 814 | } 815 | }, 816 | "node_modules/esbuild-linux-32": { 817 | "version": "0.14.54", 818 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", 819 | "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", 820 | "cpu": [ 821 | "ia32" 822 | ], 823 | "dev": true, 824 | "optional": true, 825 | "os": [ 826 | "linux" 827 | ], 828 | "engines": { 829 | "node": ">=12" 830 | } 831 | }, 832 | "node_modules/esbuild-linux-64": { 833 | "version": "0.14.54", 834 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", 835 | "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", 836 | "cpu": [ 837 | "x64" 838 | ], 839 | "dev": true, 840 | "optional": true, 841 | "os": [ 842 | "linux" 843 | ], 844 | "engines": { 845 | "node": ">=12" 846 | } 847 | }, 848 | "node_modules/esbuild-linux-arm": { 849 | "version": "0.14.54", 850 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", 851 | "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", 852 | "cpu": [ 853 | "arm" 854 | ], 855 | "dev": true, 856 | "optional": true, 857 | "os": [ 858 | "linux" 859 | ], 860 | "engines": { 861 | "node": ">=12" 862 | } 863 | }, 864 | "node_modules/esbuild-linux-arm64": { 865 | "version": "0.14.54", 866 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", 867 | "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", 868 | "cpu": [ 869 | "arm64" 870 | ], 871 | "dev": true, 872 | "optional": true, 873 | "os": [ 874 | "linux" 875 | ], 876 | "engines": { 877 | "node": ">=12" 878 | } 879 | }, 880 | "node_modules/esbuild-linux-mips64le": { 881 | "version": "0.14.54", 882 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", 883 | "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", 884 | "cpu": [ 885 | "mips64el" 886 | ], 887 | "dev": true, 888 | "optional": true, 889 | "os": [ 890 | "linux" 891 | ], 892 | "engines": { 893 | "node": ">=12" 894 | } 895 | }, 896 | "node_modules/esbuild-linux-ppc64le": { 897 | "version": "0.14.54", 898 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", 899 | "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", 900 | "cpu": [ 901 | "ppc64" 902 | ], 903 | "dev": true, 904 | "optional": true, 905 | "os": [ 906 | "linux" 907 | ], 908 | "engines": { 909 | "node": ">=12" 910 | } 911 | }, 912 | "node_modules/esbuild-linux-riscv64": { 913 | "version": "0.14.54", 914 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", 915 | "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", 916 | "cpu": [ 917 | "riscv64" 918 | ], 919 | "dev": true, 920 | "optional": true, 921 | "os": [ 922 | "linux" 923 | ], 924 | "engines": { 925 | "node": ">=12" 926 | } 927 | }, 928 | "node_modules/esbuild-linux-s390x": { 929 | "version": "0.14.54", 930 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", 931 | "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", 932 | "cpu": [ 933 | "s390x" 934 | ], 935 | "dev": true, 936 | "optional": true, 937 | "os": [ 938 | "linux" 939 | ], 940 | "engines": { 941 | "node": ">=12" 942 | } 943 | }, 944 | "node_modules/esbuild-netbsd-64": { 945 | "version": "0.14.54", 946 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", 947 | "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", 948 | "cpu": [ 949 | "x64" 950 | ], 951 | "dev": true, 952 | "optional": true, 953 | "os": [ 954 | "netbsd" 955 | ], 956 | "engines": { 957 | "node": ">=12" 958 | } 959 | }, 960 | "node_modules/esbuild-openbsd-64": { 961 | "version": "0.14.54", 962 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", 963 | "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", 964 | "cpu": [ 965 | "x64" 966 | ], 967 | "dev": true, 968 | "optional": true, 969 | "os": [ 970 | "openbsd" 971 | ], 972 | "engines": { 973 | "node": ">=12" 974 | } 975 | }, 976 | "node_modules/esbuild-sunos-64": { 977 | "version": "0.14.54", 978 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", 979 | "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", 980 | "cpu": [ 981 | "x64" 982 | ], 983 | "dev": true, 984 | "optional": true, 985 | "os": [ 986 | "sunos" 987 | ], 988 | "engines": { 989 | "node": ">=12" 990 | } 991 | }, 992 | "node_modules/esbuild-windows-32": { 993 | "version": "0.14.54", 994 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", 995 | "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", 996 | "cpu": [ 997 | "ia32" 998 | ], 999 | "dev": true, 1000 | "optional": true, 1001 | "os": [ 1002 | "win32" 1003 | ], 1004 | "engines": { 1005 | "node": ">=12" 1006 | } 1007 | }, 1008 | "node_modules/esbuild-windows-64": { 1009 | "version": "0.14.54", 1010 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", 1011 | "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", 1012 | "cpu": [ 1013 | "x64" 1014 | ], 1015 | "dev": true, 1016 | "optional": true, 1017 | "os": [ 1018 | "win32" 1019 | ], 1020 | "engines": { 1021 | "node": ">=12" 1022 | } 1023 | }, 1024 | "node_modules/esbuild-windows-arm64": { 1025 | "version": "0.14.54", 1026 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", 1027 | "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", 1028 | "cpu": [ 1029 | "arm64" 1030 | ], 1031 | "dev": true, 1032 | "optional": true, 1033 | "os": [ 1034 | "win32" 1035 | ], 1036 | "engines": { 1037 | "node": ">=12" 1038 | } 1039 | }, 1040 | "node_modules/escalade": { 1041 | "version": "3.1.1", 1042 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1043 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1044 | "dev": true, 1045 | "engines": { 1046 | "node": ">=6" 1047 | } 1048 | }, 1049 | "node_modules/escape-string-regexp": { 1050 | "version": "1.0.5", 1051 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1052 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1053 | "dev": true, 1054 | "engines": { 1055 | "node": ">=0.8.0" 1056 | } 1057 | }, 1058 | "node_modules/estree-walker": { 1059 | "version": "2.0.2", 1060 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1061 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1062 | "dev": true 1063 | }, 1064 | "node_modules/fsevents": { 1065 | "version": "2.3.2", 1066 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1067 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1068 | "dev": true, 1069 | "hasInstallScript": true, 1070 | "optional": true, 1071 | "os": [ 1072 | "darwin" 1073 | ], 1074 | "engines": { 1075 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1076 | } 1077 | }, 1078 | "node_modules/function-bind": { 1079 | "version": "1.1.1", 1080 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1081 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1082 | "dev": true 1083 | }, 1084 | "node_modules/gensync": { 1085 | "version": "1.0.0-beta.2", 1086 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1087 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1088 | "dev": true, 1089 | "engines": { 1090 | "node": ">=6.9.0" 1091 | } 1092 | }, 1093 | "node_modules/globals": { 1094 | "version": "11.12.0", 1095 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1096 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1097 | "dev": true, 1098 | "engines": { 1099 | "node": ">=4" 1100 | } 1101 | }, 1102 | "node_modules/has": { 1103 | "version": "1.0.3", 1104 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1105 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1106 | "dev": true, 1107 | "dependencies": { 1108 | "function-bind": "^1.1.1" 1109 | }, 1110 | "engines": { 1111 | "node": ">= 0.4.0" 1112 | } 1113 | }, 1114 | "node_modules/has-flag": { 1115 | "version": "3.0.0", 1116 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1117 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1118 | "dev": true, 1119 | "engines": { 1120 | "node": ">=4" 1121 | } 1122 | }, 1123 | "node_modules/is-core-module": { 1124 | "version": "2.11.0", 1125 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1126 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1127 | "dev": true, 1128 | "dependencies": { 1129 | "has": "^1.0.3" 1130 | }, 1131 | "funding": { 1132 | "url": "https://github.com/sponsors/ljharb" 1133 | } 1134 | }, 1135 | "node_modules/js-tokens": { 1136 | "version": "4.0.0", 1137 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1138 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1139 | }, 1140 | "node_modules/jsesc": { 1141 | "version": "2.5.2", 1142 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1143 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1144 | "dev": true, 1145 | "bin": { 1146 | "jsesc": "bin/jsesc" 1147 | }, 1148 | "engines": { 1149 | "node": ">=4" 1150 | } 1151 | }, 1152 | "node_modules/json5": { 1153 | "version": "2.2.1", 1154 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 1155 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 1156 | "dev": true, 1157 | "bin": { 1158 | "json5": "lib/cli.js" 1159 | }, 1160 | "engines": { 1161 | "node": ">=6" 1162 | } 1163 | }, 1164 | "node_modules/loose-envify": { 1165 | "version": "1.4.0", 1166 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1167 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1168 | "dependencies": { 1169 | "js-tokens": "^3.0.0 || ^4.0.0" 1170 | }, 1171 | "bin": { 1172 | "loose-envify": "cli.js" 1173 | } 1174 | }, 1175 | "node_modules/ms": { 1176 | "version": "2.1.2", 1177 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1178 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1179 | "dev": true 1180 | }, 1181 | "node_modules/nanoid": { 1182 | "version": "3.3.4", 1183 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1184 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 1185 | "dev": true, 1186 | "bin": { 1187 | "nanoid": "bin/nanoid.cjs" 1188 | }, 1189 | "engines": { 1190 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1191 | } 1192 | }, 1193 | "node_modules/node-releases": { 1194 | "version": "2.0.6", 1195 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", 1196 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", 1197 | "dev": true 1198 | }, 1199 | "node_modules/path-parse": { 1200 | "version": "1.0.7", 1201 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1202 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1203 | "dev": true 1204 | }, 1205 | "node_modules/picocolors": { 1206 | "version": "1.0.0", 1207 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1208 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1209 | "dev": true 1210 | }, 1211 | "node_modules/picomatch": { 1212 | "version": "2.3.1", 1213 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1214 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1215 | "dev": true, 1216 | "engines": { 1217 | "node": ">=8.6" 1218 | }, 1219 | "funding": { 1220 | "url": "https://github.com/sponsors/jonschlinkert" 1221 | } 1222 | }, 1223 | "node_modules/postcss": { 1224 | "version": "8.4.18", 1225 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", 1226 | "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", 1227 | "dev": true, 1228 | "funding": [ 1229 | { 1230 | "type": "opencollective", 1231 | "url": "https://opencollective.com/postcss/" 1232 | }, 1233 | { 1234 | "type": "tidelift", 1235 | "url": "https://tidelift.com/funding/github/npm/postcss" 1236 | } 1237 | ], 1238 | "dependencies": { 1239 | "nanoid": "^3.3.4", 1240 | "picocolors": "^1.0.0", 1241 | "source-map-js": "^1.0.2" 1242 | }, 1243 | "engines": { 1244 | "node": "^10 || ^12 || >=14" 1245 | } 1246 | }, 1247 | "node_modules/react": { 1248 | "version": "18.2.0", 1249 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 1250 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 1251 | "dependencies": { 1252 | "loose-envify": "^1.1.0" 1253 | }, 1254 | "engines": { 1255 | "node": ">=0.10.0" 1256 | } 1257 | }, 1258 | "node_modules/react-dom": { 1259 | "version": "18.2.0", 1260 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 1261 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 1262 | "dependencies": { 1263 | "loose-envify": "^1.1.0", 1264 | "scheduler": "^0.23.0" 1265 | }, 1266 | "peerDependencies": { 1267 | "react": "^18.2.0" 1268 | } 1269 | }, 1270 | "node_modules/react-refresh": { 1271 | "version": "0.13.0", 1272 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.13.0.tgz", 1273 | "integrity": "sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==", 1274 | "dev": true, 1275 | "engines": { 1276 | "node": ">=0.10.0" 1277 | } 1278 | }, 1279 | "node_modules/resolve": { 1280 | "version": "1.22.1", 1281 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1282 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1283 | "dev": true, 1284 | "dependencies": { 1285 | "is-core-module": "^2.9.0", 1286 | "path-parse": "^1.0.7", 1287 | "supports-preserve-symlinks-flag": "^1.0.0" 1288 | }, 1289 | "bin": { 1290 | "resolve": "bin/resolve" 1291 | }, 1292 | "funding": { 1293 | "url": "https://github.com/sponsors/ljharb" 1294 | } 1295 | }, 1296 | "node_modules/rollup": { 1297 | "version": "2.77.3", 1298 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", 1299 | "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", 1300 | "dev": true, 1301 | "bin": { 1302 | "rollup": "dist/bin/rollup" 1303 | }, 1304 | "engines": { 1305 | "node": ">=10.0.0" 1306 | }, 1307 | "optionalDependencies": { 1308 | "fsevents": "~2.3.2" 1309 | } 1310 | }, 1311 | "node_modules/scheduler": { 1312 | "version": "0.23.0", 1313 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 1314 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 1315 | "dependencies": { 1316 | "loose-envify": "^1.1.0" 1317 | } 1318 | }, 1319 | "node_modules/semver": { 1320 | "version": "6.3.0", 1321 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1322 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1323 | "dev": true, 1324 | "bin": { 1325 | "semver": "bin/semver.js" 1326 | } 1327 | }, 1328 | "node_modules/source-map-js": { 1329 | "version": "1.0.2", 1330 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1331 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1332 | "dev": true, 1333 | "engines": { 1334 | "node": ">=0.10.0" 1335 | } 1336 | }, 1337 | "node_modules/supports-color": { 1338 | "version": "5.5.0", 1339 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1340 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1341 | "dev": true, 1342 | "dependencies": { 1343 | "has-flag": "^3.0.0" 1344 | }, 1345 | "engines": { 1346 | "node": ">=4" 1347 | } 1348 | }, 1349 | "node_modules/supports-preserve-symlinks-flag": { 1350 | "version": "1.0.0", 1351 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1352 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1353 | "dev": true, 1354 | "engines": { 1355 | "node": ">= 0.4" 1356 | }, 1357 | "funding": { 1358 | "url": "https://github.com/sponsors/ljharb" 1359 | } 1360 | }, 1361 | "node_modules/to-fast-properties": { 1362 | "version": "2.0.0", 1363 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1364 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 1365 | "dev": true, 1366 | "engines": { 1367 | "node": ">=4" 1368 | } 1369 | }, 1370 | "node_modules/typescript": { 1371 | "version": "4.8.4", 1372 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", 1373 | "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", 1374 | "dev": true, 1375 | "bin": { 1376 | "tsc": "bin/tsc", 1377 | "tsserver": "bin/tsserver" 1378 | }, 1379 | "engines": { 1380 | "node": ">=4.2.0" 1381 | } 1382 | }, 1383 | "node_modules/update-browserslist-db": { 1384 | "version": "1.0.10", 1385 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", 1386 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", 1387 | "dev": true, 1388 | "funding": [ 1389 | { 1390 | "type": "opencollective", 1391 | "url": "https://opencollective.com/browserslist" 1392 | }, 1393 | { 1394 | "type": "tidelift", 1395 | "url": "https://tidelift.com/funding/github/npm/browserslist" 1396 | } 1397 | ], 1398 | "dependencies": { 1399 | "escalade": "^3.1.1", 1400 | "picocolors": "^1.0.0" 1401 | }, 1402 | "bin": { 1403 | "browserslist-lint": "cli.js" 1404 | }, 1405 | "peerDependencies": { 1406 | "browserslist": ">= 4.21.0" 1407 | } 1408 | }, 1409 | "node_modules/vite": { 1410 | "version": "2.9.15", 1411 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz", 1412 | "integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==", 1413 | "dev": true, 1414 | "dependencies": { 1415 | "esbuild": "^0.14.27", 1416 | "postcss": "^8.4.13", 1417 | "resolve": "^1.22.0", 1418 | "rollup": ">=2.59.0 <2.78.0" 1419 | }, 1420 | "bin": { 1421 | "vite": "bin/vite.js" 1422 | }, 1423 | "engines": { 1424 | "node": ">=12.2.0" 1425 | }, 1426 | "optionalDependencies": { 1427 | "fsevents": "~2.3.2" 1428 | }, 1429 | "peerDependencies": { 1430 | "less": "*", 1431 | "sass": "*", 1432 | "stylus": "*" 1433 | }, 1434 | "peerDependenciesMeta": { 1435 | "less": { 1436 | "optional": true 1437 | }, 1438 | "sass": { 1439 | "optional": true 1440 | }, 1441 | "stylus": { 1442 | "optional": true 1443 | } 1444 | } 1445 | } 1446 | }, 1447 | "dependencies": { 1448 | "@ampproject/remapping": { 1449 | "version": "2.2.0", 1450 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", 1451 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", 1452 | "dev": true, 1453 | "requires": { 1454 | "@jridgewell/gen-mapping": "^0.1.0", 1455 | "@jridgewell/trace-mapping": "^0.3.9" 1456 | } 1457 | }, 1458 | "@babel/code-frame": { 1459 | "version": "7.18.6", 1460 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", 1461 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", 1462 | "dev": true, 1463 | "requires": { 1464 | "@babel/highlight": "^7.18.6" 1465 | } 1466 | }, 1467 | "@babel/compat-data": { 1468 | "version": "7.19.4", 1469 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", 1470 | "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", 1471 | "dev": true 1472 | }, 1473 | "@babel/core": { 1474 | "version": "7.19.6", 1475 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", 1476 | "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", 1477 | "dev": true, 1478 | "requires": { 1479 | "@ampproject/remapping": "^2.1.0", 1480 | "@babel/code-frame": "^7.18.6", 1481 | "@babel/generator": "^7.19.6", 1482 | "@babel/helper-compilation-targets": "^7.19.3", 1483 | "@babel/helper-module-transforms": "^7.19.6", 1484 | "@babel/helpers": "^7.19.4", 1485 | "@babel/parser": "^7.19.6", 1486 | "@babel/template": "^7.18.10", 1487 | "@babel/traverse": "^7.19.6", 1488 | "@babel/types": "^7.19.4", 1489 | "convert-source-map": "^1.7.0", 1490 | "debug": "^4.1.0", 1491 | "gensync": "^1.0.0-beta.2", 1492 | "json5": "^2.2.1", 1493 | "semver": "^6.3.0" 1494 | } 1495 | }, 1496 | "@babel/generator": { 1497 | "version": "7.19.6", 1498 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz", 1499 | "integrity": "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==", 1500 | "dev": true, 1501 | "requires": { 1502 | "@babel/types": "^7.19.4", 1503 | "@jridgewell/gen-mapping": "^0.3.2", 1504 | "jsesc": "^2.5.1" 1505 | }, 1506 | "dependencies": { 1507 | "@jridgewell/gen-mapping": { 1508 | "version": "0.3.2", 1509 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", 1510 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", 1511 | "dev": true, 1512 | "requires": { 1513 | "@jridgewell/set-array": "^1.0.1", 1514 | "@jridgewell/sourcemap-codec": "^1.4.10", 1515 | "@jridgewell/trace-mapping": "^0.3.9" 1516 | } 1517 | } 1518 | } 1519 | }, 1520 | "@babel/helper-annotate-as-pure": { 1521 | "version": "7.18.6", 1522 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", 1523 | "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", 1524 | "dev": true, 1525 | "requires": { 1526 | "@babel/types": "^7.18.6" 1527 | } 1528 | }, 1529 | "@babel/helper-compilation-targets": { 1530 | "version": "7.19.3", 1531 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", 1532 | "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", 1533 | "dev": true, 1534 | "requires": { 1535 | "@babel/compat-data": "^7.19.3", 1536 | "@babel/helper-validator-option": "^7.18.6", 1537 | "browserslist": "^4.21.3", 1538 | "semver": "^6.3.0" 1539 | } 1540 | }, 1541 | "@babel/helper-environment-visitor": { 1542 | "version": "7.18.9", 1543 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", 1544 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", 1545 | "dev": true 1546 | }, 1547 | "@babel/helper-function-name": { 1548 | "version": "7.19.0", 1549 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", 1550 | "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", 1551 | "dev": true, 1552 | "requires": { 1553 | "@babel/template": "^7.18.10", 1554 | "@babel/types": "^7.19.0" 1555 | } 1556 | }, 1557 | "@babel/helper-hoist-variables": { 1558 | "version": "7.18.6", 1559 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", 1560 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", 1561 | "dev": true, 1562 | "requires": { 1563 | "@babel/types": "^7.18.6" 1564 | } 1565 | }, 1566 | "@babel/helper-module-imports": { 1567 | "version": "7.18.6", 1568 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", 1569 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 1570 | "dev": true, 1571 | "requires": { 1572 | "@babel/types": "^7.18.6" 1573 | } 1574 | }, 1575 | "@babel/helper-module-transforms": { 1576 | "version": "7.19.6", 1577 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", 1578 | "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", 1579 | "dev": true, 1580 | "requires": { 1581 | "@babel/helper-environment-visitor": "^7.18.9", 1582 | "@babel/helper-module-imports": "^7.18.6", 1583 | "@babel/helper-simple-access": "^7.19.4", 1584 | "@babel/helper-split-export-declaration": "^7.18.6", 1585 | "@babel/helper-validator-identifier": "^7.19.1", 1586 | "@babel/template": "^7.18.10", 1587 | "@babel/traverse": "^7.19.6", 1588 | "@babel/types": "^7.19.4" 1589 | } 1590 | }, 1591 | "@babel/helper-plugin-utils": { 1592 | "version": "7.19.0", 1593 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", 1594 | "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", 1595 | "dev": true 1596 | }, 1597 | "@babel/helper-simple-access": { 1598 | "version": "7.19.4", 1599 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", 1600 | "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", 1601 | "dev": true, 1602 | "requires": { 1603 | "@babel/types": "^7.19.4" 1604 | } 1605 | }, 1606 | "@babel/helper-split-export-declaration": { 1607 | "version": "7.18.6", 1608 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", 1609 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", 1610 | "dev": true, 1611 | "requires": { 1612 | "@babel/types": "^7.18.6" 1613 | } 1614 | }, 1615 | "@babel/helper-string-parser": { 1616 | "version": "7.19.4", 1617 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", 1618 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", 1619 | "dev": true 1620 | }, 1621 | "@babel/helper-validator-identifier": { 1622 | "version": "7.19.1", 1623 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", 1624 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", 1625 | "dev": true 1626 | }, 1627 | "@babel/helper-validator-option": { 1628 | "version": "7.18.6", 1629 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", 1630 | "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", 1631 | "dev": true 1632 | }, 1633 | "@babel/helpers": { 1634 | "version": "7.19.4", 1635 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", 1636 | "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", 1637 | "dev": true, 1638 | "requires": { 1639 | "@babel/template": "^7.18.10", 1640 | "@babel/traverse": "^7.19.4", 1641 | "@babel/types": "^7.19.4" 1642 | } 1643 | }, 1644 | "@babel/highlight": { 1645 | "version": "7.18.6", 1646 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", 1647 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", 1648 | "dev": true, 1649 | "requires": { 1650 | "@babel/helper-validator-identifier": "^7.18.6", 1651 | "chalk": "^2.0.0", 1652 | "js-tokens": "^4.0.0" 1653 | } 1654 | }, 1655 | "@babel/parser": { 1656 | "version": "7.19.6", 1657 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", 1658 | "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==", 1659 | "dev": true 1660 | }, 1661 | "@babel/plugin-syntax-jsx": { 1662 | "version": "7.18.6", 1663 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", 1664 | "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", 1665 | "dev": true, 1666 | "requires": { 1667 | "@babel/helper-plugin-utils": "^7.18.6" 1668 | } 1669 | }, 1670 | "@babel/plugin-transform-react-jsx": { 1671 | "version": "7.19.0", 1672 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", 1673 | "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", 1674 | "dev": true, 1675 | "requires": { 1676 | "@babel/helper-annotate-as-pure": "^7.18.6", 1677 | "@babel/helper-module-imports": "^7.18.6", 1678 | "@babel/helper-plugin-utils": "^7.19.0", 1679 | "@babel/plugin-syntax-jsx": "^7.18.6", 1680 | "@babel/types": "^7.19.0" 1681 | } 1682 | }, 1683 | "@babel/plugin-transform-react-jsx-development": { 1684 | "version": "7.18.6", 1685 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", 1686 | "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", 1687 | "dev": true, 1688 | "requires": { 1689 | "@babel/plugin-transform-react-jsx": "^7.18.6" 1690 | } 1691 | }, 1692 | "@babel/plugin-transform-react-jsx-self": { 1693 | "version": "7.18.6", 1694 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz", 1695 | "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==", 1696 | "dev": true, 1697 | "requires": { 1698 | "@babel/helper-plugin-utils": "^7.18.6" 1699 | } 1700 | }, 1701 | "@babel/plugin-transform-react-jsx-source": { 1702 | "version": "7.19.6", 1703 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", 1704 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", 1705 | "dev": true, 1706 | "requires": { 1707 | "@babel/helper-plugin-utils": "^7.19.0" 1708 | } 1709 | }, 1710 | "@babel/template": { 1711 | "version": "7.18.10", 1712 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", 1713 | "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", 1714 | "dev": true, 1715 | "requires": { 1716 | "@babel/code-frame": "^7.18.6", 1717 | "@babel/parser": "^7.18.10", 1718 | "@babel/types": "^7.18.10" 1719 | } 1720 | }, 1721 | "@babel/traverse": { 1722 | "version": "7.19.6", 1723 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz", 1724 | "integrity": "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==", 1725 | "dev": true, 1726 | "requires": { 1727 | "@babel/code-frame": "^7.18.6", 1728 | "@babel/generator": "^7.19.6", 1729 | "@babel/helper-environment-visitor": "^7.18.9", 1730 | "@babel/helper-function-name": "^7.19.0", 1731 | "@babel/helper-hoist-variables": "^7.18.6", 1732 | "@babel/helper-split-export-declaration": "^7.18.6", 1733 | "@babel/parser": "^7.19.6", 1734 | "@babel/types": "^7.19.4", 1735 | "debug": "^4.1.0", 1736 | "globals": "^11.1.0" 1737 | } 1738 | }, 1739 | "@babel/types": { 1740 | "version": "7.19.4", 1741 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", 1742 | "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", 1743 | "dev": true, 1744 | "requires": { 1745 | "@babel/helper-string-parser": "^7.19.4", 1746 | "@babel/helper-validator-identifier": "^7.19.1", 1747 | "to-fast-properties": "^2.0.0" 1748 | } 1749 | }, 1750 | "@esbuild/linux-loong64": { 1751 | "version": "0.14.54", 1752 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", 1753 | "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", 1754 | "dev": true, 1755 | "optional": true 1756 | }, 1757 | "@jridgewell/gen-mapping": { 1758 | "version": "0.1.1", 1759 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", 1760 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", 1761 | "dev": true, 1762 | "requires": { 1763 | "@jridgewell/set-array": "^1.0.0", 1764 | "@jridgewell/sourcemap-codec": "^1.4.10" 1765 | } 1766 | }, 1767 | "@jridgewell/resolve-uri": { 1768 | "version": "3.1.0", 1769 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 1770 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 1771 | "dev": true 1772 | }, 1773 | "@jridgewell/set-array": { 1774 | "version": "1.1.2", 1775 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", 1776 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", 1777 | "dev": true 1778 | }, 1779 | "@jridgewell/sourcemap-codec": { 1780 | "version": "1.4.14", 1781 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 1782 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 1783 | "dev": true 1784 | }, 1785 | "@jridgewell/trace-mapping": { 1786 | "version": "0.3.17", 1787 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", 1788 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", 1789 | "dev": true, 1790 | "requires": { 1791 | "@jridgewell/resolve-uri": "3.1.0", 1792 | "@jridgewell/sourcemap-codec": "1.4.14" 1793 | } 1794 | }, 1795 | "@rollup/pluginutils": { 1796 | "version": "4.2.1", 1797 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", 1798 | "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", 1799 | "dev": true, 1800 | "requires": { 1801 | "estree-walker": "^2.0.1", 1802 | "picomatch": "^2.2.2" 1803 | } 1804 | }, 1805 | "@types/prop-types": { 1806 | "version": "15.7.5", 1807 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", 1808 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", 1809 | "dev": true 1810 | }, 1811 | "@types/react": { 1812 | "version": "18.0.22", 1813 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.22.tgz", 1814 | "integrity": "sha512-4yWc5PyCkZN8ke8K9rQHkTXxHIWHxLzzW6RI1kXVoepkD3vULpKzC2sDtAMKn78h92BRYuzf+7b/ms7ajE6hFw==", 1815 | "dev": true, 1816 | "requires": { 1817 | "@types/prop-types": "*", 1818 | "@types/scheduler": "*", 1819 | "csstype": "^3.0.2" 1820 | } 1821 | }, 1822 | "@types/react-dom": { 1823 | "version": "18.0.7", 1824 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.7.tgz", 1825 | "integrity": "sha512-HaXc+BbqAZE1RdsK3tC8SbkFy6UL2xF76lT9rQs5JkPrJg3rWA3Ou/Lhw3YJQzEDkBpmJ79nBsfnd05WrBd2QQ==", 1826 | "dev": true, 1827 | "requires": { 1828 | "@types/react": "*" 1829 | } 1830 | }, 1831 | "@types/scheduler": { 1832 | "version": "0.16.2", 1833 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 1834 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", 1835 | "dev": true 1836 | }, 1837 | "@vitejs/plugin-react": { 1838 | "version": "1.3.2", 1839 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.3.2.tgz", 1840 | "integrity": "sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA==", 1841 | "dev": true, 1842 | "requires": { 1843 | "@babel/core": "^7.17.10", 1844 | "@babel/plugin-transform-react-jsx": "^7.17.3", 1845 | "@babel/plugin-transform-react-jsx-development": "^7.16.7", 1846 | "@babel/plugin-transform-react-jsx-self": "^7.16.7", 1847 | "@babel/plugin-transform-react-jsx-source": "^7.16.7", 1848 | "@rollup/pluginutils": "^4.2.1", 1849 | "react-refresh": "^0.13.0", 1850 | "resolve": "^1.22.0" 1851 | } 1852 | }, 1853 | "ansi-styles": { 1854 | "version": "3.2.1", 1855 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1856 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1857 | "dev": true, 1858 | "requires": { 1859 | "color-convert": "^1.9.0" 1860 | } 1861 | }, 1862 | "browserslist": { 1863 | "version": "4.21.4", 1864 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", 1865 | "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", 1866 | "dev": true, 1867 | "requires": { 1868 | "caniuse-lite": "^1.0.30001400", 1869 | "electron-to-chromium": "^1.4.251", 1870 | "node-releases": "^2.0.6", 1871 | "update-browserslist-db": "^1.0.9" 1872 | } 1873 | }, 1874 | "caniuse-lite": { 1875 | "version": "1.0.30001425", 1876 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001425.tgz", 1877 | "integrity": "sha512-/pzFv0OmNG6W0ym80P3NtapU0QEiDS3VuYAZMGoLLqiC7f6FJFe1MjpQDREGApeenD9wloeytmVDj+JLXPC6qw==", 1878 | "dev": true 1879 | }, 1880 | "chalk": { 1881 | "version": "2.4.2", 1882 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1883 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1884 | "dev": true, 1885 | "requires": { 1886 | "ansi-styles": "^3.2.1", 1887 | "escape-string-regexp": "^1.0.5", 1888 | "supports-color": "^5.3.0" 1889 | } 1890 | }, 1891 | "color-convert": { 1892 | "version": "1.9.3", 1893 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1894 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1895 | "dev": true, 1896 | "requires": { 1897 | "color-name": "1.1.3" 1898 | } 1899 | }, 1900 | "color-name": { 1901 | "version": "1.1.3", 1902 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1903 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", 1904 | "dev": true 1905 | }, 1906 | "convert-source-map": { 1907 | "version": "1.9.0", 1908 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", 1909 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", 1910 | "dev": true 1911 | }, 1912 | "csstype": { 1913 | "version": "3.1.1", 1914 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", 1915 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", 1916 | "dev": true 1917 | }, 1918 | "debug": { 1919 | "version": "4.3.4", 1920 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1921 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1922 | "dev": true, 1923 | "requires": { 1924 | "ms": "2.1.2" 1925 | } 1926 | }, 1927 | "electron-to-chromium": { 1928 | "version": "1.4.284", 1929 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", 1930 | "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", 1931 | "dev": true 1932 | }, 1933 | "esbuild": { 1934 | "version": "0.14.54", 1935 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", 1936 | "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", 1937 | "dev": true, 1938 | "requires": { 1939 | "@esbuild/linux-loong64": "0.14.54", 1940 | "esbuild-android-64": "0.14.54", 1941 | "esbuild-android-arm64": "0.14.54", 1942 | "esbuild-darwin-64": "0.14.54", 1943 | "esbuild-darwin-arm64": "0.14.54", 1944 | "esbuild-freebsd-64": "0.14.54", 1945 | "esbuild-freebsd-arm64": "0.14.54", 1946 | "esbuild-linux-32": "0.14.54", 1947 | "esbuild-linux-64": "0.14.54", 1948 | "esbuild-linux-arm": "0.14.54", 1949 | "esbuild-linux-arm64": "0.14.54", 1950 | "esbuild-linux-mips64le": "0.14.54", 1951 | "esbuild-linux-ppc64le": "0.14.54", 1952 | "esbuild-linux-riscv64": "0.14.54", 1953 | "esbuild-linux-s390x": "0.14.54", 1954 | "esbuild-netbsd-64": "0.14.54", 1955 | "esbuild-openbsd-64": "0.14.54", 1956 | "esbuild-sunos-64": "0.14.54", 1957 | "esbuild-windows-32": "0.14.54", 1958 | "esbuild-windows-64": "0.14.54", 1959 | "esbuild-windows-arm64": "0.14.54" 1960 | } 1961 | }, 1962 | "esbuild-android-64": { 1963 | "version": "0.14.54", 1964 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", 1965 | "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", 1966 | "dev": true, 1967 | "optional": true 1968 | }, 1969 | "esbuild-android-arm64": { 1970 | "version": "0.14.54", 1971 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", 1972 | "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", 1973 | "dev": true, 1974 | "optional": true 1975 | }, 1976 | "esbuild-darwin-64": { 1977 | "version": "0.14.54", 1978 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", 1979 | "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", 1980 | "dev": true, 1981 | "optional": true 1982 | }, 1983 | "esbuild-darwin-arm64": { 1984 | "version": "0.14.54", 1985 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", 1986 | "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", 1987 | "dev": true, 1988 | "optional": true 1989 | }, 1990 | "esbuild-freebsd-64": { 1991 | "version": "0.14.54", 1992 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", 1993 | "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", 1994 | "dev": true, 1995 | "optional": true 1996 | }, 1997 | "esbuild-freebsd-arm64": { 1998 | "version": "0.14.54", 1999 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", 2000 | "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", 2001 | "dev": true, 2002 | "optional": true 2003 | }, 2004 | "esbuild-linux-32": { 2005 | "version": "0.14.54", 2006 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", 2007 | "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", 2008 | "dev": true, 2009 | "optional": true 2010 | }, 2011 | "esbuild-linux-64": { 2012 | "version": "0.14.54", 2013 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", 2014 | "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", 2015 | "dev": true, 2016 | "optional": true 2017 | }, 2018 | "esbuild-linux-arm": { 2019 | "version": "0.14.54", 2020 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", 2021 | "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", 2022 | "dev": true, 2023 | "optional": true 2024 | }, 2025 | "esbuild-linux-arm64": { 2026 | "version": "0.14.54", 2027 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", 2028 | "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", 2029 | "dev": true, 2030 | "optional": true 2031 | }, 2032 | "esbuild-linux-mips64le": { 2033 | "version": "0.14.54", 2034 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", 2035 | "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", 2036 | "dev": true, 2037 | "optional": true 2038 | }, 2039 | "esbuild-linux-ppc64le": { 2040 | "version": "0.14.54", 2041 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", 2042 | "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", 2043 | "dev": true, 2044 | "optional": true 2045 | }, 2046 | "esbuild-linux-riscv64": { 2047 | "version": "0.14.54", 2048 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", 2049 | "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", 2050 | "dev": true, 2051 | "optional": true 2052 | }, 2053 | "esbuild-linux-s390x": { 2054 | "version": "0.14.54", 2055 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", 2056 | "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", 2057 | "dev": true, 2058 | "optional": true 2059 | }, 2060 | "esbuild-netbsd-64": { 2061 | "version": "0.14.54", 2062 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", 2063 | "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", 2064 | "dev": true, 2065 | "optional": true 2066 | }, 2067 | "esbuild-openbsd-64": { 2068 | "version": "0.14.54", 2069 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", 2070 | "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", 2071 | "dev": true, 2072 | "optional": true 2073 | }, 2074 | "esbuild-sunos-64": { 2075 | "version": "0.14.54", 2076 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", 2077 | "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", 2078 | "dev": true, 2079 | "optional": true 2080 | }, 2081 | "esbuild-windows-32": { 2082 | "version": "0.14.54", 2083 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", 2084 | "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", 2085 | "dev": true, 2086 | "optional": true 2087 | }, 2088 | "esbuild-windows-64": { 2089 | "version": "0.14.54", 2090 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", 2091 | "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", 2092 | "dev": true, 2093 | "optional": true 2094 | }, 2095 | "esbuild-windows-arm64": { 2096 | "version": "0.14.54", 2097 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", 2098 | "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", 2099 | "dev": true, 2100 | "optional": true 2101 | }, 2102 | "escalade": { 2103 | "version": "3.1.1", 2104 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2105 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2106 | "dev": true 2107 | }, 2108 | "escape-string-regexp": { 2109 | "version": "1.0.5", 2110 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2111 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 2112 | "dev": true 2113 | }, 2114 | "estree-walker": { 2115 | "version": "2.0.2", 2116 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 2117 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 2118 | "dev": true 2119 | }, 2120 | "fsevents": { 2121 | "version": "2.3.2", 2122 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2123 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2124 | "dev": true, 2125 | "optional": true 2126 | }, 2127 | "function-bind": { 2128 | "version": "1.1.1", 2129 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2130 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 2131 | "dev": true 2132 | }, 2133 | "gensync": { 2134 | "version": "1.0.0-beta.2", 2135 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 2136 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 2137 | "dev": true 2138 | }, 2139 | "globals": { 2140 | "version": "11.12.0", 2141 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2142 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2143 | "dev": true 2144 | }, 2145 | "has": { 2146 | "version": "1.0.3", 2147 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2148 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2149 | "dev": true, 2150 | "requires": { 2151 | "function-bind": "^1.1.1" 2152 | } 2153 | }, 2154 | "has-flag": { 2155 | "version": "3.0.0", 2156 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2157 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 2158 | "dev": true 2159 | }, 2160 | "is-core-module": { 2161 | "version": "2.11.0", 2162 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 2163 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 2164 | "dev": true, 2165 | "requires": { 2166 | "has": "^1.0.3" 2167 | } 2168 | }, 2169 | "js-tokens": { 2170 | "version": "4.0.0", 2171 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2172 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 2173 | }, 2174 | "jsesc": { 2175 | "version": "2.5.2", 2176 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2177 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2178 | "dev": true 2179 | }, 2180 | "json5": { 2181 | "version": "2.2.1", 2182 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 2183 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 2184 | "dev": true 2185 | }, 2186 | "loose-envify": { 2187 | "version": "1.4.0", 2188 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2189 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2190 | "requires": { 2191 | "js-tokens": "^3.0.0 || ^4.0.0" 2192 | } 2193 | }, 2194 | "ms": { 2195 | "version": "2.1.2", 2196 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2197 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2198 | "dev": true 2199 | }, 2200 | "nanoid": { 2201 | "version": "3.3.4", 2202 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 2203 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 2204 | "dev": true 2205 | }, 2206 | "node-releases": { 2207 | "version": "2.0.6", 2208 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", 2209 | "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", 2210 | "dev": true 2211 | }, 2212 | "path-parse": { 2213 | "version": "1.0.7", 2214 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 2215 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 2216 | "dev": true 2217 | }, 2218 | "picocolors": { 2219 | "version": "1.0.0", 2220 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 2221 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 2222 | "dev": true 2223 | }, 2224 | "picomatch": { 2225 | "version": "2.3.1", 2226 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2227 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2228 | "dev": true 2229 | }, 2230 | "postcss": { 2231 | "version": "8.4.18", 2232 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", 2233 | "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", 2234 | "dev": true, 2235 | "requires": { 2236 | "nanoid": "^3.3.4", 2237 | "picocolors": "^1.0.0", 2238 | "source-map-js": "^1.0.2" 2239 | } 2240 | }, 2241 | "react": { 2242 | "version": "18.2.0", 2243 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", 2244 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", 2245 | "requires": { 2246 | "loose-envify": "^1.1.0" 2247 | } 2248 | }, 2249 | "react-dom": { 2250 | "version": "18.2.0", 2251 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", 2252 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", 2253 | "requires": { 2254 | "loose-envify": "^1.1.0", 2255 | "scheduler": "^0.23.0" 2256 | } 2257 | }, 2258 | "react-refresh": { 2259 | "version": "0.13.0", 2260 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.13.0.tgz", 2261 | "integrity": "sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==", 2262 | "dev": true 2263 | }, 2264 | "resolve": { 2265 | "version": "1.22.1", 2266 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 2267 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 2268 | "dev": true, 2269 | "requires": { 2270 | "is-core-module": "^2.9.0", 2271 | "path-parse": "^1.0.7", 2272 | "supports-preserve-symlinks-flag": "^1.0.0" 2273 | } 2274 | }, 2275 | "rollup": { 2276 | "version": "2.77.3", 2277 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.3.tgz", 2278 | "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", 2279 | "dev": true, 2280 | "requires": { 2281 | "fsevents": "~2.3.2" 2282 | } 2283 | }, 2284 | "scheduler": { 2285 | "version": "0.23.0", 2286 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", 2287 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", 2288 | "requires": { 2289 | "loose-envify": "^1.1.0" 2290 | } 2291 | }, 2292 | "semver": { 2293 | "version": "6.3.0", 2294 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2295 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2296 | "dev": true 2297 | }, 2298 | "source-map-js": { 2299 | "version": "1.0.2", 2300 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 2301 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 2302 | "dev": true 2303 | }, 2304 | "supports-color": { 2305 | "version": "5.5.0", 2306 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2307 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2308 | "dev": true, 2309 | "requires": { 2310 | "has-flag": "^3.0.0" 2311 | } 2312 | }, 2313 | "supports-preserve-symlinks-flag": { 2314 | "version": "1.0.0", 2315 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2316 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2317 | "dev": true 2318 | }, 2319 | "to-fast-properties": { 2320 | "version": "2.0.0", 2321 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2322 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", 2323 | "dev": true 2324 | }, 2325 | "typescript": { 2326 | "version": "4.8.4", 2327 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", 2328 | "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", 2329 | "dev": true 2330 | }, 2331 | "update-browserslist-db": { 2332 | "version": "1.0.10", 2333 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", 2334 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", 2335 | "dev": true, 2336 | "requires": { 2337 | "escalade": "^3.1.1", 2338 | "picocolors": "^1.0.0" 2339 | } 2340 | }, 2341 | "vite": { 2342 | "version": "2.9.15", 2343 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.15.tgz", 2344 | "integrity": "sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==", 2345 | "dev": true, 2346 | "requires": { 2347 | "esbuild": "^0.14.27", 2348 | "fsevents": "~2.3.2", 2349 | "postcss": "^8.4.13", 2350 | "resolve": "^1.22.0", 2351 | "rollup": ">=2.59.0 <2.78.0" 2352 | } 2353 | } 2354 | } 2355 | } 2356 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hangman", 3 | "private": true, 4 | "version": "0.0.0", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview" 9 | }, 10 | "dependencies": { 11 | "react": "^18.0.0", 12 | "react-dom": "^18.0.0" 13 | }, 14 | "devDependencies": { 15 | "@types/react": "^18.0.0", 16 | "@types/react-dom": "^18.0.0", 17 | "@vitejs/plugin-react": "^1.3.0", 18 | "typescript": "^4.6.3", 19 | "vite": "^2.9.15" 20 | } 21 | } -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { useCallback, useEffect, useState } from "react" 2 | import { HangmanDrawing } from "./HangmanDrawing" 3 | import { HangmanWord } from "./HangmanWord" 4 | import { Keyboard } from "./Keyboard" 5 | import words from "./wordList.json" 6 | 7 | function getWord() { 8 | return words[Math.floor(Math.random() * words.length)] 9 | } 10 | 11 | function App() { 12 | const [wordToGuess, setWordToGuess] = useState(getWord) 13 | const [guessedLetters, setGuessedLetters] = useState([]) 14 | 15 | const incorrectLetters = guessedLetters.filter( 16 | letter => !wordToGuess.includes(letter) 17 | ) 18 | 19 | const isLoser = incorrectLetters.length >= 6 20 | const isWinner = wordToGuess 21 | .split("") 22 | .every(letter => guessedLetters.includes(letter)) 23 | 24 | const addGuessedLetter = useCallback( 25 | (letter: string) => { 26 | if (guessedLetters.includes(letter) || isLoser || isWinner) return 27 | 28 | setGuessedLetters(currentLetters => [...currentLetters, letter]) 29 | }, 30 | [guessedLetters, isWinner, isLoser] 31 | ) 32 | 33 | useEffect(() => { 34 | const handler = (e: KeyboardEvent) => { 35 | const key = e.key 36 | if (!key.match(/^[a-z]$/)) return 37 | 38 | e.preventDefault() 39 | addGuessedLetter(key) 40 | } 41 | 42 | document.addEventListener("keypress", handler) 43 | 44 | return () => { 45 | document.removeEventListener("keypress", handler) 46 | } 47 | }, [guessedLetters]) 48 | 49 | useEffect(() => { 50 | const handler = (e: KeyboardEvent) => { 51 | const key = e.key 52 | if (key !== "Enter") return 53 | 54 | e.preventDefault() 55 | setGuessedLetters([]) 56 | setWordToGuess(getWord()) 57 | } 58 | 59 | document.addEventListener("keypress", handler) 60 | 61 | return () => { 62 | document.removeEventListener("keypress", handler) 63 | } 64 | }, []) 65 | 66 | return ( 67 |
77 |
78 | {isWinner && "Winner! - Refresh to try again"} 79 | {isLoser && "Nice Try - Refresh to try again"} 80 |
81 | 82 | 87 |
88 | 91 | wordToGuess.includes(letter) 92 | )} 93 | inactiveLetters={incorrectLetters} 94 | addGuessedLetter={addGuessedLetter} 95 | /> 96 |
97 |
98 | ) 99 | } 100 | 101 | export default App 102 | -------------------------------------------------------------------------------- /src/HangmanDrawing.tsx: -------------------------------------------------------------------------------- 1 | const HEAD = ( 2 |
13 | ) 14 | 15 | const BODY = ( 16 |
26 | ) 27 | 28 | const RIGHT_ARM = ( 29 |
41 | ) 42 | 43 | const LEFT_ARM = ( 44 |
56 | ) 57 | 58 | const RIGHT_LEG = ( 59 |
71 | ) 72 | 73 | const LEFT_LEG = ( 74 |
86 | ) 87 | 88 | const BODY_PARTS = [HEAD, BODY, RIGHT_ARM, LEFT_ARM, RIGHT_LEG, LEFT_LEG] 89 | 90 | type HangmanDrawingProps = { 91 | numberOfGuesses: number 92 | } 93 | 94 | export function HangmanDrawing({ numberOfGuesses }: HangmanDrawingProps) { 95 | return ( 96 |
97 | {BODY_PARTS.slice(0, numberOfGuesses)} 98 |
108 |
116 |
124 |
125 |
126 | ) 127 | } 128 | -------------------------------------------------------------------------------- /src/HangmanWord.tsx: -------------------------------------------------------------------------------- 1 | type HangmanWordProps = { 2 | guessedLetters: string[] 3 | wordToGuess: string 4 | reveal?: boolean 5 | } 6 | 7 | export function HangmanWord({ 8 | guessedLetters, 9 | wordToGuess, 10 | reveal = false, 11 | }: HangmanWordProps) { 12 | return ( 13 |
23 | {wordToGuess.split("").map((letter, index) => ( 24 | 25 | 35 | {letter} 36 | 37 | 38 | ))} 39 |
40 | ) 41 | } 42 | -------------------------------------------------------------------------------- /src/Keyboard.module.css: -------------------------------------------------------------------------------- 1 | .btn { 2 | width: 100%; 3 | border: 3px solid black; 4 | background: none; 5 | aspect-ratio: 1 / 1; 6 | font-size: 2.5rem; 7 | text-transform: uppercase; 8 | padding: .5rem; 9 | font-weight: bold; 10 | cursor: pointer; 11 | color: black; 12 | } 13 | 14 | .btn.active { 15 | background-color: hsl(200, 100%, 50%); 16 | color: white; 17 | } 18 | 19 | .btn.inactive { 20 | opacity: .3; 21 | } 22 | 23 | .btn:hover:not(:disabled), 24 | .btn:focus:not(:disabled) { 25 | background-color: hsl(200, 100%, 75%); 26 | } -------------------------------------------------------------------------------- /src/Keyboard.tsx: -------------------------------------------------------------------------------- 1 | import styles from "./Keyboard.module.css" 2 | 3 | const KEYS = [ 4 | "a", 5 | "b", 6 | "c", 7 | "d", 8 | "e", 9 | "f", 10 | "g", 11 | "h", 12 | "i", 13 | "j", 14 | "k", 15 | "l", 16 | "m", 17 | "n", 18 | "o", 19 | "p", 20 | "q", 21 | "r", 22 | "s", 23 | "t", 24 | "u", 25 | "v", 26 | "w", 27 | "x", 28 | "y", 29 | "z", 30 | ] 31 | 32 | type KeyboardProps = { 33 | disabled?: boolean 34 | activeLetters: string[] 35 | inactiveLetters: string[] 36 | addGuessedLetter: (letter: string) => void 37 | } 38 | 39 | export function Keyboard({ 40 | activeLetters, 41 | inactiveLetters, 42 | addGuessedLetter, 43 | disabled = false, 44 | }: KeyboardProps) { 45 | return ( 46 |
53 | {KEYS.map(key => { 54 | const isActive = activeLetters.includes(key) 55 | const isInactive = inactiveLetters.includes(key) 56 | return ( 57 | 67 | ) 68 | })} 69 |
70 | ) 71 | } 72 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import ReactDOM from "react-dom/client" 3 | import App from "./App" 4 | 5 | ReactDOM.createRoot(document.getElementById("root")!).render( 6 | 7 | 8 | 9 | ) 10 | -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/wordList.json: -------------------------------------------------------------------------------- 1 | [ 2 | "able", 3 | "about", 4 | "absolute", 5 | "accept", 6 | "account", 7 | "achieve", 8 | "across", 9 | "active", 10 | "actual", 11 | "address", 12 | "admit", 13 | "advertise", 14 | "affect", 15 | "afford", 16 | "after", 17 | "afternoon", 18 | "again", 19 | "against", 20 | "agent", 21 | "agree", 22 | "allow", 23 | "almost", 24 | "along", 25 | "already", 26 | "alright", 27 | "also", 28 | "although", 29 | "always", 30 | "america", 31 | "amount", 32 | "another", 33 | "answer", 34 | "apart", 35 | "apparent", 36 | "appear", 37 | "apply", 38 | "appoint", 39 | "approach", 40 | "appropriate", 41 | "area", 42 | "argue", 43 | "around", 44 | "arrange", 45 | "associate", 46 | "assume", 47 | "attend", 48 | "authority", 49 | "available", 50 | "aware", 51 | "away", 52 | "awful", 53 | "baby", 54 | "back", 55 | "balance", 56 | "ball", 57 | "bank", 58 | "base", 59 | "basis", 60 | "bear", 61 | "beat", 62 | "beauty", 63 | "because", 64 | "become", 65 | "before", 66 | "begin", 67 | "behind", 68 | "believe", 69 | "benefit", 70 | "best", 71 | "between", 72 | "bill", 73 | "birth", 74 | "black", 75 | "bloke", 76 | "blood", 77 | "blow", 78 | "blue", 79 | "board", 80 | "boat", 81 | "body", 82 | "book", 83 | "both", 84 | "bother", 85 | "bottle", 86 | "bottom", 87 | "break", 88 | "brief", 89 | "brilliant", 90 | "bring", 91 | "britain", 92 | "brother", 93 | "budget", 94 | "build", 95 | "business", 96 | "busy", 97 | "cake", 98 | "call", 99 | "card", 100 | "care", 101 | "carry", 102 | "case", 103 | "catch", 104 | "cause", 105 | "cent", 106 | "centre", 107 | "certain", 108 | "chair", 109 | "chairman", 110 | "chance", 111 | "change", 112 | "chap", 113 | "character", 114 | "charge", 115 | "cheap", 116 | "check", 117 | "child", 118 | "choice", 119 | "choose", 120 | "Christ", 121 | "Christmas", 122 | "church", 123 | "city", 124 | "claim", 125 | "class", 126 | "clean", 127 | "clear", 128 | "client", 129 | "clock", 130 | "close", 131 | "closes", 132 | "clothe", 133 | "club", 134 | "coffee", 135 | "cold", 136 | "colleague", 137 | "collect", 138 | "college", 139 | "colour", 140 | "come", 141 | "comment", 142 | "commit", 143 | "committee", 144 | "common", 145 | "community", 146 | "company", 147 | "compare", 148 | "complete", 149 | "compute", 150 | "concern", 151 | "condition", 152 | "confer", 153 | "consider", 154 | "consult", 155 | "contact", 156 | "continue", 157 | "contract", 158 | "control", 159 | "converse", 160 | "cook", 161 | "copy", 162 | "corner", 163 | "correct", 164 | "cost", 165 | "could", 166 | "council", 167 | "count", 168 | "country", 169 | "county", 170 | "couple", 171 | "course", 172 | "court", 173 | "cover", 174 | "create", 175 | "cross", 176 | "current", 177 | "danger", 178 | "date", 179 | "dead", 180 | "deal", 181 | "dear", 182 | "debate", 183 | "decide", 184 | "decision", 185 | "deep", 186 | "definite", 187 | "degree", 188 | "department", 189 | "depend", 190 | "describe", 191 | "design", 192 | "detail", 193 | "develop", 194 | "difference", 195 | "difficult", 196 | "dinner", 197 | "direct", 198 | "discuss", 199 | "district", 200 | "divide", 201 | "doctor", 202 | "document", 203 | "door", 204 | "double", 205 | "doubt", 206 | "down", 207 | "draw", 208 | "dress", 209 | "drink", 210 | "drive", 211 | "drop", 212 | "during", 213 | "each", 214 | "early", 215 | "east", 216 | "easy", 217 | "economy", 218 | "educate", 219 | "effect", 220 | "eight", 221 | "either", 222 | "elect", 223 | "electric", 224 | "eleven", 225 | "else", 226 | "employ", 227 | "encourage", 228 | "engine", 229 | "english", 230 | "enjoy", 231 | "enough", 232 | "enter", 233 | "environment", 234 | "equal", 235 | "especial", 236 | "europe", 237 | "even", 238 | "evening", 239 | "ever", 240 | "every", 241 | "evidence", 242 | "exact", 243 | "example", 244 | "except", 245 | "excuse", 246 | "exercise", 247 | "exist", 248 | "expect", 249 | "expense", 250 | "experience", 251 | "explain", 252 | "express", 253 | "extra", 254 | "face", 255 | "fact", 256 | "fair", 257 | "fall", 258 | "family", 259 | "farm", 260 | "fast", 261 | "father", 262 | "favour", 263 | "feed", 264 | "feel", 265 | "field", 266 | "fight", 267 | "figure", 268 | "file", 269 | "fill", 270 | "film", 271 | "final", 272 | "finance", 273 | "find", 274 | "fine", 275 | "finish", 276 | "fire", 277 | "first", 278 | "fish", 279 | "five", 280 | "flat", 281 | "floor", 282 | "follow", 283 | "food", 284 | "foot", 285 | "force", 286 | "forget", 287 | "form", 288 | "fortune", 289 | "forward", 290 | "four", 291 | "france", 292 | "free", 293 | "friday", 294 | "friend", 295 | "from", 296 | "front", 297 | "full", 298 | "function", 299 | "fund", 300 | "further", 301 | "future", 302 | "game", 303 | "garden", 304 | "general", 305 | "germany", 306 | "girl", 307 | "give", 308 | "glass", 309 | "good", 310 | "goodbye", 311 | "govern", 312 | "grand", 313 | "grant", 314 | "great", 315 | "green", 316 | "ground", 317 | "group", 318 | "grow", 319 | "guess", 320 | "hair", 321 | "half", 322 | "hall", 323 | "hand", 324 | "hang", 325 | "happen", 326 | "happy", 327 | "hard", 328 | "hate", 329 | "have", 330 | "head", 331 | "health", 332 | "hear", 333 | "heart", 334 | "heat", 335 | "heavy", 336 | "hell", 337 | "help", 338 | "here", 339 | "high", 340 | "history", 341 | "hold", 342 | "holiday", 343 | "home", 344 | "honest", 345 | "hope", 346 | "horse", 347 | "hospital", 348 | "hour", 349 | "house", 350 | "however", 351 | "hullo", 352 | "hundred", 353 | "husband", 354 | "idea", 355 | "identify", 356 | "imagine", 357 | "important", 358 | "improve", 359 | "include", 360 | "income", 361 | "increase", 362 | "indeed", 363 | "individual", 364 | "industry", 365 | "inform", 366 | "inside", 367 | "instead", 368 | "insure", 369 | "interest", 370 | "into", 371 | "introduce", 372 | "invest", 373 | "involve", 374 | "issue", 375 | "item", 376 | "jesus", 377 | "join", 378 | "judge", 379 | "jump", 380 | "just", 381 | "keep", 382 | "kill", 383 | "kind", 384 | "king", 385 | "kitchen", 386 | "knock", 387 | "know", 388 | "labour", 389 | "lady", 390 | "land", 391 | "language", 392 | "large", 393 | "last", 394 | "late", 395 | "laugh", 396 | "lead", 397 | "learn", 398 | "leave", 399 | "left", 400 | "less", 401 | "letter", 402 | "level", 403 | "life", 404 | "light", 405 | "like", 406 | "likely", 407 | "limit", 408 | "line", 409 | "link", 410 | "list", 411 | "listen", 412 | "little", 413 | "live", 414 | "load", 415 | "local", 416 | "lock", 417 | "london", 418 | "long", 419 | "look", 420 | "lord", 421 | "lose", 422 | "love", 423 | "luck", 424 | "lunch", 425 | "machine", 426 | "main", 427 | "major", 428 | "make", 429 | "manage", 430 | "many", 431 | "mark", 432 | "market", 433 | "marry", 434 | "match", 435 | "matter", 436 | "maybe", 437 | "mean", 438 | "meaning", 439 | "measure", 440 | "meet", 441 | "member", 442 | "mention", 443 | "middle", 444 | "might", 445 | "mile", 446 | "milk", 447 | "million", 448 | "mind", 449 | "minister", 450 | "minus", 451 | "minute", 452 | "miss", 453 | "mister", 454 | "moment", 455 | "monday", 456 | "money", 457 | "month", 458 | "more", 459 | "morning", 460 | "most", 461 | "mother", 462 | "motion", 463 | "move", 464 | "much", 465 | "music", 466 | "must", 467 | "name", 468 | "nation", 469 | "nature", 470 | "near", 471 | "necessary", 472 | "need", 473 | "never", 474 | "news", 475 | "next", 476 | "nice", 477 | "night", 478 | "nine", 479 | "none", 480 | "normal", 481 | "north", 482 | "note", 483 | "notice", 484 | "number", 485 | "obvious", 486 | "occasion", 487 | "offer", 488 | "office", 489 | "often", 490 | "okay", 491 | "once", 492 | "only", 493 | "open", 494 | "operate", 495 | "opportunity", 496 | "oppose", 497 | "order", 498 | "organize", 499 | "original", 500 | "other", 501 | "otherwise", 502 | "ought", 503 | "over", 504 | "pack", 505 | "page", 506 | "paint", 507 | "pair", 508 | "paper", 509 | "paragraph", 510 | "pardon", 511 | "parent", 512 | "park", 513 | "part", 514 | "particular", 515 | "party", 516 | "pass", 517 | "past", 518 | "pence", 519 | "pension", 520 | "people", 521 | "percent", 522 | "perfect", 523 | "perhaps", 524 | "period", 525 | "person", 526 | "photograph", 527 | "pick", 528 | "picture", 529 | "piece", 530 | "place", 531 | "plan", 532 | "play", 533 | "please", 534 | "plus", 535 | "point", 536 | "police", 537 | "policy", 538 | "politic", 539 | "poor", 540 | "position", 541 | "positive", 542 | "possible", 543 | "post", 544 | "pound", 545 | "power", 546 | "practise", 547 | "prepare", 548 | "present", 549 | "press", 550 | "pressure", 551 | "presume", 552 | "pretty", 553 | "previous", 554 | "price", 555 | "print", 556 | "private", 557 | "probable", 558 | "problem", 559 | "proceed", 560 | "process", 561 | "produce", 562 | "product", 563 | "programme", 564 | "project", 565 | "proper", 566 | "propose", 567 | "protect", 568 | "provide", 569 | "public", 570 | "pull", 571 | "purpose", 572 | "push", 573 | "quality", 574 | "quarter", 575 | "question", 576 | "quick", 577 | "quid", 578 | "quiet", 579 | "quite", 580 | "radio", 581 | "rail", 582 | "raise", 583 | "range", 584 | "rate", 585 | "rather", 586 | "read", 587 | "ready", 588 | "real", 589 | "realise", 590 | "really", 591 | "reason", 592 | "receive", 593 | "recent", 594 | "reckon", 595 | "recognize", 596 | "recommend", 597 | "record", 598 | "reduce", 599 | "refer", 600 | "regard", 601 | "region", 602 | "relation", 603 | "remember", 604 | "report", 605 | "represent", 606 | "require", 607 | "research", 608 | "resource", 609 | "respect", 610 | "responsible", 611 | "rest", 612 | "result", 613 | "return", 614 | "right", 615 | "ring", 616 | "rise", 617 | "road", 618 | "role", 619 | "roll", 620 | "room", 621 | "round", 622 | "rule", 623 | "safe", 624 | "sale", 625 | "same", 626 | "saturday", 627 | "save", 628 | "scheme", 629 | "school", 630 | "science", 631 | "score", 632 | "scotland", 633 | "seat", 634 | "second", 635 | "secretary", 636 | "section", 637 | "secure", 638 | "seem", 639 | "self", 640 | "sell", 641 | "send", 642 | "sense", 643 | "separate", 644 | "serious", 645 | "serve", 646 | "service", 647 | "settle", 648 | "seven", 649 | "shall", 650 | "share", 651 | "sheet", 652 | "shoe", 653 | "shoot", 654 | "shop", 655 | "short", 656 | "should", 657 | "show", 658 | "shut", 659 | "sick", 660 | "side", 661 | "sign", 662 | "similar", 663 | "simple", 664 | "since", 665 | "sing", 666 | "single", 667 | "sister", 668 | "site", 669 | "situate", 670 | "size", 671 | "sleep", 672 | "slight", 673 | "slow", 674 | "small", 675 | "smoke", 676 | "social", 677 | "society", 678 | "some", 679 | "soon", 680 | "sorry", 681 | "sort", 682 | "sound", 683 | "south", 684 | "space", 685 | "speak", 686 | "special", 687 | "specific", 688 | "speed", 689 | "spell", 690 | "spend", 691 | "square", 692 | "staff", 693 | "stage", 694 | "stairs", 695 | "stand", 696 | "standard", 697 | "start", 698 | "state", 699 | "station", 700 | "stay", 701 | "step", 702 | "stick", 703 | "still", 704 | "stop", 705 | "story", 706 | "straight", 707 | "strategy", 708 | "street", 709 | "strike", 710 | "strong", 711 | "structure", 712 | "student", 713 | "study", 714 | "stuff", 715 | "stupid", 716 | "subject", 717 | "succeed", 718 | "such", 719 | "sudden", 720 | "suggest", 721 | "suit", 722 | "summer", 723 | "sunday", 724 | "supply", 725 | "support", 726 | "suppose", 727 | "sure", 728 | "surprise", 729 | "switch", 730 | "system", 731 | "table", 732 | "take", 733 | "talk", 734 | "tape", 735 | "teach", 736 | "team", 737 | "telephone", 738 | "television", 739 | "tell", 740 | "tend", 741 | "term", 742 | "terrible", 743 | "test", 744 | "than", 745 | "thank", 746 | "then", 747 | "there", 748 | "therefore", 749 | "they", 750 | "thing", 751 | "think", 752 | "thirteen", 753 | "thirty", 754 | "this", 755 | "thou", 756 | "though", 757 | "thousand", 758 | "three", 759 | "through", 760 | "throw", 761 | "thursday", 762 | "time", 763 | "today", 764 | "together", 765 | "tomorrow", 766 | "tonight", 767 | "total", 768 | "touch", 769 | "toward", 770 | "town", 771 | "trade", 772 | "traffic", 773 | "train", 774 | "transport", 775 | "travel", 776 | "treat", 777 | "tree", 778 | "trouble", 779 | "true", 780 | "trust", 781 | "tuesday", 782 | "turn", 783 | "twelve", 784 | "twenty", 785 | "type", 786 | "under", 787 | "understand", 788 | "union", 789 | "unit", 790 | "unite", 791 | "university", 792 | "unless", 793 | "until", 794 | "upon", 795 | "usual", 796 | "value", 797 | "various", 798 | "very", 799 | "video", 800 | "view", 801 | "village", 802 | "visit", 803 | "vote", 804 | "wage", 805 | "wait", 806 | "walk", 807 | "wall", 808 | "want", 809 | "warm", 810 | "wash", 811 | "waste", 812 | "watch", 813 | "water", 814 | "wear", 815 | "wednesday", 816 | "week", 817 | "weigh", 818 | "welcome", 819 | "well", 820 | "west", 821 | "what", 822 | "when", 823 | "where", 824 | "whether", 825 | "which", 826 | "while", 827 | "white", 828 | "whole", 829 | "wide", 830 | "wife", 831 | "will", 832 | "wind", 833 | "window", 834 | "wish", 835 | "with", 836 | "within", 837 | "without", 838 | "woman", 839 | "wonder", 840 | "wood", 841 | "word", 842 | "work", 843 | "world", 844 | "worry", 845 | "worse", 846 | "worth", 847 | "would", 848 | "write", 849 | "wrong", 850 | "year", 851 | "yesterday", 852 | "young" 853 | ] -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "esnext", 5 | "moduleResolution": "node" 6 | }, 7 | "include": ["vite.config.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()] 7 | }) 8 | --------------------------------------------------------------------------------