From 71a3c1f6fa9a19db6130bc3344ee57fc5257f776 Mon Sep 17 00:00:00 2001
From: Muhammad Mohsin <86507595+MohsinKing2002@users.noreply.github.com>
Date: Thu, 20 Oct 2022 00:08:57 +0530
Subject: [PATCH] Added Chat Application using JavaScript(#62)
* make it better
* make it better
* make it better
* make it better
* removing node_modules
* make it better
---
.gitignore | 5 +-
JavaScript/HactoChat/Readme.md | 9 +
JavaScript/HactoChat/app.js | 23 +
JavaScript/HactoChat/index.html | 43 +
JavaScript/HactoChat/package-lock.json | 1363 ++++++++++++++++++++
JavaScript/HactoChat/package.json | 15 +
JavaScript/HactoChat/public/imgs/five.png | Bin 0 -> 201498 bytes
JavaScript/HactoChat/public/imgs/four.png | Bin 0 -> 161215 bytes
JavaScript/HactoChat/public/imgs/one.png | Bin 0 -> 101641 bytes
JavaScript/HactoChat/public/imgs/three.png | Bin 0 -> 98964 bytes
JavaScript/HactoChat/public/imgs/two.png | Bin 0 -> 91883 bytes
JavaScript/HactoChat/public/script.js | 54 +
JavaScript/HactoChat/public/style.css | 86 ++
13 files changed, 1597 insertions(+), 1 deletion(-)
create mode 100644 JavaScript/HactoChat/Readme.md
create mode 100644 JavaScript/HactoChat/app.js
create mode 100644 JavaScript/HactoChat/index.html
create mode 100644 JavaScript/HactoChat/package-lock.json
create mode 100644 JavaScript/HactoChat/package.json
create mode 100644 JavaScript/HactoChat/public/imgs/five.png
create mode 100644 JavaScript/HactoChat/public/imgs/four.png
create mode 100644 JavaScript/HactoChat/public/imgs/one.png
create mode 100644 JavaScript/HactoChat/public/imgs/three.png
create mode 100644 JavaScript/HactoChat/public/imgs/two.png
create mode 100644 JavaScript/HactoChat/public/script.js
create mode 100644 JavaScript/HactoChat/public/style.css
diff --git a/.gitignore b/.gitignore
index 427534a..5649da5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,4 +51,7 @@ coverage.xml
.hypothesis/
.pytest_cache/
.ipynb_checkpoints
-#-----------------------------
\ No newline at end of file
+#-----------------------------
+
+#JavaScript
+node_modules/
\ No newline at end of file
diff --git a/JavaScript/HactoChat/Readme.md b/JavaScript/HactoChat/Readme.md
new file mode 100644
index 0000000..fcf7ec0
--- /dev/null
+++ b/JavaScript/HactoChat/Readme.md
@@ -0,0 +1,9 @@
+#simple chat application using socket.io
+
+
+
+
+
+
+
+
diff --git a/JavaScript/HactoChat/app.js b/JavaScript/HactoChat/app.js
new file mode 100644
index 0000000..476f366
--- /dev/null
+++ b/JavaScript/HactoChat/app.js
@@ -0,0 +1,23 @@
+const express = require("express");
+const app = express();
+const http = require("http").createServer(app);
+
+app.use(express.static(__dirname + "/public"));
+
+app.get("/", (req, res) => {
+ res.sendFile(__dirname + "/index.html");
+});
+
+http.listen(5000, () => {
+ console.log("server is running at http://localhost:5000");
+});
+
+const io = require("socket.io")(http);
+
+io.on("connection", (socket) => {
+ console.log("User Connected !!");
+
+ socket.on("message", (msg) => {
+ socket.broadcast.emit("message", msg);
+ });
+});
diff --git a/JavaScript/HactoChat/index.html b/JavaScript/HactoChat/index.html
new file mode 100644
index 0000000..997740d
--- /dev/null
+++ b/JavaScript/HactoChat/index.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+ HactoChat App
+
+
+
+
+
+
+
+
Hacto Chat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/JavaScript/HactoChat/package-lock.json b/JavaScript/HactoChat/package-lock.json
new file mode 100644
index 0000000..07a6e06
--- /dev/null
+++ b/JavaScript/HactoChat/package-lock.json
@@ -0,0 +1,1363 @@
+{
+ "name": "hactochat",
+ "version": "1.0.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "hactochat",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "express": "^4.18.2",
+ "socket.io": "^4.5.3"
+ }
+ },
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
+ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
+ },
+ "node_modules/@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.12",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
+ "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
+ },
+ "node_modules/@types/node": {
+ "version": "18.11.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.2.tgz",
+ "integrity": "sha512-BWN3M23gLO2jVG8g/XHIRFWiiV4/GckeFIqbU/C4V3xpoBBWSMk4OZomouN0wCkfQFPqgZikyLr7DOYDysIkkw=="
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "node_modules/base64id": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+ "engines": {
+ "node": "^4.5.0 || >= 5.9"
+ }
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/engine.io": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz",
+ "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==",
+ "dependencies": {
+ "@types/cookie": "^0.4.1",
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
+ "accepts": "~1.3.4",
+ "base64id": "2.0.0",
+ "cookie": "~0.4.1",
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.0.3",
+ "ws": "~8.2.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/engine.io-parser": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
+ "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/engine.io/node_modules/cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/engine.io/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/engine.io/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/socket.io": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz",
+ "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==",
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "debug": "~4.3.2",
+ "engine.io": "~6.2.0",
+ "socket.io-adapter": "~2.4.0",
+ "socket.io-parser": "~4.2.0"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-adapter": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
+ "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg=="
+ },
+ "node_modules/socket.io-parser": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz",
+ "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==",
+ "dependencies": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/socket.io-parser/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io-parser/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/socket.io/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/socket.io/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/ws": {
+ "version": "8.2.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
+ "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ }
+ },
+ "dependencies": {
+ "@socket.io/component-emitter": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
+ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
+ },
+ "@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+ },
+ "@types/cors": {
+ "version": "2.8.12",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz",
+ "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
+ },
+ "@types/node": {
+ "version": "18.11.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.2.tgz",
+ "integrity": "sha512-BWN3M23gLO2jVG8g/XHIRFWiiV4/GckeFIqbU/C4V3xpoBBWSMk4OZomouN0wCkfQFPqgZikyLr7DOYDysIkkw=="
+ },
+ "accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "requires": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ }
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "base64id": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
+ "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
+ },
+ "body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "requires": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ }
+ },
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "requires": {
+ "safe-buffer": "5.2.1"
+ }
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
+ },
+ "cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "requires": {
+ "object-assign": "^4",
+ "vary": "^1"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+ },
+ "destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
+ },
+ "engine.io": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz",
+ "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==",
+ "requires": {
+ "@types/cookie": "^0.4.1",
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
+ "accepts": "~1.3.4",
+ "base64id": "2.0.0",
+ "cookie": "~0.4.1",
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.0.3",
+ "ws": "~8.2.3"
+ },
+ "dependencies": {
+ "cookie": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
+ "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "engine.io-parser": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz",
+ "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg=="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
+ },
+ "express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "requires": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ }
+ },
+ "finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "get-intrinsic": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+ },
+ "http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "requires": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
+ },
+ "object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
+ },
+ "on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "requires": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ }
+ },
+ "qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+ },
+ "raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "requires": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ }
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "socket.io": {
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz",
+ "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==",
+ "requires": {
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "debug": "~4.3.2",
+ "engine.io": "~6.2.0",
+ "socket.io-adapter": "~2.4.0",
+ "socket.io-parser": "~4.2.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "socket.io-adapter": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz",
+ "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg=="
+ },
+ "socket.io-parser": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz",
+ "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==",
+ "requires": {
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
+ },
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ }
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
+ },
+ "ws": {
+ "version": "8.2.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz",
+ "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==",
+ "requires": {}
+ }
+ }
+}
diff --git a/JavaScript/HactoChat/package.json b/JavaScript/HactoChat/package.json
new file mode 100644
index 0000000..2edd6d0
--- /dev/null
+++ b/JavaScript/HactoChat/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "hactochat",
+ "version": "1.0.0",
+ "description": "this is chat application for hactober fest 2022",
+ "main": "app.js",
+ "scripts": {
+ "dev": "nodemon app.js"
+ },
+ "author": "Mohsin King",
+ "license": "ISC",
+ "dependencies": {
+ "express": "^4.18.2",
+ "socket.io": "^4.5.3"
+ }
+}
diff --git a/JavaScript/HactoChat/public/imgs/five.png b/JavaScript/HactoChat/public/imgs/five.png
new file mode 100644
index 0000000000000000000000000000000000000000..03f547de5fbb543631d05825419fe6830b863fcb
GIT binary patch
literal 201498
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
lxEx~cZwO)4?hAeBnR79CH3FsyLT0=Y
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