├── backend
├── error.js
├── .gitignore
├── requests.rest
├── package.json
├── index.js
└── package-lock.json
└── frontend
└── sportsbook-kenya
├── vite.config.js
├── src
├── App.jsx
├── main.jsx
├── components
│ ├── oddsRow.jsx
│ ├── home.jsx
│ └── labels.jsx
├── App.css
└── index.css
├── .gitignore
├── index.html
├── README.md
├── .eslintrc.cjs
├── package.json
└── public
└── vite.svg
/backend/error.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/backend/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .env
3 |
--------------------------------------------------------------------------------
/backend/requests.rest:
--------------------------------------------------------------------------------
1 |
2 | ###
3 |
4 | GET http://localhost:5000/odds
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/vite.config.js:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/src/App.jsx:
--------------------------------------------------------------------------------
1 | import './App.css';
2 | import Home from './components/home';
3 |
4 |
5 | function App() {
6 | return (
7 |
8 |
9 |
10 | );
11 | }
12 |
13 | export default App;
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import App from './App.jsx'
4 | import './index.css'
5 |
6 | ReactDOM.createRoot(document.getElementById('root')).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/.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 | .env
26 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + React
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/README.md:
--------------------------------------------------------------------------------
1 | # React + Vite
2 |
3 | This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4 |
5 | Currently, two official plugins are available:
6 |
7 | - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
8 | - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
9 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/src/components/oddsRow.jsx:
--------------------------------------------------------------------------------
1 | const oddsRow = (props) => {
2 | const outcomes =
3 | props.rowObject?.bookmakers?.[0]?.markets?.[0]?.outcomes || [];
4 |
5 | return (
6 |
7 | {outcomes.length > 2 &&
8 | outcomes.map((outcome, i) => (
9 | <>
10 |
11 |
12 | >
13 | ))}
14 |
15 | );
16 | };
17 |
18 | export default oddsRow;
19 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: { browser: true, es2020: true },
4 | extends: [
5 | 'eslint:recommended',
6 | 'plugin:react/recommended',
7 | 'plugin:react/jsx-runtime',
8 | 'plugin:react-hooks/recommended',
9 | ],
10 | ignorePatterns: ['dist', '.eslintrc.cjs'],
11 | parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
12 | settings: { react: { version: '18.2' } },
13 | plugins: ['react-refresh'],
14 | rules: {
15 | 'react-refresh/only-export-components': [
16 | 'warn',
17 | { allowConstantExport: true },
18 | ],
19 | },
20 | }
21 |
--------------------------------------------------------------------------------
/backend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "betkikwetu",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "start": "nodemon index.js"
8 | },
9 | "keywords": [],
10 | "author": "",
11 | "license": "ISC",
12 | "dependencies": {
13 | "async-redis": "^2.0.0",
14 | "axios": "^1.4.0",
15 | "body-parser": "^1.20.2",
16 | "cors": "^2.8.5",
17 | "dotenv": "^16.3.1",
18 | "express": "^4.18.2",
19 | "node-schedule": "^2.1.1",
20 | "nodemon": "^3.0.1",
21 | "prettyjson": "^1.2.5",
22 | "redis": "^4.6.12",
23 | "socket.io": "^4.7.4",
24 | "uuid": "^9.0.1",
25 | "ws": "^8.16.0",
26 | "wss": "^3.3.4"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/src/App.css:
--------------------------------------------------------------------------------
1 | /* i wnat mybutton to ocuppy all the space from left to right with padding 10 px from both mobile view end their background to be grey
2 | the page background to be whitish grey */
3 |
4 | /* *{
5 |
6 | margin: auto;
7 | padding: 0;
8 | box-sizing: border-box;
9 | font-family: 'Roboto', sans-serif;
10 | font-size: 16px;
11 | line-height: 1.5;
12 | text-align: center;
13 | } */
14 |
15 |
16 | .App {
17 | text-align: center;
18 | padding: 20px;
19 | }
20 |
21 | .App button {
22 | margin: 5px;
23 |
24 | color: #000;
25 | background: white;
26 | padding: 1rem 1.5rem;
27 | }
28 |
29 | .App .outcome{
30 | display: flex;
31 | align-items: center;
32 | justify-content: space-between;
33 | }
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sportsbook-kenya",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "axios": "^1.4.0",
14 | "react": "^18.2.0",
15 | "react-dom": "^18.2.0",
16 | "socket.io-client": "^4.7.4"
17 | },
18 | "devDependencies": {
19 | "@types/react": "^18.2.15",
20 | "@types/react-dom": "^18.2.7",
21 | "@vitejs/plugin-react": "^4.0.3",
22 | "eslint": "^8.45.0",
23 | "eslint-plugin-react": "^7.32.2",
24 | "eslint-plugin-react-hooks": "^4.6.0",
25 | "eslint-plugin-react-refresh": "^0.4.3",
26 | "vite": "^4.4.5"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/src/components/home.jsx:
--------------------------------------------------------------------------------
1 | import { useEffect, useState } from "react";
2 | import OddsRow from "../components/oddsRow"
3 | import io from "socket.io-client";
4 |
5 | const Home = () => {
6 | const [odds, setOdds] = useState([]);
7 | console.log('Type of odds:', typeof odds);
8 | console.log('Odds:', odds);
9 | const socket = io("http://localhost:5000", {
10 | rejectUnauthorized: false
11 |
12 | });
13 |
14 |
15 | useEffect(() => {
16 | socket.on("oddsUpdate", (data) => {
17 | console.log('Received odds update:', data);
18 | setOdds(data);
19 | socket.on("connect_error", (err) => {
20 | console.log(`connect_error due to ${err.message}`);
21 | });
22 | // Acknowledge the reception if needed
23 | socket.emit('acknowledgeOddsUpdate', 'Odds update received!');
24 | });
25 |
26 | // Cleanup function to close the WebSocket connection when the component unmounts
27 | return () => {
28 | socket.disconnect();
29 | };
30 | }, [socket]);
31 |
32 | return (
33 |
34 |
Odds
35 | {odds.length > 0 && (
36 |
37 | {odds.map((odd, index) => (
38 |
39 | ))}
40 |
41 | )}
42 |
43 | );
44 | };
45 |
46 | export default Home;
47 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/src/components/labels.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 |
3 | const Labels = () => {
4 | return (
5 | labels
6 | )
7 | }
8 |
9 | export default Labels
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/frontend/sportsbook-kenya/src/index.css:
--------------------------------------------------------------------------------
1 | :root {
2 | font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
3 | line-height: 1.5;
4 | font-weight: 400;
5 |
6 | color-scheme: light dark;
7 | color: rgba(255, 255, 255, 0.87);
8 | background-color: #242424;
9 |
10 | font-synthesis: none;
11 | text-rendering: optimizeLegibility;
12 | -webkit-font-smoothing: antialiased;
13 | -moz-osx-font-smoothing: grayscale;
14 | /* -webkit-text-size-adjust: 100%; */
15 | }
16 |
17 | a {
18 | font-weight: 500;
19 | color: #646cff;
20 | text-decoration: inherit;
21 | }
22 | a:hover {
23 | color: #535bf2;
24 | }
25 |
26 | body {
27 | margin: 0;
28 | display: flex;
29 | place-items: center;
30 | min-width: 320px;
31 | min-height: 100vh;
32 | }
33 |
34 | h1 {
35 | font-size: 3.2em;
36 | line-height: 1.1;
37 | }
38 |
39 | button {
40 | border-radius: 8px;
41 | border: 1px solid transparent;
42 | padding: 0.6em 1.2em;
43 | font-size: 1em;
44 | font-weight: 500;
45 | font-family: inherit;
46 | background-color: #1a1a1a;
47 | cursor: pointer;
48 | transition: border-color 0.25s;
49 | }
50 | button:hover {
51 | border-color: #646cff;
52 | }
53 | button:focus,
54 | button:focus-visible {
55 | outline: 4px auto -webkit-focus-ring-color;
56 | }
57 |
58 | @media (prefers-color-scheme: light) {
59 | :root {
60 | color: #213547;
61 | background-color: #ffffff;
62 | }
63 | a:hover {
64 | color: #747bff;
65 | }
66 | button {
67 | background-color: #f9f9f9;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/backend/index.js:
--------------------------------------------------------------------------------
1 | const axios = require('axios');
2 | const express = require('express');
3 | require('dotenv').config();
4 | const cors = require('cors');
5 | const app = express();
6 | const port = process.env.PORT || 5000;
7 | const bodyParser = require('body-parser');
8 | var prettyjson = require('prettyjson');
9 | const crypto = require('crypto');
10 | const socketIO = require('socket.io');
11 | const schedule = require('node-schedule');
12 | const {createServer} = require('http')
13 | const { v4: uuidv4 } = require('uuid');
14 | const redis = require('redis');
15 |
16 | app.use(cors(
17 | {
18 | origin: 'http://localhost:5173',
19 | credentials: true,
20 | }
21 | ));
22 |
23 | app.use(bodyParser.urlencoded({ extended: true }));
24 | app.use(bodyParser.json());
25 |
26 | app.use(express.json());
27 | app.use(express.urlencoded({ extended: true }));
28 |
29 | var options = {
30 | keysColor: 'green',
31 | dashColor: 'magenta',
32 | stringColor: 'white',
33 | multilineStringColor: 'cyan'
34 | };
35 |
36 |
37 |
38 | let redisClient;
39 | //self invoked function to connect to redis
40 | (async () => {
41 | redisClient = redis.createClient();
42 |
43 | redisClient.on("error", (error) => console.error(`Error : ${error}`));
44 |
45 | await redisClient.connect();
46 | })();
47 |
48 |
49 |
50 | const apiKey = process.env.API_KEY;
51 | const sportKey = 'upcoming';
52 | const regions = 'uk';
53 | const markets = 'h2h';
54 | const oddsFormat = 'decimal';
55 | const dateFormat = 'iso';
56 |
57 | console.log("API Key:", apiKey);
58 |
59 |
60 |
61 | const server = createServer(app);
62 | const io = socketIO(server);
63 | function broadcast(event, data) {
64 | io.emit(event, data);
65 | }
66 |
67 | app.get('/sporty', async (req, res) => {
68 | try {
69 | const response = await axios.get('https://api.the-odds-api.com/v4/sports', {
70 | params: {
71 | apiKey,
72 | },
73 | });
74 |
75 | let result= response.data.map(game => {
76 | game.bookmakers = game.bookmakers.map(bookmaker => {
77 | bookmaker.markets = bookmaker.markets.filter(market => market.outcomes.length === 3);
78 | return bookmaker;
79 | });
80 | return game;
81 | });
82 | console.log(prettyjson.render(result, options));
83 | console.log(JSON.stringify(result));
84 | res.status(200).json(result);
85 |
86 | } catch (error) {
87 | if (error.response) {
88 | console.error(error.response.data);
89 | console.error(error.response.status);
90 | res.status(400).json(error.message);
91 | } else {
92 | console.error("Error", error.message);
93 | }
94 | }
95 | });
96 |
97 | app.get('/sock-test', async (request, response)=>{
98 | let magic_string = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
99 | let websocket_key = request.headers["sec-websocket-key"];
100 | let concat_string = websocket_key + magic_string
101 | var shasum = crypto.createHash('sha1')
102 | shasum.update(concat_string)
103 | let encrypted_data = shasum.digest('base64')
104 | console.log(encrypted_data)
105 | response
106 | .status(101)
107 | .header({
108 | 'Upgrade': 'websocket',
109 | 'Connection': 'Upgrade',
110 | 'Sec-WebSocket-Accept': encrypted_data,
111 | 'Sec-WebSocket-Version':13
112 | })
113 | .send("alright ");
114 | // console.log(response.data);
115 | });
116 |
117 | async function cacheData(req, res, next) {
118 | const key = req.url;
119 | let results;
120 | try {
121 | const cacheResults = await redisClient.get(key);
122 | if (cacheResults) {
123 | results = JSON.parse(cacheResults);
124 | res.send({
125 | fromCache: true,
126 | data: results,
127 | });
128 | } else {
129 | next();
130 | }
131 | } catch (error) {
132 | console.error(error);
133 | res.status(404);
134 | }
135 | }
136 |
137 |
138 |
139 | const fetchData = async () => {
140 | try{
141 | const response = await axios.get(`https://api.the-odds-api.com/v4/sports/${sportKey}/odds/?limit=2`, {
142 | params: {
143 | apiKey,
144 | regions,
145 | markets,
146 | oddsFormat,
147 | dateFormat,
148 | },
149 | });
150 | console.log("Request sent to the API");
151 |
152 | const results = response.data.map(game => {
153 | game.bookmakers = game.bookmakers.map(bookmaker => {
154 | console.log("Before filtering:", bookmaker.markets);
155 | const filteredMarkets = bookmaker.markets.filter(market => market.outcomes.length === 3);
156 | bookmaker.markets = filteredMarkets.length > 0 ? filteredMarkets : bookmaker.markets;
157 | console.log("After filtering:", bookmaker.markets);
158 | return bookmaker;
159 | });
160 | return game;
161 | });
162 |
163 | console.log(prettyjson.render(results, options));
164 | console.log(JSON.stringify(results));
165 |
166 |
167 | } catch (error) {
168 | console.error('Error fetching odds:', error.message);
169 | // Return an appropriate response or handle the error gracefully
170 | return { error: 'Failed to fetch odds' };
171 | }
172 | }
173 |
174 |
175 |
176 |
177 |
178 | // Schedule a job to run every 1hr and fetch data
179 | const job = schedule.scheduleJob('*/1 * * * *', fetchData);
180 |
181 | // Your API route to fetch odds on demand
182 | app.get('/odds', cacheData, fetchData,async (req, res) => {
183 | // let results = [];
184 | const key = req.url;
185 |
186 | try {
187 |
188 | //const results = await fetchData();\
189 | // Replace the following line
190 | // const results = await fetchData();
191 |
192 | const results = res.locals.data;
193 |
194 | let stringres = JSON.stringify(results);
195 |
196 | await redisClient.set(key, stringres, {
197 | EX: 3600,
198 | NX: true,
199 | });
200 | res.status(200).send({
201 | fromCache: false,
202 | data: stringres
203 | })
204 |
205 |
206 |
207 | //broadcast to the front end
208 | //res.send(result);
209 | // clients.get(req.cookies.id).send(results)
210 | broadcast('oddsUpdate', stringres);
211 | }
212 | catch (error) {
213 | res.status(500).json({ error: 'Failed to fetch odds' });
214 | }
215 | }
216 | );
217 |
218 |
219 | io.on('connection', (socket) => {
220 | console.log('Socket.io client connected');
221 |
222 | // Handle messages from Socket.io clients if needed
223 | socket.on('message', (message) => {
224 | console.log(`Received message from client: ${message}`);
225 | });
226 | });
227 |
228 |
229 |
230 | server.listen(port, () => {
231 | console.log(`Server is running on port: ${port}`);
232 | });
233 |
234 |
--------------------------------------------------------------------------------
/backend/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "betkikwetu",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "betkikwetu",
9 | "version": "1.0.0",
10 | "license": "ISC",
11 | "dependencies": {
12 | "async-redis": "^2.0.0",
13 | "axios": "^1.4.0",
14 | "body-parser": "^1.20.2",
15 | "cors": "^2.8.5",
16 | "dotenv": "^16.3.1",
17 | "express": "^4.18.2",
18 | "node-schedule": "^2.1.1",
19 | "nodemon": "^3.0.1",
20 | "prettyjson": "^1.2.5",
21 | "redis": "^4.6.12",
22 | "socket.io": "^4.7.4",
23 | "uuid": "^9.0.1",
24 | "ws": "^8.16.0",
25 | "wss": "^3.3.4"
26 | }
27 | },
28 | "node_modules/@redis/bloom": {
29 | "version": "1.2.0",
30 | "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.2.0.tgz",
31 | "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==",
32 | "peerDependencies": {
33 | "@redis/client": "^1.0.0"
34 | }
35 | },
36 | "node_modules/@redis/client": {
37 | "version": "1.5.13",
38 | "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.5.13.tgz",
39 | "integrity": "sha512-epkUM9D0Sdmt93/8Ozk43PNjLi36RZzG+d/T1Gdu5AI8jvghonTeLYV69WVWdilvFo+PYxbP0TZ0saMvr6nscQ==",
40 | "dependencies": {
41 | "cluster-key-slot": "1.1.2",
42 | "generic-pool": "3.9.0",
43 | "yallist": "4.0.0"
44 | },
45 | "engines": {
46 | "node": ">=14"
47 | }
48 | },
49 | "node_modules/@redis/graph": {
50 | "version": "1.1.1",
51 | "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.1.tgz",
52 | "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==",
53 | "peerDependencies": {
54 | "@redis/client": "^1.0.0"
55 | }
56 | },
57 | "node_modules/@redis/json": {
58 | "version": "1.0.6",
59 | "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.6.tgz",
60 | "integrity": "sha512-rcZO3bfQbm2zPRpqo82XbW8zg4G/w4W3tI7X8Mqleq9goQjAGLL7q/1n1ZX4dXEAmORVZ4s1+uKLaUOg7LrUhw==",
61 | "peerDependencies": {
62 | "@redis/client": "^1.0.0"
63 | }
64 | },
65 | "node_modules/@redis/search": {
66 | "version": "1.1.6",
67 | "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.6.tgz",
68 | "integrity": "sha512-mZXCxbTYKBQ3M2lZnEddwEAks0Kc7nauire8q20oA0oA/LoA+E/b5Y5KZn232ztPb1FkIGqo12vh3Lf+Vw5iTw==",
69 | "peerDependencies": {
70 | "@redis/client": "^1.0.0"
71 | }
72 | },
73 | "node_modules/@redis/time-series": {
74 | "version": "1.0.5",
75 | "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.5.tgz",
76 | "integrity": "sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==",
77 | "peerDependencies": {
78 | "@redis/client": "^1.0.0"
79 | }
80 | },
81 | "node_modules/@socket.io/component-emitter": {
82 | "version": "3.1.0",
83 | "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
84 | "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
85 | },
86 | "node_modules/@types/cookie": {
87 | "version": "0.4.1",
88 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
89 | "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
90 | },
91 | "node_modules/@types/cors": {
92 | "version": "2.8.17",
93 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
94 | "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
95 | "dependencies": {
96 | "@types/node": "*"
97 | }
98 | },
99 | "node_modules/@types/node": {
100 | "version": "20.11.5",
101 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz",
102 | "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==",
103 | "dependencies": {
104 | "undici-types": "~5.26.4"
105 | }
106 | },
107 | "node_modules/abbrev": {
108 | "version": "1.1.1",
109 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
110 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
111 | },
112 | "node_modules/accepts": {
113 | "version": "1.3.8",
114 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
115 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
116 | "dependencies": {
117 | "mime-types": "~2.1.34",
118 | "negotiator": "0.6.3"
119 | },
120 | "engines": {
121 | "node": ">= 0.6"
122 | }
123 | },
124 | "node_modules/amdefine": {
125 | "version": "1.0.1",
126 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
127 | "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==",
128 | "optional": true,
129 | "engines": {
130 | "node": ">=0.4.2"
131 | }
132 | },
133 | "node_modules/anymatch": {
134 | "version": "3.1.3",
135 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
136 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
137 | "dependencies": {
138 | "normalize-path": "^3.0.0",
139 | "picomatch": "^2.0.4"
140 | },
141 | "engines": {
142 | "node": ">= 8"
143 | }
144 | },
145 | "node_modules/argparse": {
146 | "version": "1.0.10",
147 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
148 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
149 | "optional": true,
150 | "dependencies": {
151 | "sprintf-js": "~1.0.2"
152 | }
153 | },
154 | "node_modules/array-flatten": {
155 | "version": "1.1.1",
156 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
157 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
158 | },
159 | "node_modules/async": {
160 | "version": "1.5.2",
161 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
162 | "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
163 | "optional": true
164 | },
165 | "node_modules/async-redis": {
166 | "version": "2.0.0",
167 | "resolved": "https://registry.npmjs.org/async-redis/-/async-redis-2.0.0.tgz",
168 | "integrity": "sha512-cGv40n9h3gpAGMGnX1v5ncgHJ2C3TsRmK6Ekt282jVftiky3v0X13PSfnLoRix9uva7ctb2j9lwA3d2qc4KKTA==",
169 | "dependencies": {
170 | "redis": "3.1.2"
171 | },
172 | "engines": {
173 | "node": ">=7.6.0"
174 | }
175 | },
176 | "node_modules/async-redis/node_modules/redis": {
177 | "version": "3.1.2",
178 | "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz",
179 | "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==",
180 | "dependencies": {
181 | "denque": "^1.5.0",
182 | "redis-commands": "^1.7.0",
183 | "redis-errors": "^1.2.0",
184 | "redis-parser": "^3.0.0"
185 | },
186 | "engines": {
187 | "node": ">=10"
188 | },
189 | "funding": {
190 | "type": "opencollective",
191 | "url": "https://opencollective.com/node-redis"
192 | }
193 | },
194 | "node_modules/asynckit": {
195 | "version": "0.4.0",
196 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
197 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
198 | },
199 | "node_modules/axios": {
200 | "version": "1.4.0",
201 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz",
202 | "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==",
203 | "dependencies": {
204 | "follow-redirects": "^1.15.0",
205 | "form-data": "^4.0.0",
206 | "proxy-from-env": "^1.1.0"
207 | }
208 | },
209 | "node_modules/balanced-match": {
210 | "version": "1.0.2",
211 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
212 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
213 | },
214 | "node_modules/base64id": {
215 | "version": "2.0.0",
216 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
217 | "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
218 | "engines": {
219 | "node": "^4.5.0 || >= 5.9"
220 | }
221 | },
222 | "node_modules/binary-extensions": {
223 | "version": "2.2.0",
224 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
225 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
226 | "engines": {
227 | "node": ">=8"
228 | }
229 | },
230 | "node_modules/body-parser": {
231 | "version": "1.20.2",
232 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
233 | "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
234 | "dependencies": {
235 | "bytes": "3.1.2",
236 | "content-type": "~1.0.5",
237 | "debug": "2.6.9",
238 | "depd": "2.0.0",
239 | "destroy": "1.2.0",
240 | "http-errors": "2.0.0",
241 | "iconv-lite": "0.4.24",
242 | "on-finished": "2.4.1",
243 | "qs": "6.11.0",
244 | "raw-body": "2.5.2",
245 | "type-is": "~1.6.18",
246 | "unpipe": "1.0.0"
247 | },
248 | "engines": {
249 | "node": ">= 0.8",
250 | "npm": "1.2.8000 || >= 1.4.16"
251 | }
252 | },
253 | "node_modules/brace-expansion": {
254 | "version": "1.1.11",
255 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
256 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
257 | "dependencies": {
258 | "balanced-match": "^1.0.0",
259 | "concat-map": "0.0.1"
260 | }
261 | },
262 | "node_modules/braces": {
263 | "version": "3.0.2",
264 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
265 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
266 | "dependencies": {
267 | "fill-range": "^7.0.1"
268 | },
269 | "engines": {
270 | "node": ">=8"
271 | }
272 | },
273 | "node_modules/bytes": {
274 | "version": "3.1.2",
275 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
276 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
277 | "engines": {
278 | "node": ">= 0.8"
279 | }
280 | },
281 | "node_modules/call-bind": {
282 | "version": "1.0.2",
283 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
284 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
285 | "dependencies": {
286 | "function-bind": "^1.1.1",
287 | "get-intrinsic": "^1.0.2"
288 | },
289 | "funding": {
290 | "url": "https://github.com/sponsors/ljharb"
291 | }
292 | },
293 | "node_modules/chokidar": {
294 | "version": "3.5.3",
295 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
296 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
297 | "funding": [
298 | {
299 | "type": "individual",
300 | "url": "https://paulmillr.com/funding/"
301 | }
302 | ],
303 | "dependencies": {
304 | "anymatch": "~3.1.2",
305 | "braces": "~3.0.2",
306 | "glob-parent": "~5.1.2",
307 | "is-binary-path": "~2.1.0",
308 | "is-glob": "~4.0.1",
309 | "normalize-path": "~3.0.0",
310 | "readdirp": "~3.6.0"
311 | },
312 | "engines": {
313 | "node": ">= 8.10.0"
314 | },
315 | "optionalDependencies": {
316 | "fsevents": "~2.3.2"
317 | }
318 | },
319 | "node_modules/cluster-key-slot": {
320 | "version": "1.1.2",
321 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
322 | "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==",
323 | "engines": {
324 | "node": ">=0.10.0"
325 | }
326 | },
327 | "node_modules/colors": {
328 | "version": "1.4.0",
329 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
330 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
331 | "engines": {
332 | "node": ">=0.1.90"
333 | }
334 | },
335 | "node_modules/combined-stream": {
336 | "version": "1.0.8",
337 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
338 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
339 | "dependencies": {
340 | "delayed-stream": "~1.0.0"
341 | },
342 | "engines": {
343 | "node": ">= 0.8"
344 | }
345 | },
346 | "node_modules/concat-map": {
347 | "version": "0.0.1",
348 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
349 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
350 | },
351 | "node_modules/content-disposition": {
352 | "version": "0.5.4",
353 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
354 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
355 | "dependencies": {
356 | "safe-buffer": "5.2.1"
357 | },
358 | "engines": {
359 | "node": ">= 0.6"
360 | }
361 | },
362 | "node_modules/content-type": {
363 | "version": "1.0.5",
364 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
365 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
366 | "engines": {
367 | "node": ">= 0.6"
368 | }
369 | },
370 | "node_modules/cookie": {
371 | "version": "0.5.0",
372 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
373 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
374 | "engines": {
375 | "node": ">= 0.6"
376 | }
377 | },
378 | "node_modules/cookie-signature": {
379 | "version": "1.0.6",
380 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
381 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
382 | },
383 | "node_modules/cors": {
384 | "version": "2.8.5",
385 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
386 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
387 | "dependencies": {
388 | "object-assign": "^4",
389 | "vary": "^1"
390 | },
391 | "engines": {
392 | "node": ">= 0.10"
393 | }
394 | },
395 | "node_modules/cron-parser": {
396 | "version": "4.9.0",
397 | "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz",
398 | "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==",
399 | "dependencies": {
400 | "luxon": "^3.2.1"
401 | },
402 | "engines": {
403 | "node": ">=12.0.0"
404 | }
405 | },
406 | "node_modules/debug": {
407 | "version": "2.6.9",
408 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
409 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
410 | "dependencies": {
411 | "ms": "2.0.0"
412 | }
413 | },
414 | "node_modules/deep-is": {
415 | "version": "0.1.4",
416 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
417 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
418 | "optional": true
419 | },
420 | "node_modules/delayed-stream": {
421 | "version": "1.0.0",
422 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
423 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
424 | "engines": {
425 | "node": ">=0.4.0"
426 | }
427 | },
428 | "node_modules/denque": {
429 | "version": "1.5.1",
430 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz",
431 | "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==",
432 | "engines": {
433 | "node": ">=0.10"
434 | }
435 | },
436 | "node_modules/depd": {
437 | "version": "2.0.0",
438 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
439 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
440 | "engines": {
441 | "node": ">= 0.8"
442 | }
443 | },
444 | "node_modules/destroy": {
445 | "version": "1.2.0",
446 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
447 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
448 | "engines": {
449 | "node": ">= 0.8",
450 | "npm": "1.2.8000 || >= 1.4.16"
451 | }
452 | },
453 | "node_modules/dotenv": {
454 | "version": "16.3.1",
455 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
456 | "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
457 | "engines": {
458 | "node": ">=12"
459 | },
460 | "funding": {
461 | "url": "https://github.com/motdotla/dotenv?sponsor=1"
462 | }
463 | },
464 | "node_modules/ee-first": {
465 | "version": "1.1.1",
466 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
467 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
468 | },
469 | "node_modules/encodeurl": {
470 | "version": "1.0.2",
471 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
472 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
473 | "engines": {
474 | "node": ">= 0.8"
475 | }
476 | },
477 | "node_modules/engine.io": {
478 | "version": "6.5.4",
479 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz",
480 | "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==",
481 | "dependencies": {
482 | "@types/cookie": "^0.4.1",
483 | "@types/cors": "^2.8.12",
484 | "@types/node": ">=10.0.0",
485 | "accepts": "~1.3.4",
486 | "base64id": "2.0.0",
487 | "cookie": "~0.4.1",
488 | "cors": "~2.8.5",
489 | "debug": "~4.3.1",
490 | "engine.io-parser": "~5.2.1",
491 | "ws": "~8.11.0"
492 | },
493 | "engines": {
494 | "node": ">=10.2.0"
495 | }
496 | },
497 | "node_modules/engine.io-parser": {
498 | "version": "5.2.1",
499 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz",
500 | "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==",
501 | "engines": {
502 | "node": ">=10.0.0"
503 | }
504 | },
505 | "node_modules/engine.io/node_modules/cookie": {
506 | "version": "0.4.2",
507 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
508 | "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
509 | "engines": {
510 | "node": ">= 0.6"
511 | }
512 | },
513 | "node_modules/engine.io/node_modules/debug": {
514 | "version": "4.3.4",
515 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
516 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
517 | "dependencies": {
518 | "ms": "2.1.2"
519 | },
520 | "engines": {
521 | "node": ">=6.0"
522 | },
523 | "peerDependenciesMeta": {
524 | "supports-color": {
525 | "optional": true
526 | }
527 | }
528 | },
529 | "node_modules/engine.io/node_modules/ms": {
530 | "version": "2.1.2",
531 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
532 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
533 | },
534 | "node_modules/engine.io/node_modules/ws": {
535 | "version": "8.11.0",
536 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
537 | "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
538 | "engines": {
539 | "node": ">=10.0.0"
540 | },
541 | "peerDependencies": {
542 | "bufferutil": "^4.0.1",
543 | "utf-8-validate": "^5.0.2"
544 | },
545 | "peerDependenciesMeta": {
546 | "bufferutil": {
547 | "optional": true
548 | },
549 | "utf-8-validate": {
550 | "optional": true
551 | }
552 | }
553 | },
554 | "node_modules/escape-html": {
555 | "version": "1.0.3",
556 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
557 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
558 | },
559 | "node_modules/escodegen": {
560 | "version": "1.8.1",
561 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
562 | "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==",
563 | "optional": true,
564 | "dependencies": {
565 | "esprima": "^2.7.1",
566 | "estraverse": "^1.9.1",
567 | "esutils": "^2.0.2",
568 | "optionator": "^0.8.1"
569 | },
570 | "bin": {
571 | "escodegen": "bin/escodegen.js",
572 | "esgenerate": "bin/esgenerate.js"
573 | },
574 | "engines": {
575 | "node": ">=0.12.0"
576 | },
577 | "optionalDependencies": {
578 | "source-map": "~0.2.0"
579 | }
580 | },
581 | "node_modules/esprima": {
582 | "version": "2.7.3",
583 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
584 | "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==",
585 | "optional": true,
586 | "bin": {
587 | "esparse": "bin/esparse.js",
588 | "esvalidate": "bin/esvalidate.js"
589 | },
590 | "engines": {
591 | "node": ">=0.10.0"
592 | }
593 | },
594 | "node_modules/estraverse": {
595 | "version": "1.9.3",
596 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
597 | "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==",
598 | "optional": true,
599 | "engines": {
600 | "node": ">=0.10.0"
601 | }
602 | },
603 | "node_modules/esutils": {
604 | "version": "2.0.3",
605 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
606 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
607 | "optional": true,
608 | "engines": {
609 | "node": ">=0.10.0"
610 | }
611 | },
612 | "node_modules/etag": {
613 | "version": "1.8.1",
614 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
615 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
616 | "engines": {
617 | "node": ">= 0.6"
618 | }
619 | },
620 | "node_modules/express": {
621 | "version": "4.18.2",
622 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
623 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
624 | "dependencies": {
625 | "accepts": "~1.3.8",
626 | "array-flatten": "1.1.1",
627 | "body-parser": "1.20.1",
628 | "content-disposition": "0.5.4",
629 | "content-type": "~1.0.4",
630 | "cookie": "0.5.0",
631 | "cookie-signature": "1.0.6",
632 | "debug": "2.6.9",
633 | "depd": "2.0.0",
634 | "encodeurl": "~1.0.2",
635 | "escape-html": "~1.0.3",
636 | "etag": "~1.8.1",
637 | "finalhandler": "1.2.0",
638 | "fresh": "0.5.2",
639 | "http-errors": "2.0.0",
640 | "merge-descriptors": "1.0.1",
641 | "methods": "~1.1.2",
642 | "on-finished": "2.4.1",
643 | "parseurl": "~1.3.3",
644 | "path-to-regexp": "0.1.7",
645 | "proxy-addr": "~2.0.7",
646 | "qs": "6.11.0",
647 | "range-parser": "~1.2.1",
648 | "safe-buffer": "5.2.1",
649 | "send": "0.18.0",
650 | "serve-static": "1.15.0",
651 | "setprototypeof": "1.2.0",
652 | "statuses": "2.0.1",
653 | "type-is": "~1.6.18",
654 | "utils-merge": "1.0.1",
655 | "vary": "~1.1.2"
656 | },
657 | "engines": {
658 | "node": ">= 0.10.0"
659 | }
660 | },
661 | "node_modules/express/node_modules/body-parser": {
662 | "version": "1.20.1",
663 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
664 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
665 | "dependencies": {
666 | "bytes": "3.1.2",
667 | "content-type": "~1.0.4",
668 | "debug": "2.6.9",
669 | "depd": "2.0.0",
670 | "destroy": "1.2.0",
671 | "http-errors": "2.0.0",
672 | "iconv-lite": "0.4.24",
673 | "on-finished": "2.4.1",
674 | "qs": "6.11.0",
675 | "raw-body": "2.5.1",
676 | "type-is": "~1.6.18",
677 | "unpipe": "1.0.0"
678 | },
679 | "engines": {
680 | "node": ">= 0.8",
681 | "npm": "1.2.8000 || >= 1.4.16"
682 | }
683 | },
684 | "node_modules/express/node_modules/raw-body": {
685 | "version": "2.5.1",
686 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
687 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
688 | "dependencies": {
689 | "bytes": "3.1.2",
690 | "http-errors": "2.0.0",
691 | "iconv-lite": "0.4.24",
692 | "unpipe": "1.0.0"
693 | },
694 | "engines": {
695 | "node": ">= 0.8"
696 | }
697 | },
698 | "node_modules/fast-levenshtein": {
699 | "version": "2.0.6",
700 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
701 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
702 | "optional": true
703 | },
704 | "node_modules/fill-range": {
705 | "version": "7.0.1",
706 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
707 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
708 | "dependencies": {
709 | "to-regex-range": "^5.0.1"
710 | },
711 | "engines": {
712 | "node": ">=8"
713 | }
714 | },
715 | "node_modules/finalhandler": {
716 | "version": "1.2.0",
717 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
718 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
719 | "dependencies": {
720 | "debug": "2.6.9",
721 | "encodeurl": "~1.0.2",
722 | "escape-html": "~1.0.3",
723 | "on-finished": "2.4.1",
724 | "parseurl": "~1.3.3",
725 | "statuses": "2.0.1",
726 | "unpipe": "~1.0.0"
727 | },
728 | "engines": {
729 | "node": ">= 0.8"
730 | }
731 | },
732 | "node_modules/follow-redirects": {
733 | "version": "1.15.2",
734 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
735 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
736 | "funding": [
737 | {
738 | "type": "individual",
739 | "url": "https://github.com/sponsors/RubenVerborgh"
740 | }
741 | ],
742 | "engines": {
743 | "node": ">=4.0"
744 | },
745 | "peerDependenciesMeta": {
746 | "debug": {
747 | "optional": true
748 | }
749 | }
750 | },
751 | "node_modules/form-data": {
752 | "version": "4.0.0",
753 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
754 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
755 | "dependencies": {
756 | "asynckit": "^0.4.0",
757 | "combined-stream": "^1.0.8",
758 | "mime-types": "^2.1.12"
759 | },
760 | "engines": {
761 | "node": ">= 6"
762 | }
763 | },
764 | "node_modules/forwarded": {
765 | "version": "0.2.0",
766 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
767 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
768 | "engines": {
769 | "node": ">= 0.6"
770 | }
771 | },
772 | "node_modules/fresh": {
773 | "version": "0.5.2",
774 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
775 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
776 | "engines": {
777 | "node": ">= 0.6"
778 | }
779 | },
780 | "node_modules/fsevents": {
781 | "version": "2.3.2",
782 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
783 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
784 | "hasInstallScript": true,
785 | "optional": true,
786 | "os": [
787 | "darwin"
788 | ],
789 | "engines": {
790 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
791 | }
792 | },
793 | "node_modules/function-bind": {
794 | "version": "1.1.1",
795 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
796 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
797 | },
798 | "node_modules/generic-pool": {
799 | "version": "3.9.0",
800 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz",
801 | "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==",
802 | "engines": {
803 | "node": ">= 4"
804 | }
805 | },
806 | "node_modules/get-intrinsic": {
807 | "version": "1.2.1",
808 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
809 | "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
810 | "dependencies": {
811 | "function-bind": "^1.1.1",
812 | "has": "^1.0.3",
813 | "has-proto": "^1.0.1",
814 | "has-symbols": "^1.0.3"
815 | },
816 | "funding": {
817 | "url": "https://github.com/sponsors/ljharb"
818 | }
819 | },
820 | "node_modules/glob": {
821 | "version": "5.0.15",
822 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
823 | "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==",
824 | "optional": true,
825 | "dependencies": {
826 | "inflight": "^1.0.4",
827 | "inherits": "2",
828 | "minimatch": "2 || 3",
829 | "once": "^1.3.0",
830 | "path-is-absolute": "^1.0.0"
831 | },
832 | "engines": {
833 | "node": "*"
834 | }
835 | },
836 | "node_modules/glob-parent": {
837 | "version": "5.1.2",
838 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
839 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
840 | "dependencies": {
841 | "is-glob": "^4.0.1"
842 | },
843 | "engines": {
844 | "node": ">= 6"
845 | }
846 | },
847 | "node_modules/handlebars": {
848 | "version": "4.7.8",
849 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
850 | "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
851 | "optional": true,
852 | "dependencies": {
853 | "minimist": "^1.2.5",
854 | "neo-async": "^2.6.2",
855 | "source-map": "^0.6.1",
856 | "wordwrap": "^1.0.0"
857 | },
858 | "bin": {
859 | "handlebars": "bin/handlebars"
860 | },
861 | "engines": {
862 | "node": ">=0.4.7"
863 | },
864 | "optionalDependencies": {
865 | "uglify-js": "^3.1.4"
866 | }
867 | },
868 | "node_modules/handlebars/node_modules/source-map": {
869 | "version": "0.6.1",
870 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
871 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
872 | "optional": true,
873 | "engines": {
874 | "node": ">=0.10.0"
875 | }
876 | },
877 | "node_modules/has": {
878 | "version": "1.0.3",
879 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
880 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
881 | "dependencies": {
882 | "function-bind": "^1.1.1"
883 | },
884 | "engines": {
885 | "node": ">= 0.4.0"
886 | }
887 | },
888 | "node_modules/has-flag": {
889 | "version": "3.0.0",
890 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
891 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
892 | "engines": {
893 | "node": ">=4"
894 | }
895 | },
896 | "node_modules/has-proto": {
897 | "version": "1.0.1",
898 | "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
899 | "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
900 | "engines": {
901 | "node": ">= 0.4"
902 | },
903 | "funding": {
904 | "url": "https://github.com/sponsors/ljharb"
905 | }
906 | },
907 | "node_modules/has-symbols": {
908 | "version": "1.0.3",
909 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
910 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
911 | "engines": {
912 | "node": ">= 0.4"
913 | },
914 | "funding": {
915 | "url": "https://github.com/sponsors/ljharb"
916 | }
917 | },
918 | "node_modules/http-errors": {
919 | "version": "2.0.0",
920 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
921 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
922 | "dependencies": {
923 | "depd": "2.0.0",
924 | "inherits": "2.0.4",
925 | "setprototypeof": "1.2.0",
926 | "statuses": "2.0.1",
927 | "toidentifier": "1.0.1"
928 | },
929 | "engines": {
930 | "node": ">= 0.8"
931 | }
932 | },
933 | "node_modules/iconv-lite": {
934 | "version": "0.4.24",
935 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
936 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
937 | "dependencies": {
938 | "safer-buffer": ">= 2.1.2 < 3"
939 | },
940 | "engines": {
941 | "node": ">=0.10.0"
942 | }
943 | },
944 | "node_modules/ignore-by-default": {
945 | "version": "1.0.1",
946 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
947 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="
948 | },
949 | "node_modules/inflight": {
950 | "version": "1.0.6",
951 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
952 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
953 | "optional": true,
954 | "dependencies": {
955 | "once": "^1.3.0",
956 | "wrappy": "1"
957 | }
958 | },
959 | "node_modules/inherits": {
960 | "version": "2.0.4",
961 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
962 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
963 | },
964 | "node_modules/ipaddr.js": {
965 | "version": "1.9.1",
966 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
967 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
968 | "engines": {
969 | "node": ">= 0.10"
970 | }
971 | },
972 | "node_modules/is-binary-path": {
973 | "version": "2.1.0",
974 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
975 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
976 | "dependencies": {
977 | "binary-extensions": "^2.0.0"
978 | },
979 | "engines": {
980 | "node": ">=8"
981 | }
982 | },
983 | "node_modules/is-extglob": {
984 | "version": "2.1.1",
985 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
986 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
987 | "engines": {
988 | "node": ">=0.10.0"
989 | }
990 | },
991 | "node_modules/is-glob": {
992 | "version": "4.0.3",
993 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
994 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
995 | "dependencies": {
996 | "is-extglob": "^2.1.1"
997 | },
998 | "engines": {
999 | "node": ">=0.10.0"
1000 | }
1001 | },
1002 | "node_modules/is-number": {
1003 | "version": "7.0.0",
1004 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1005 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1006 | "engines": {
1007 | "node": ">=0.12.0"
1008 | }
1009 | },
1010 | "node_modules/isexe": {
1011 | "version": "2.0.0",
1012 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1013 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
1014 | "optional": true
1015 | },
1016 | "node_modules/istanbul": {
1017 | "version": "0.4.5",
1018 | "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
1019 | "integrity": "sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg==",
1020 | "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.",
1021 | "optional": true,
1022 | "dependencies": {
1023 | "abbrev": "1.0.x",
1024 | "async": "1.x",
1025 | "escodegen": "1.8.x",
1026 | "esprima": "2.7.x",
1027 | "glob": "^5.0.15",
1028 | "handlebars": "^4.0.1",
1029 | "js-yaml": "3.x",
1030 | "mkdirp": "0.5.x",
1031 | "nopt": "3.x",
1032 | "once": "1.x",
1033 | "resolve": "1.1.x",
1034 | "supports-color": "^3.1.0",
1035 | "which": "^1.1.1",
1036 | "wordwrap": "^1.0.0"
1037 | },
1038 | "bin": {
1039 | "istanbul": "lib/cli.js"
1040 | }
1041 | },
1042 | "node_modules/istanbul/node_modules/abbrev": {
1043 | "version": "1.0.9",
1044 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
1045 | "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==",
1046 | "optional": true
1047 | },
1048 | "node_modules/istanbul/node_modules/has-flag": {
1049 | "version": "1.0.0",
1050 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
1051 | "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
1052 | "optional": true,
1053 | "engines": {
1054 | "node": ">=0.10.0"
1055 | }
1056 | },
1057 | "node_modules/istanbul/node_modules/nopt": {
1058 | "version": "3.0.6",
1059 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
1060 | "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
1061 | "optional": true,
1062 | "dependencies": {
1063 | "abbrev": "1"
1064 | },
1065 | "bin": {
1066 | "nopt": "bin/nopt.js"
1067 | }
1068 | },
1069 | "node_modules/istanbul/node_modules/supports-color": {
1070 | "version": "3.2.3",
1071 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
1072 | "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
1073 | "optional": true,
1074 | "dependencies": {
1075 | "has-flag": "^1.0.0"
1076 | },
1077 | "engines": {
1078 | "node": ">=0.8.0"
1079 | }
1080 | },
1081 | "node_modules/js-yaml": {
1082 | "version": "3.14.1",
1083 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
1084 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
1085 | "optional": true,
1086 | "dependencies": {
1087 | "argparse": "^1.0.7",
1088 | "esprima": "^4.0.0"
1089 | },
1090 | "bin": {
1091 | "js-yaml": "bin/js-yaml.js"
1092 | }
1093 | },
1094 | "node_modules/js-yaml/node_modules/esprima": {
1095 | "version": "4.0.1",
1096 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
1097 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
1098 | "optional": true,
1099 | "bin": {
1100 | "esparse": "bin/esparse.js",
1101 | "esvalidate": "bin/esvalidate.js"
1102 | },
1103 | "engines": {
1104 | "node": ">=4"
1105 | }
1106 | },
1107 | "node_modules/levn": {
1108 | "version": "0.3.0",
1109 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1110 | "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
1111 | "optional": true,
1112 | "dependencies": {
1113 | "prelude-ls": "~1.1.2",
1114 | "type-check": "~0.3.2"
1115 | },
1116 | "engines": {
1117 | "node": ">= 0.8.0"
1118 | }
1119 | },
1120 | "node_modules/long-timeout": {
1121 | "version": "0.1.1",
1122 | "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz",
1123 | "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w=="
1124 | },
1125 | "node_modules/lru-cache": {
1126 | "version": "6.0.0",
1127 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1128 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1129 | "dependencies": {
1130 | "yallist": "^4.0.0"
1131 | },
1132 | "engines": {
1133 | "node": ">=10"
1134 | }
1135 | },
1136 | "node_modules/luxon": {
1137 | "version": "3.4.4",
1138 | "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz",
1139 | "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==",
1140 | "engines": {
1141 | "node": ">=12"
1142 | }
1143 | },
1144 | "node_modules/media-typer": {
1145 | "version": "0.3.0",
1146 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1147 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
1148 | "engines": {
1149 | "node": ">= 0.6"
1150 | }
1151 | },
1152 | "node_modules/merge-descriptors": {
1153 | "version": "1.0.1",
1154 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1155 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
1156 | },
1157 | "node_modules/methods": {
1158 | "version": "1.1.2",
1159 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1160 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
1161 | "engines": {
1162 | "node": ">= 0.6"
1163 | }
1164 | },
1165 | "node_modules/mime": {
1166 | "version": "1.6.0",
1167 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1168 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1169 | "bin": {
1170 | "mime": "cli.js"
1171 | },
1172 | "engines": {
1173 | "node": ">=4"
1174 | }
1175 | },
1176 | "node_modules/mime-db": {
1177 | "version": "1.52.0",
1178 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1179 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1180 | "engines": {
1181 | "node": ">= 0.6"
1182 | }
1183 | },
1184 | "node_modules/mime-types": {
1185 | "version": "2.1.35",
1186 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1187 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1188 | "dependencies": {
1189 | "mime-db": "1.52.0"
1190 | },
1191 | "engines": {
1192 | "node": ">= 0.6"
1193 | }
1194 | },
1195 | "node_modules/minimatch": {
1196 | "version": "3.1.2",
1197 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1198 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1199 | "dependencies": {
1200 | "brace-expansion": "^1.1.7"
1201 | },
1202 | "engines": {
1203 | "node": "*"
1204 | }
1205 | },
1206 | "node_modules/minimist": {
1207 | "version": "1.2.8",
1208 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
1209 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
1210 | "funding": {
1211 | "url": "https://github.com/sponsors/ljharb"
1212 | }
1213 | },
1214 | "node_modules/mkdirp": {
1215 | "version": "0.5.6",
1216 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
1217 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
1218 | "optional": true,
1219 | "dependencies": {
1220 | "minimist": "^1.2.6"
1221 | },
1222 | "bin": {
1223 | "mkdirp": "bin/cmd.js"
1224 | }
1225 | },
1226 | "node_modules/ms": {
1227 | "version": "2.0.0",
1228 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1229 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1230 | },
1231 | "node_modules/negotiator": {
1232 | "version": "0.6.3",
1233 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1234 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
1235 | "engines": {
1236 | "node": ">= 0.6"
1237 | }
1238 | },
1239 | "node_modules/neo-async": {
1240 | "version": "2.6.2",
1241 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
1242 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
1243 | "optional": true
1244 | },
1245 | "node_modules/node-schedule": {
1246 | "version": "2.1.1",
1247 | "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz",
1248 | "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==",
1249 | "dependencies": {
1250 | "cron-parser": "^4.2.0",
1251 | "long-timeout": "0.1.1",
1252 | "sorted-array-functions": "^1.3.0"
1253 | },
1254 | "engines": {
1255 | "node": ">=6"
1256 | }
1257 | },
1258 | "node_modules/nodemon": {
1259 | "version": "3.0.1",
1260 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.1.tgz",
1261 | "integrity": "sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==",
1262 | "dependencies": {
1263 | "chokidar": "^3.5.2",
1264 | "debug": "^3.2.7",
1265 | "ignore-by-default": "^1.0.1",
1266 | "minimatch": "^3.1.2",
1267 | "pstree.remy": "^1.1.8",
1268 | "semver": "^7.5.3",
1269 | "simple-update-notifier": "^2.0.0",
1270 | "supports-color": "^5.5.0",
1271 | "touch": "^3.1.0",
1272 | "undefsafe": "^2.0.5"
1273 | },
1274 | "bin": {
1275 | "nodemon": "bin/nodemon.js"
1276 | },
1277 | "engines": {
1278 | "node": ">=10"
1279 | },
1280 | "funding": {
1281 | "type": "opencollective",
1282 | "url": "https://opencollective.com/nodemon"
1283 | }
1284 | },
1285 | "node_modules/nodemon/node_modules/debug": {
1286 | "version": "3.2.7",
1287 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
1288 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
1289 | "dependencies": {
1290 | "ms": "^2.1.1"
1291 | }
1292 | },
1293 | "node_modules/nodemon/node_modules/ms": {
1294 | "version": "2.1.3",
1295 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1296 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1297 | },
1298 | "node_modules/nopt": {
1299 | "version": "1.0.10",
1300 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
1301 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==",
1302 | "dependencies": {
1303 | "abbrev": "1"
1304 | },
1305 | "bin": {
1306 | "nopt": "bin/nopt.js"
1307 | },
1308 | "engines": {
1309 | "node": "*"
1310 | }
1311 | },
1312 | "node_modules/normalize-path": {
1313 | "version": "3.0.0",
1314 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1315 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1316 | "engines": {
1317 | "node": ">=0.10.0"
1318 | }
1319 | },
1320 | "node_modules/object-assign": {
1321 | "version": "4.1.1",
1322 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1323 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1324 | "engines": {
1325 | "node": ">=0.10.0"
1326 | }
1327 | },
1328 | "node_modules/object-inspect": {
1329 | "version": "1.12.3",
1330 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
1331 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
1332 | "funding": {
1333 | "url": "https://github.com/sponsors/ljharb"
1334 | }
1335 | },
1336 | "node_modules/on-finished": {
1337 | "version": "2.4.1",
1338 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1339 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1340 | "dependencies": {
1341 | "ee-first": "1.1.1"
1342 | },
1343 | "engines": {
1344 | "node": ">= 0.8"
1345 | }
1346 | },
1347 | "node_modules/once": {
1348 | "version": "1.4.0",
1349 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1350 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1351 | "optional": true,
1352 | "dependencies": {
1353 | "wrappy": "1"
1354 | }
1355 | },
1356 | "node_modules/optionator": {
1357 | "version": "0.8.3",
1358 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
1359 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
1360 | "optional": true,
1361 | "dependencies": {
1362 | "deep-is": "~0.1.3",
1363 | "fast-levenshtein": "~2.0.6",
1364 | "levn": "~0.3.0",
1365 | "prelude-ls": "~1.1.2",
1366 | "type-check": "~0.3.2",
1367 | "word-wrap": "~1.2.3"
1368 | },
1369 | "engines": {
1370 | "node": ">= 0.8.0"
1371 | }
1372 | },
1373 | "node_modules/parseurl": {
1374 | "version": "1.3.3",
1375 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1376 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1377 | "engines": {
1378 | "node": ">= 0.8"
1379 | }
1380 | },
1381 | "node_modules/path-is-absolute": {
1382 | "version": "1.0.1",
1383 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1384 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1385 | "optional": true,
1386 | "engines": {
1387 | "node": ">=0.10.0"
1388 | }
1389 | },
1390 | "node_modules/path-to-regexp": {
1391 | "version": "0.1.7",
1392 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1393 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
1394 | },
1395 | "node_modules/picomatch": {
1396 | "version": "2.3.1",
1397 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1398 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1399 | "engines": {
1400 | "node": ">=8.6"
1401 | },
1402 | "funding": {
1403 | "url": "https://github.com/sponsors/jonschlinkert"
1404 | }
1405 | },
1406 | "node_modules/prelude-ls": {
1407 | "version": "1.1.2",
1408 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1409 | "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
1410 | "optional": true,
1411 | "engines": {
1412 | "node": ">= 0.8.0"
1413 | }
1414 | },
1415 | "node_modules/prettyjson": {
1416 | "version": "1.2.5",
1417 | "resolved": "https://registry.npmjs.org/prettyjson/-/prettyjson-1.2.5.tgz",
1418 | "integrity": "sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==",
1419 | "dependencies": {
1420 | "colors": "1.4.0",
1421 | "minimist": "^1.2.0"
1422 | },
1423 | "bin": {
1424 | "prettyjson": "bin/prettyjson"
1425 | }
1426 | },
1427 | "node_modules/proxy-addr": {
1428 | "version": "2.0.7",
1429 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1430 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1431 | "dependencies": {
1432 | "forwarded": "0.2.0",
1433 | "ipaddr.js": "1.9.1"
1434 | },
1435 | "engines": {
1436 | "node": ">= 0.10"
1437 | }
1438 | },
1439 | "node_modules/proxy-from-env": {
1440 | "version": "1.1.0",
1441 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
1442 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
1443 | },
1444 | "node_modules/pstree.remy": {
1445 | "version": "1.1.8",
1446 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
1447 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="
1448 | },
1449 | "node_modules/qs": {
1450 | "version": "6.11.0",
1451 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
1452 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
1453 | "dependencies": {
1454 | "side-channel": "^1.0.4"
1455 | },
1456 | "engines": {
1457 | "node": ">=0.6"
1458 | },
1459 | "funding": {
1460 | "url": "https://github.com/sponsors/ljharb"
1461 | }
1462 | },
1463 | "node_modules/range-parser": {
1464 | "version": "1.2.1",
1465 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1466 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1467 | "engines": {
1468 | "node": ">= 0.6"
1469 | }
1470 | },
1471 | "node_modules/raw-body": {
1472 | "version": "2.5.2",
1473 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
1474 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
1475 | "dependencies": {
1476 | "bytes": "3.1.2",
1477 | "http-errors": "2.0.0",
1478 | "iconv-lite": "0.4.24",
1479 | "unpipe": "1.0.0"
1480 | },
1481 | "engines": {
1482 | "node": ">= 0.8"
1483 | }
1484 | },
1485 | "node_modules/readdirp": {
1486 | "version": "3.6.0",
1487 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1488 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1489 | "dependencies": {
1490 | "picomatch": "^2.2.1"
1491 | },
1492 | "engines": {
1493 | "node": ">=8.10.0"
1494 | }
1495 | },
1496 | "node_modules/redis": {
1497 | "version": "4.6.12",
1498 | "resolved": "https://registry.npmjs.org/redis/-/redis-4.6.12.tgz",
1499 | "integrity": "sha512-41Xuuko6P4uH4VPe5nE3BqXHB7a9lkFL0J29AlxKaIfD6eWO8VO/5PDF9ad2oS+mswMsfFxaM5DlE3tnXT+P8Q==",
1500 | "dependencies": {
1501 | "@redis/bloom": "1.2.0",
1502 | "@redis/client": "1.5.13",
1503 | "@redis/graph": "1.1.1",
1504 | "@redis/json": "1.0.6",
1505 | "@redis/search": "1.1.6",
1506 | "@redis/time-series": "1.0.5"
1507 | }
1508 | },
1509 | "node_modules/redis-commands": {
1510 | "version": "1.7.0",
1511 | "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
1512 | "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ=="
1513 | },
1514 | "node_modules/redis-errors": {
1515 | "version": "1.2.0",
1516 | "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
1517 | "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==",
1518 | "engines": {
1519 | "node": ">=4"
1520 | }
1521 | },
1522 | "node_modules/redis-parser": {
1523 | "version": "3.0.0",
1524 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
1525 | "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
1526 | "dependencies": {
1527 | "redis-errors": "^1.0.0"
1528 | },
1529 | "engines": {
1530 | "node": ">=4"
1531 | }
1532 | },
1533 | "node_modules/resolve": {
1534 | "version": "1.1.7",
1535 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
1536 | "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==",
1537 | "optional": true
1538 | },
1539 | "node_modules/safe-buffer": {
1540 | "version": "5.2.1",
1541 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1542 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1543 | "funding": [
1544 | {
1545 | "type": "github",
1546 | "url": "https://github.com/sponsors/feross"
1547 | },
1548 | {
1549 | "type": "patreon",
1550 | "url": "https://www.patreon.com/feross"
1551 | },
1552 | {
1553 | "type": "consulting",
1554 | "url": "https://feross.org/support"
1555 | }
1556 | ]
1557 | },
1558 | "node_modules/safer-buffer": {
1559 | "version": "2.1.2",
1560 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1561 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1562 | },
1563 | "node_modules/semver": {
1564 | "version": "7.5.4",
1565 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
1566 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
1567 | "dependencies": {
1568 | "lru-cache": "^6.0.0"
1569 | },
1570 | "bin": {
1571 | "semver": "bin/semver.js"
1572 | },
1573 | "engines": {
1574 | "node": ">=10"
1575 | }
1576 | },
1577 | "node_modules/send": {
1578 | "version": "0.18.0",
1579 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1580 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1581 | "dependencies": {
1582 | "debug": "2.6.9",
1583 | "depd": "2.0.0",
1584 | "destroy": "1.2.0",
1585 | "encodeurl": "~1.0.2",
1586 | "escape-html": "~1.0.3",
1587 | "etag": "~1.8.1",
1588 | "fresh": "0.5.2",
1589 | "http-errors": "2.0.0",
1590 | "mime": "1.6.0",
1591 | "ms": "2.1.3",
1592 | "on-finished": "2.4.1",
1593 | "range-parser": "~1.2.1",
1594 | "statuses": "2.0.1"
1595 | },
1596 | "engines": {
1597 | "node": ">= 0.8.0"
1598 | }
1599 | },
1600 | "node_modules/send/node_modules/ms": {
1601 | "version": "2.1.3",
1602 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1603 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1604 | },
1605 | "node_modules/serve-static": {
1606 | "version": "1.15.0",
1607 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1608 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1609 | "dependencies": {
1610 | "encodeurl": "~1.0.2",
1611 | "escape-html": "~1.0.3",
1612 | "parseurl": "~1.3.3",
1613 | "send": "0.18.0"
1614 | },
1615 | "engines": {
1616 | "node": ">= 0.8.0"
1617 | }
1618 | },
1619 | "node_modules/setprototypeof": {
1620 | "version": "1.2.0",
1621 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1622 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1623 | },
1624 | "node_modules/side-channel": {
1625 | "version": "1.0.4",
1626 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1627 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1628 | "dependencies": {
1629 | "call-bind": "^1.0.0",
1630 | "get-intrinsic": "^1.0.2",
1631 | "object-inspect": "^1.9.0"
1632 | },
1633 | "funding": {
1634 | "url": "https://github.com/sponsors/ljharb"
1635 | }
1636 | },
1637 | "node_modules/simple-update-notifier": {
1638 | "version": "2.0.0",
1639 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
1640 | "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
1641 | "dependencies": {
1642 | "semver": "^7.5.3"
1643 | },
1644 | "engines": {
1645 | "node": ">=10"
1646 | }
1647 | },
1648 | "node_modules/socket.io": {
1649 | "version": "4.7.4",
1650 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz",
1651 | "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==",
1652 | "dependencies": {
1653 | "accepts": "~1.3.4",
1654 | "base64id": "~2.0.0",
1655 | "cors": "~2.8.5",
1656 | "debug": "~4.3.2",
1657 | "engine.io": "~6.5.2",
1658 | "socket.io-adapter": "~2.5.2",
1659 | "socket.io-parser": "~4.2.4"
1660 | },
1661 | "engines": {
1662 | "node": ">=10.2.0"
1663 | }
1664 | },
1665 | "node_modules/socket.io-adapter": {
1666 | "version": "2.5.2",
1667 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz",
1668 | "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==",
1669 | "dependencies": {
1670 | "ws": "~8.11.0"
1671 | }
1672 | },
1673 | "node_modules/socket.io-adapter/node_modules/ws": {
1674 | "version": "8.11.0",
1675 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
1676 | "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
1677 | "engines": {
1678 | "node": ">=10.0.0"
1679 | },
1680 | "peerDependencies": {
1681 | "bufferutil": "^4.0.1",
1682 | "utf-8-validate": "^5.0.2"
1683 | },
1684 | "peerDependenciesMeta": {
1685 | "bufferutil": {
1686 | "optional": true
1687 | },
1688 | "utf-8-validate": {
1689 | "optional": true
1690 | }
1691 | }
1692 | },
1693 | "node_modules/socket.io-parser": {
1694 | "version": "4.2.4",
1695 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
1696 | "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
1697 | "dependencies": {
1698 | "@socket.io/component-emitter": "~3.1.0",
1699 | "debug": "~4.3.1"
1700 | },
1701 | "engines": {
1702 | "node": ">=10.0.0"
1703 | }
1704 | },
1705 | "node_modules/socket.io-parser/node_modules/debug": {
1706 | "version": "4.3.4",
1707 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1708 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1709 | "dependencies": {
1710 | "ms": "2.1.2"
1711 | },
1712 | "engines": {
1713 | "node": ">=6.0"
1714 | },
1715 | "peerDependenciesMeta": {
1716 | "supports-color": {
1717 | "optional": true
1718 | }
1719 | }
1720 | },
1721 | "node_modules/socket.io-parser/node_modules/ms": {
1722 | "version": "2.1.2",
1723 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1724 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1725 | },
1726 | "node_modules/socket.io/node_modules/debug": {
1727 | "version": "4.3.4",
1728 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1729 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1730 | "dependencies": {
1731 | "ms": "2.1.2"
1732 | },
1733 | "engines": {
1734 | "node": ">=6.0"
1735 | },
1736 | "peerDependenciesMeta": {
1737 | "supports-color": {
1738 | "optional": true
1739 | }
1740 | }
1741 | },
1742 | "node_modules/socket.io/node_modules/ms": {
1743 | "version": "2.1.2",
1744 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1745 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1746 | },
1747 | "node_modules/sorted-array-functions": {
1748 | "version": "1.3.0",
1749 | "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz",
1750 | "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA=="
1751 | },
1752 | "node_modules/source-map": {
1753 | "version": "0.2.0",
1754 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
1755 | "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==",
1756 | "optional": true,
1757 | "dependencies": {
1758 | "amdefine": ">=0.0.4"
1759 | },
1760 | "engines": {
1761 | "node": ">=0.8.0"
1762 | }
1763 | },
1764 | "node_modules/sprintf-js": {
1765 | "version": "1.0.3",
1766 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1767 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
1768 | "optional": true
1769 | },
1770 | "node_modules/statuses": {
1771 | "version": "2.0.1",
1772 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1773 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
1774 | "engines": {
1775 | "node": ">= 0.8"
1776 | }
1777 | },
1778 | "node_modules/supports-color": {
1779 | "version": "5.5.0",
1780 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1781 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1782 | "dependencies": {
1783 | "has-flag": "^3.0.0"
1784 | },
1785 | "engines": {
1786 | "node": ">=4"
1787 | }
1788 | },
1789 | "node_modules/to-regex-range": {
1790 | "version": "5.0.1",
1791 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1792 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1793 | "dependencies": {
1794 | "is-number": "^7.0.0"
1795 | },
1796 | "engines": {
1797 | "node": ">=8.0"
1798 | }
1799 | },
1800 | "node_modules/toidentifier": {
1801 | "version": "1.0.1",
1802 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1803 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1804 | "engines": {
1805 | "node": ">=0.6"
1806 | }
1807 | },
1808 | "node_modules/touch": {
1809 | "version": "3.1.0",
1810 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
1811 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
1812 | "dependencies": {
1813 | "nopt": "~1.0.10"
1814 | },
1815 | "bin": {
1816 | "nodetouch": "bin/nodetouch.js"
1817 | }
1818 | },
1819 | "node_modules/type-check": {
1820 | "version": "0.3.2",
1821 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1822 | "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
1823 | "optional": true,
1824 | "dependencies": {
1825 | "prelude-ls": "~1.1.2"
1826 | },
1827 | "engines": {
1828 | "node": ">= 0.8.0"
1829 | }
1830 | },
1831 | "node_modules/type-is": {
1832 | "version": "1.6.18",
1833 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1834 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1835 | "dependencies": {
1836 | "media-typer": "0.3.0",
1837 | "mime-types": "~2.1.24"
1838 | },
1839 | "engines": {
1840 | "node": ">= 0.6"
1841 | }
1842 | },
1843 | "node_modules/uglify-js": {
1844 | "version": "3.17.4",
1845 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
1846 | "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
1847 | "optional": true,
1848 | "bin": {
1849 | "uglifyjs": "bin/uglifyjs"
1850 | },
1851 | "engines": {
1852 | "node": ">=0.8.0"
1853 | }
1854 | },
1855 | "node_modules/ultron": {
1856 | "version": "1.1.1",
1857 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
1858 | "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
1859 | },
1860 | "node_modules/undefsafe": {
1861 | "version": "2.0.5",
1862 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
1863 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="
1864 | },
1865 | "node_modules/undici-types": {
1866 | "version": "5.26.5",
1867 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
1868 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
1869 | },
1870 | "node_modules/unpipe": {
1871 | "version": "1.0.0",
1872 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1873 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1874 | "engines": {
1875 | "node": ">= 0.8"
1876 | }
1877 | },
1878 | "node_modules/utils-merge": {
1879 | "version": "1.0.1",
1880 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1881 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
1882 | "engines": {
1883 | "node": ">= 0.4.0"
1884 | }
1885 | },
1886 | "node_modules/uuid": {
1887 | "version": "9.0.1",
1888 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
1889 | "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
1890 | "funding": [
1891 | "https://github.com/sponsors/broofa",
1892 | "https://github.com/sponsors/ctavan"
1893 | ],
1894 | "bin": {
1895 | "uuid": "dist/bin/uuid"
1896 | }
1897 | },
1898 | "node_modules/vary": {
1899 | "version": "1.1.2",
1900 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1901 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1902 | "engines": {
1903 | "node": ">= 0.8"
1904 | }
1905 | },
1906 | "node_modules/which": {
1907 | "version": "1.3.1",
1908 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
1909 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
1910 | "optional": true,
1911 | "dependencies": {
1912 | "isexe": "^2.0.0"
1913 | },
1914 | "bin": {
1915 | "which": "bin/which"
1916 | }
1917 | },
1918 | "node_modules/word-wrap": {
1919 | "version": "1.2.5",
1920 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
1921 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
1922 | "optional": true,
1923 | "engines": {
1924 | "node": ">=0.10.0"
1925 | }
1926 | },
1927 | "node_modules/wordwrap": {
1928 | "version": "1.0.0",
1929 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
1930 | "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
1931 | "optional": true
1932 | },
1933 | "node_modules/wrappy": {
1934 | "version": "1.0.2",
1935 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1936 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1937 | "optional": true
1938 | },
1939 | "node_modules/ws": {
1940 | "version": "8.16.0",
1941 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
1942 | "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
1943 | "engines": {
1944 | "node": ">=10.0.0"
1945 | },
1946 | "peerDependencies": {
1947 | "bufferutil": "^4.0.1",
1948 | "utf-8-validate": ">=5.0.2"
1949 | },
1950 | "peerDependenciesMeta": {
1951 | "bufferutil": {
1952 | "optional": true
1953 | },
1954 | "utf-8-validate": {
1955 | "optional": true
1956 | }
1957 | }
1958 | },
1959 | "node_modules/wss": {
1960 | "version": "3.3.4",
1961 | "resolved": "https://registry.npmjs.org/wss/-/wss-3.3.4.tgz",
1962 | "integrity": "sha512-WgVZercD6pVUwEUjFSUpTE7UoOGYAQUwye5VoSuYyPH58xZKfvCEYPTbdGdqdILMnmhSCPoRJXhgsSKY3CmbtA==",
1963 | "dependencies": {
1964 | "ws": "^2.3.1"
1965 | },
1966 | "engines": {
1967 | "node": ">=6"
1968 | },
1969 | "optionalDependencies": {
1970 | "istanbul": "^0.4.5"
1971 | }
1972 | },
1973 | "node_modules/wss/node_modules/safe-buffer": {
1974 | "version": "5.0.1",
1975 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
1976 | "integrity": "sha512-cr7dZWLwOeaFBLTIuZeYdkfO7UzGIKhjYENJFAxUOMKWGaWDm2nJM2rzxNRm5Owu0DH3ApwNo6kx5idXZfb/Iw=="
1977 | },
1978 | "node_modules/wss/node_modules/ws": {
1979 | "version": "2.3.1",
1980 | "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz",
1981 | "integrity": "sha512-61a+9LgtYZxTq1hAonhX8Xwpo2riK4IOR/BIVxioFbCfc3QFKmpE4x9dLExfLHKtUfVZigYa36tThVhO57erEw==",
1982 | "dependencies": {
1983 | "safe-buffer": "~5.0.1",
1984 | "ultron": "~1.1.0"
1985 | }
1986 | },
1987 | "node_modules/yallist": {
1988 | "version": "4.0.0",
1989 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1990 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
1991 | }
1992 | }
1993 | }
1994 |
--------------------------------------------------------------------------------