├── .gitignore
├── Procfile
├── README.md
├── api
└── index.js
├── legacy-code
├── app.py
└── requirements.txt
├── netlify.toml
├── package-lock.json
├── package.json
├── public
└── gifs
│ ├── gif2.gif
│ ├── new.gif
│ ├── one.gif
│ ├── pic1.gif
│ ├── pic10.gif
│ ├── pic11.gif
│ ├── pic12.gif
│ ├── pic13.gif
│ ├── pic14.gif
│ ├── pic2.gif
│ ├── pic3.gif
│ ├── pic4.gif
│ ├── pic5.gif
│ ├── pic6.gif
│ ├── pic7.gif
│ ├── pic8.gif
│ ├── pic9.gif
│ ├── program 1.gif
│ ├── program 2.gif
│ ├── program 5.gif
│ ├── programming.gif
│ ├── two.gif
│ └── working.gif
├── static
└── gifs
│ ├── gif2.gif
│ ├── new.gif
│ ├── one.gif
│ ├── pic1.gif
│ ├── pic10.gif
│ ├── pic11.gif
│ ├── pic12.gif
│ ├── pic13.gif
│ ├── pic14.gif
│ ├── pic2.gif
│ ├── pic3.gif
│ ├── pic4.gif
│ ├── pic5.gif
│ ├── pic6.gif
│ ├── pic7.gif
│ ├── pic8.gif
│ ├── pic9.gif
│ ├── program 1.gif
│ ├── program 2.gif
│ ├── program 5.gif
│ ├── programming.gif
│ ├── two.gif
│ └── working.gif
└── vercel.json
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 | .pnpm-debug.log*
9 |
10 | # Diagnostic reports (https://nodejs.org/api/report.html)
11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12 |
13 | # Runtime data
14 | pids
15 | *.pid
16 | *.seed
17 | *.pid.lock
18 |
19 | # Directory for instrumented libs generated by jscoverage/JSCover
20 | lib-cov
21 |
22 | # Coverage directory used by tools like istanbul
23 | coverage
24 | *.lcov
25 |
26 | # nyc test coverage
27 | .nyc_output
28 |
29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30 | .grunt
31 |
32 | # Bower dependency directory (https://bower.io/)
33 | bower_components
34 |
35 | # node-waf configuration
36 | .lock-wscript
37 |
38 | # Compiled binary addons (https://nodejs.org/api/addons.html)
39 | build/Release
40 |
41 | # Dependency directories
42 | node_modules/
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Optional stylelint cache
58 | .stylelintcache
59 |
60 | # Microbundle cache
61 | .rpt2_cache/
62 | .rts2_cache_cjs/
63 | .rts2_cache_es/
64 | .rts2_cache_umd/
65 |
66 | # Optional REPL history
67 | .node_repl_history
68 |
69 | # Output of 'npm pack'
70 | *.tgz
71 |
72 | # Yarn Integrity file
73 | .yarn-integrity
74 |
75 | # dotenv environment variable files
76 | .env
77 | .env.development.local
78 | .env.test.local
79 | .env.production.local
80 | .env.local
81 |
82 | # parcel-bundler cache (https://parceljs.org/)
83 | .cache
84 | .parcel-cache
85 |
86 | # Next.js build output
87 | .next
88 | out
89 |
90 | # Nuxt.js build / generate output
91 | .nuxt
92 | dist
93 |
94 | # Gatsby files
95 | .cache/
96 | # Comment in the public line in if your project uses Gatsby and not Next.js
97 | # https://nextjs.org/blog/next-9-1#public-directory-support
98 | # public
99 |
100 | # vuepress build output
101 | .vuepress/dist
102 |
103 | # vuepress v2.x temp and cache directory
104 | .temp
105 | .cache
106 |
107 | # Docusaurus cache and generated files
108 | .docusaurus
109 |
110 | # Serverless directories
111 | .serverless/
112 |
113 | # FuseBox cache
114 | .fusebox/
115 |
116 | # DynamoDB Local files
117 | .dynamodb/
118 |
119 | # TernJS port file
120 | .tern-port
121 |
122 | # Stores VSCode versions used for testing VSCode extensions
123 | .vscode-test
124 |
125 | # yarn v2
126 | .yarn/cache
127 | .yarn/unplugged
128 | .yarn/build-state.yml
129 | .yarn/install-state.gz
130 | .pnp.*
131 | # Local Netlify folder
132 | .netlify
133 |
--------------------------------------------------------------------------------
/Procfile:
--------------------------------------------------------------------------------
1 | web: gunicorn app:app
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 |
Programing Gifs 👨🏼💻
4 | Programing-gifs is a web app that displays different gifs related to programming at random whenever refreshed.
5 | Anyone can use it in their README.md file or on their website/ Github by the following HTML tag..
6 |
7 | ## How to use ✍🏻
8 | `copy-paste the following line in your README.md to display random programming-gifs 👇🏻 `
9 |
10 |
11 | ```ruby
12 |
13 |
14 |
15 |
16 | ```
17 | `You can also change alignment and height according to your need.`
18 | | Demo |
19 | |---|
20 | |
|
21 |
22 |
23 |
24 | ### `You can contribute to this great project by adding more gifs in the static/gifs folder`
25 |
--------------------------------------------------------------------------------
/api/index.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const fs = require('fs').promises;
3 | const path = require('path');
4 | const app = express();
5 |
6 | const exploreDirectory = async (dirPath, depth = 0, maxDepth = 3) => {
7 | if (depth > maxDepth) return;
8 | try {
9 | const items = await fs.readdir(dirPath, { withFileTypes: true });
10 | console.log(' '.repeat(depth) + `📁 ${dirPath}`);
11 | for (const item of items) {
12 | const itemPath = path.join(dirPath, item.name);
13 | if (item.isDirectory()) {
14 | await exploreDirectory(itemPath, depth + 1, maxDepth);
15 | } else {
16 | console.log(' '.repeat(depth + 1) + `📄 ${item.name}`);
17 | }
18 | }
19 | } catch (error) {
20 | console.error(`Error exploring ${dirPath}:`, error.message);
21 | }
22 | };
23 |
24 | app.get('/', async (req, res) => {
25 | console.log('Request received');
26 |
27 | const potentialPaths = [
28 | path.join(process.cwd(), 'public/gifs'),
29 | path.join(process.cwd(), 'static/gifs'),
30 | path.join(__dirname, '../public/gifs'),
31 | path.join(__dirname, '../static/gifs')
32 | ];
33 |
34 | try {
35 | let gifsFolder = null;
36 | for (const testPath of potentialPaths) {
37 | try {
38 | await fs.access(testPath);
39 | gifsFolder = testPath;
40 | break;
41 | } catch (error) {
42 | console.log(`${testPath} not accessible`);
43 | }
44 | }
45 |
46 | if (!gifsFolder) {
47 | throw new Error('Gifs folder not found');
48 | }
49 |
50 | console.log('Gifs folder found at:', gifsFolder);
51 | const files = await fs.readdir(gifsFolder);
52 | console.log('Files found:', files);
53 |
54 | if (files.length === 0) {
55 | return res.status(500).json({ error: 'No images found' });
56 | }
57 |
58 | const fileName = files[Math.floor(Math.random() * files.length)];
59 | const filePath = path.join(gifsFolder, fileName);
60 | const data = await fs.readFile(filePath);
61 |
62 | res.setHeader('Content-Type', 'image/gif');
63 | res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
64 | res.setHeader('Pragma', 'no-cache');
65 | res.setHeader('Expires', '0');
66 | res.send(data);
67 |
68 | } catch (err) {
69 | console.error('Error:', err);
70 | res.status(500).json({
71 | error: 'Error processing request',
72 | details: err.message,
73 | stack: err.stack,
74 | cwd: process.cwd(),
75 | dirname: __dirname
76 | });
77 | }
78 | });
79 |
80 | if (process.env.NODE_ENV !== 'production') {
81 | const port = process.env.PORT || 3000;
82 | app.listen(port, () => {
83 | console.log(`Server running on port ${port}`);
84 | });
85 | }
86 |
87 | module.exports = app;
--------------------------------------------------------------------------------
/legacy-code/app.py:
--------------------------------------------------------------------------------
1 | from flask import Flask, send_file
2 |
3 | app = Flask(__name__)
4 |
5 | @app.after_request
6 | def set_response_headers(response):
7 | response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
8 | response.headers['Pragma'] = 'no-cache'
9 | response.headers['Expires'] = '0'
10 | return response
11 |
12 | @app.route("/", methods=["GET"])
13 | def index():
14 | import os, random
15 | path=random.choice(os.listdir("static/gifs"))
16 | return send_file(f"static/gifs/{path}", mimetype='image/gif')
17 |
18 |
19 | if __name__ == '__main__':
20 | app.run()
21 |
--------------------------------------------------------------------------------
/legacy-code/requirements.txt:
--------------------------------------------------------------------------------
1 | Flask==2.2.2
2 | gunicorn==20.0.4
3 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [build]
2 | functions = "functions"
3 | publish = "."
4 |
5 | [[redirects]]
6 | from = "/*"
7 | to = "/.netlify/functions/:splat"
8 | status = 200
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "samad",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "samad",
9 | "version": "1.0.0",
10 | "dependencies": {
11 | "express": "^4.18.2",
12 | "node-cache": "^5.1.2"
13 | }
14 | },
15 | "node_modules/accepts": {
16 | "version": "1.3.8",
17 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
18 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
19 | "dependencies": {
20 | "mime-types": "~2.1.34",
21 | "negotiator": "0.6.3"
22 | },
23 | "engines": {
24 | "node": ">= 0.6"
25 | }
26 | },
27 | "node_modules/array-flatten": {
28 | "version": "1.1.1",
29 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
30 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
31 | },
32 | "node_modules/body-parser": {
33 | "version": "1.20.3",
34 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
35 | "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
36 | "dependencies": {
37 | "bytes": "3.1.2",
38 | "content-type": "~1.0.5",
39 | "debug": "2.6.9",
40 | "depd": "2.0.0",
41 | "destroy": "1.2.0",
42 | "http-errors": "2.0.0",
43 | "iconv-lite": "0.4.24",
44 | "on-finished": "2.4.1",
45 | "qs": "6.13.0",
46 | "raw-body": "2.5.2",
47 | "type-is": "~1.6.18",
48 | "unpipe": "1.0.0"
49 | },
50 | "engines": {
51 | "node": ">= 0.8",
52 | "npm": "1.2.8000 || >= 1.4.16"
53 | }
54 | },
55 | "node_modules/bytes": {
56 | "version": "3.1.2",
57 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
58 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
59 | "engines": {
60 | "node": ">= 0.8"
61 | }
62 | },
63 | "node_modules/call-bind-apply-helpers": {
64 | "version": "1.0.1",
65 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
66 | "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
67 | "dependencies": {
68 | "es-errors": "^1.3.0",
69 | "function-bind": "^1.1.2"
70 | },
71 | "engines": {
72 | "node": ">= 0.4"
73 | }
74 | },
75 | "node_modules/call-bound": {
76 | "version": "1.0.3",
77 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
78 | "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
79 | "dependencies": {
80 | "call-bind-apply-helpers": "^1.0.1",
81 | "get-intrinsic": "^1.2.6"
82 | },
83 | "engines": {
84 | "node": ">= 0.4"
85 | },
86 | "funding": {
87 | "url": "https://github.com/sponsors/ljharb"
88 | }
89 | },
90 | "node_modules/clone": {
91 | "version": "2.1.2",
92 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
93 | "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
94 | "engines": {
95 | "node": ">=0.8"
96 | }
97 | },
98 | "node_modules/content-disposition": {
99 | "version": "0.5.4",
100 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
101 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
102 | "dependencies": {
103 | "safe-buffer": "5.2.1"
104 | },
105 | "engines": {
106 | "node": ">= 0.6"
107 | }
108 | },
109 | "node_modules/content-type": {
110 | "version": "1.0.5",
111 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
112 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
113 | "engines": {
114 | "node": ">= 0.6"
115 | }
116 | },
117 | "node_modules/cookie": {
118 | "version": "0.7.1",
119 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
120 | "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
121 | "engines": {
122 | "node": ">= 0.6"
123 | }
124 | },
125 | "node_modules/cookie-signature": {
126 | "version": "1.0.6",
127 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
128 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
129 | },
130 | "node_modules/debug": {
131 | "version": "2.6.9",
132 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
133 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
134 | "dependencies": {
135 | "ms": "2.0.0"
136 | }
137 | },
138 | "node_modules/depd": {
139 | "version": "2.0.0",
140 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
141 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
142 | "engines": {
143 | "node": ">= 0.8"
144 | }
145 | },
146 | "node_modules/destroy": {
147 | "version": "1.2.0",
148 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
149 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
150 | "engines": {
151 | "node": ">= 0.8",
152 | "npm": "1.2.8000 || >= 1.4.16"
153 | }
154 | },
155 | "node_modules/dunder-proto": {
156 | "version": "1.0.1",
157 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
158 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
159 | "dependencies": {
160 | "call-bind-apply-helpers": "^1.0.1",
161 | "es-errors": "^1.3.0",
162 | "gopd": "^1.2.0"
163 | },
164 | "engines": {
165 | "node": ">= 0.4"
166 | }
167 | },
168 | "node_modules/ee-first": {
169 | "version": "1.1.1",
170 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
171 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
172 | },
173 | "node_modules/encodeurl": {
174 | "version": "2.0.0",
175 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
176 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
177 | "engines": {
178 | "node": ">= 0.8"
179 | }
180 | },
181 | "node_modules/es-define-property": {
182 | "version": "1.0.1",
183 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
184 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
185 | "engines": {
186 | "node": ">= 0.4"
187 | }
188 | },
189 | "node_modules/es-errors": {
190 | "version": "1.3.0",
191 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
192 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
193 | "engines": {
194 | "node": ">= 0.4"
195 | }
196 | },
197 | "node_modules/es-object-atoms": {
198 | "version": "1.1.1",
199 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
200 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
201 | "dependencies": {
202 | "es-errors": "^1.3.0"
203 | },
204 | "engines": {
205 | "node": ">= 0.4"
206 | }
207 | },
208 | "node_modules/escape-html": {
209 | "version": "1.0.3",
210 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
211 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
212 | },
213 | "node_modules/etag": {
214 | "version": "1.8.1",
215 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
216 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
217 | "engines": {
218 | "node": ">= 0.6"
219 | }
220 | },
221 | "node_modules/express": {
222 | "version": "4.21.2",
223 | "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
224 | "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
225 | "dependencies": {
226 | "accepts": "~1.3.8",
227 | "array-flatten": "1.1.1",
228 | "body-parser": "1.20.3",
229 | "content-disposition": "0.5.4",
230 | "content-type": "~1.0.4",
231 | "cookie": "0.7.1",
232 | "cookie-signature": "1.0.6",
233 | "debug": "2.6.9",
234 | "depd": "2.0.0",
235 | "encodeurl": "~2.0.0",
236 | "escape-html": "~1.0.3",
237 | "etag": "~1.8.1",
238 | "finalhandler": "1.3.1",
239 | "fresh": "0.5.2",
240 | "http-errors": "2.0.0",
241 | "merge-descriptors": "1.0.3",
242 | "methods": "~1.1.2",
243 | "on-finished": "2.4.1",
244 | "parseurl": "~1.3.3",
245 | "path-to-regexp": "0.1.12",
246 | "proxy-addr": "~2.0.7",
247 | "qs": "6.13.0",
248 | "range-parser": "~1.2.1",
249 | "safe-buffer": "5.2.1",
250 | "send": "0.19.0",
251 | "serve-static": "1.16.2",
252 | "setprototypeof": "1.2.0",
253 | "statuses": "2.0.1",
254 | "type-is": "~1.6.18",
255 | "utils-merge": "1.0.1",
256 | "vary": "~1.1.2"
257 | },
258 | "engines": {
259 | "node": ">= 0.10.0"
260 | },
261 | "funding": {
262 | "type": "opencollective",
263 | "url": "https://opencollective.com/express"
264 | }
265 | },
266 | "node_modules/finalhandler": {
267 | "version": "1.3.1",
268 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
269 | "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
270 | "dependencies": {
271 | "debug": "2.6.9",
272 | "encodeurl": "~2.0.0",
273 | "escape-html": "~1.0.3",
274 | "on-finished": "2.4.1",
275 | "parseurl": "~1.3.3",
276 | "statuses": "2.0.1",
277 | "unpipe": "~1.0.0"
278 | },
279 | "engines": {
280 | "node": ">= 0.8"
281 | }
282 | },
283 | "node_modules/forwarded": {
284 | "version": "0.2.0",
285 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
286 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
287 | "engines": {
288 | "node": ">= 0.6"
289 | }
290 | },
291 | "node_modules/fresh": {
292 | "version": "0.5.2",
293 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
294 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
295 | "engines": {
296 | "node": ">= 0.6"
297 | }
298 | },
299 | "node_modules/function-bind": {
300 | "version": "1.1.2",
301 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
302 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
303 | "funding": {
304 | "url": "https://github.com/sponsors/ljharb"
305 | }
306 | },
307 | "node_modules/get-intrinsic": {
308 | "version": "1.2.7",
309 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
310 | "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
311 | "dependencies": {
312 | "call-bind-apply-helpers": "^1.0.1",
313 | "es-define-property": "^1.0.1",
314 | "es-errors": "^1.3.0",
315 | "es-object-atoms": "^1.0.0",
316 | "function-bind": "^1.1.2",
317 | "get-proto": "^1.0.0",
318 | "gopd": "^1.2.0",
319 | "has-symbols": "^1.1.0",
320 | "hasown": "^2.0.2",
321 | "math-intrinsics": "^1.1.0"
322 | },
323 | "engines": {
324 | "node": ">= 0.4"
325 | },
326 | "funding": {
327 | "url": "https://github.com/sponsors/ljharb"
328 | }
329 | },
330 | "node_modules/get-proto": {
331 | "version": "1.0.1",
332 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
333 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
334 | "dependencies": {
335 | "dunder-proto": "^1.0.1",
336 | "es-object-atoms": "^1.0.0"
337 | },
338 | "engines": {
339 | "node": ">= 0.4"
340 | }
341 | },
342 | "node_modules/gopd": {
343 | "version": "1.2.0",
344 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
345 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
346 | "engines": {
347 | "node": ">= 0.4"
348 | },
349 | "funding": {
350 | "url": "https://github.com/sponsors/ljharb"
351 | }
352 | },
353 | "node_modules/has-symbols": {
354 | "version": "1.1.0",
355 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
356 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
357 | "engines": {
358 | "node": ">= 0.4"
359 | },
360 | "funding": {
361 | "url": "https://github.com/sponsors/ljharb"
362 | }
363 | },
364 | "node_modules/hasown": {
365 | "version": "2.0.2",
366 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
367 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
368 | "dependencies": {
369 | "function-bind": "^1.1.2"
370 | },
371 | "engines": {
372 | "node": ">= 0.4"
373 | }
374 | },
375 | "node_modules/http-errors": {
376 | "version": "2.0.0",
377 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
378 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
379 | "dependencies": {
380 | "depd": "2.0.0",
381 | "inherits": "2.0.4",
382 | "setprototypeof": "1.2.0",
383 | "statuses": "2.0.1",
384 | "toidentifier": "1.0.1"
385 | },
386 | "engines": {
387 | "node": ">= 0.8"
388 | }
389 | },
390 | "node_modules/iconv-lite": {
391 | "version": "0.4.24",
392 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
393 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
394 | "dependencies": {
395 | "safer-buffer": ">= 2.1.2 < 3"
396 | },
397 | "engines": {
398 | "node": ">=0.10.0"
399 | }
400 | },
401 | "node_modules/inherits": {
402 | "version": "2.0.4",
403 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
404 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
405 | },
406 | "node_modules/ipaddr.js": {
407 | "version": "1.9.1",
408 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
409 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
410 | "engines": {
411 | "node": ">= 0.10"
412 | }
413 | },
414 | "node_modules/math-intrinsics": {
415 | "version": "1.1.0",
416 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
417 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
418 | "engines": {
419 | "node": ">= 0.4"
420 | }
421 | },
422 | "node_modules/media-typer": {
423 | "version": "0.3.0",
424 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
425 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
426 | "engines": {
427 | "node": ">= 0.6"
428 | }
429 | },
430 | "node_modules/merge-descriptors": {
431 | "version": "1.0.3",
432 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
433 | "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
434 | "funding": {
435 | "url": "https://github.com/sponsors/sindresorhus"
436 | }
437 | },
438 | "node_modules/methods": {
439 | "version": "1.1.2",
440 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
441 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
442 | "engines": {
443 | "node": ">= 0.6"
444 | }
445 | },
446 | "node_modules/mime": {
447 | "version": "1.6.0",
448 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
449 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
450 | "bin": {
451 | "mime": "cli.js"
452 | },
453 | "engines": {
454 | "node": ">=4"
455 | }
456 | },
457 | "node_modules/mime-db": {
458 | "version": "1.52.0",
459 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
460 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
461 | "engines": {
462 | "node": ">= 0.6"
463 | }
464 | },
465 | "node_modules/mime-types": {
466 | "version": "2.1.35",
467 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
468 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
469 | "dependencies": {
470 | "mime-db": "1.52.0"
471 | },
472 | "engines": {
473 | "node": ">= 0.6"
474 | }
475 | },
476 | "node_modules/ms": {
477 | "version": "2.0.0",
478 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
479 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
480 | },
481 | "node_modules/negotiator": {
482 | "version": "0.6.3",
483 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
484 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
485 | "engines": {
486 | "node": ">= 0.6"
487 | }
488 | },
489 | "node_modules/node-cache": {
490 | "version": "5.1.2",
491 | "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz",
492 | "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==",
493 | "dependencies": {
494 | "clone": "2.x"
495 | },
496 | "engines": {
497 | "node": ">= 8.0.0"
498 | }
499 | },
500 | "node_modules/object-inspect": {
501 | "version": "1.13.3",
502 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
503 | "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==",
504 | "engines": {
505 | "node": ">= 0.4"
506 | },
507 | "funding": {
508 | "url": "https://github.com/sponsors/ljharb"
509 | }
510 | },
511 | "node_modules/on-finished": {
512 | "version": "2.4.1",
513 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
514 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
515 | "dependencies": {
516 | "ee-first": "1.1.1"
517 | },
518 | "engines": {
519 | "node": ">= 0.8"
520 | }
521 | },
522 | "node_modules/parseurl": {
523 | "version": "1.3.3",
524 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
525 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
526 | "engines": {
527 | "node": ">= 0.8"
528 | }
529 | },
530 | "node_modules/path-to-regexp": {
531 | "version": "0.1.12",
532 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
533 | "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
534 | },
535 | "node_modules/proxy-addr": {
536 | "version": "2.0.7",
537 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
538 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
539 | "dependencies": {
540 | "forwarded": "0.2.0",
541 | "ipaddr.js": "1.9.1"
542 | },
543 | "engines": {
544 | "node": ">= 0.10"
545 | }
546 | },
547 | "node_modules/qs": {
548 | "version": "6.13.0",
549 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
550 | "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
551 | "dependencies": {
552 | "side-channel": "^1.0.6"
553 | },
554 | "engines": {
555 | "node": ">=0.6"
556 | },
557 | "funding": {
558 | "url": "https://github.com/sponsors/ljharb"
559 | }
560 | },
561 | "node_modules/range-parser": {
562 | "version": "1.2.1",
563 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
564 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
565 | "engines": {
566 | "node": ">= 0.6"
567 | }
568 | },
569 | "node_modules/raw-body": {
570 | "version": "2.5.2",
571 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
572 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
573 | "dependencies": {
574 | "bytes": "3.1.2",
575 | "http-errors": "2.0.0",
576 | "iconv-lite": "0.4.24",
577 | "unpipe": "1.0.0"
578 | },
579 | "engines": {
580 | "node": ">= 0.8"
581 | }
582 | },
583 | "node_modules/safe-buffer": {
584 | "version": "5.2.1",
585 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
586 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
587 | "funding": [
588 | {
589 | "type": "github",
590 | "url": "https://github.com/sponsors/feross"
591 | },
592 | {
593 | "type": "patreon",
594 | "url": "https://www.patreon.com/feross"
595 | },
596 | {
597 | "type": "consulting",
598 | "url": "https://feross.org/support"
599 | }
600 | ]
601 | },
602 | "node_modules/safer-buffer": {
603 | "version": "2.1.2",
604 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
605 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
606 | },
607 | "node_modules/send": {
608 | "version": "0.19.0",
609 | "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
610 | "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
611 | "dependencies": {
612 | "debug": "2.6.9",
613 | "depd": "2.0.0",
614 | "destroy": "1.2.0",
615 | "encodeurl": "~1.0.2",
616 | "escape-html": "~1.0.3",
617 | "etag": "~1.8.1",
618 | "fresh": "0.5.2",
619 | "http-errors": "2.0.0",
620 | "mime": "1.6.0",
621 | "ms": "2.1.3",
622 | "on-finished": "2.4.1",
623 | "range-parser": "~1.2.1",
624 | "statuses": "2.0.1"
625 | },
626 | "engines": {
627 | "node": ">= 0.8.0"
628 | }
629 | },
630 | "node_modules/send/node_modules/encodeurl": {
631 | "version": "1.0.2",
632 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
633 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
634 | "engines": {
635 | "node": ">= 0.8"
636 | }
637 | },
638 | "node_modules/send/node_modules/ms": {
639 | "version": "2.1.3",
640 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
641 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
642 | },
643 | "node_modules/serve-static": {
644 | "version": "1.16.2",
645 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
646 | "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
647 | "dependencies": {
648 | "encodeurl": "~2.0.0",
649 | "escape-html": "~1.0.3",
650 | "parseurl": "~1.3.3",
651 | "send": "0.19.0"
652 | },
653 | "engines": {
654 | "node": ">= 0.8.0"
655 | }
656 | },
657 | "node_modules/setprototypeof": {
658 | "version": "1.2.0",
659 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
660 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
661 | },
662 | "node_modules/side-channel": {
663 | "version": "1.1.0",
664 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
665 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
666 | "dependencies": {
667 | "es-errors": "^1.3.0",
668 | "object-inspect": "^1.13.3",
669 | "side-channel-list": "^1.0.0",
670 | "side-channel-map": "^1.0.1",
671 | "side-channel-weakmap": "^1.0.2"
672 | },
673 | "engines": {
674 | "node": ">= 0.4"
675 | },
676 | "funding": {
677 | "url": "https://github.com/sponsors/ljharb"
678 | }
679 | },
680 | "node_modules/side-channel-list": {
681 | "version": "1.0.0",
682 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
683 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
684 | "dependencies": {
685 | "es-errors": "^1.3.0",
686 | "object-inspect": "^1.13.3"
687 | },
688 | "engines": {
689 | "node": ">= 0.4"
690 | },
691 | "funding": {
692 | "url": "https://github.com/sponsors/ljharb"
693 | }
694 | },
695 | "node_modules/side-channel-map": {
696 | "version": "1.0.1",
697 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
698 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
699 | "dependencies": {
700 | "call-bound": "^1.0.2",
701 | "es-errors": "^1.3.0",
702 | "get-intrinsic": "^1.2.5",
703 | "object-inspect": "^1.13.3"
704 | },
705 | "engines": {
706 | "node": ">= 0.4"
707 | },
708 | "funding": {
709 | "url": "https://github.com/sponsors/ljharb"
710 | }
711 | },
712 | "node_modules/side-channel-weakmap": {
713 | "version": "1.0.2",
714 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
715 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
716 | "dependencies": {
717 | "call-bound": "^1.0.2",
718 | "es-errors": "^1.3.0",
719 | "get-intrinsic": "^1.2.5",
720 | "object-inspect": "^1.13.3",
721 | "side-channel-map": "^1.0.1"
722 | },
723 | "engines": {
724 | "node": ">= 0.4"
725 | },
726 | "funding": {
727 | "url": "https://github.com/sponsors/ljharb"
728 | }
729 | },
730 | "node_modules/statuses": {
731 | "version": "2.0.1",
732 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
733 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
734 | "engines": {
735 | "node": ">= 0.8"
736 | }
737 | },
738 | "node_modules/toidentifier": {
739 | "version": "1.0.1",
740 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
741 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
742 | "engines": {
743 | "node": ">=0.6"
744 | }
745 | },
746 | "node_modules/type-is": {
747 | "version": "1.6.18",
748 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
749 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
750 | "dependencies": {
751 | "media-typer": "0.3.0",
752 | "mime-types": "~2.1.24"
753 | },
754 | "engines": {
755 | "node": ">= 0.6"
756 | }
757 | },
758 | "node_modules/unpipe": {
759 | "version": "1.0.0",
760 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
761 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
762 | "engines": {
763 | "node": ">= 0.8"
764 | }
765 | },
766 | "node_modules/utils-merge": {
767 | "version": "1.0.1",
768 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
769 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
770 | "engines": {
771 | "node": ">= 0.4.0"
772 | }
773 | },
774 | "node_modules/vary": {
775 | "version": "1.1.2",
776 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
777 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
778 | "engines": {
779 | "node": ">= 0.8"
780 | }
781 | }
782 | },
783 | "dependencies": {
784 | "accepts": {
785 | "version": "1.3.8",
786 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
787 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
788 | "requires": {
789 | "mime-types": "~2.1.34",
790 | "negotiator": "0.6.3"
791 | }
792 | },
793 | "array-flatten": {
794 | "version": "1.1.1",
795 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
796 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
797 | },
798 | "body-parser": {
799 | "version": "1.20.3",
800 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
801 | "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
802 | "requires": {
803 | "bytes": "3.1.2",
804 | "content-type": "~1.0.5",
805 | "debug": "2.6.9",
806 | "depd": "2.0.0",
807 | "destroy": "1.2.0",
808 | "http-errors": "2.0.0",
809 | "iconv-lite": "0.4.24",
810 | "on-finished": "2.4.1",
811 | "qs": "6.13.0",
812 | "raw-body": "2.5.2",
813 | "type-is": "~1.6.18",
814 | "unpipe": "1.0.0"
815 | }
816 | },
817 | "bytes": {
818 | "version": "3.1.2",
819 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
820 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
821 | },
822 | "call-bind-apply-helpers": {
823 | "version": "1.0.1",
824 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz",
825 | "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==",
826 | "requires": {
827 | "es-errors": "^1.3.0",
828 | "function-bind": "^1.1.2"
829 | }
830 | },
831 | "call-bound": {
832 | "version": "1.0.3",
833 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz",
834 | "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==",
835 | "requires": {
836 | "call-bind-apply-helpers": "^1.0.1",
837 | "get-intrinsic": "^1.2.6"
838 | }
839 | },
840 | "clone": {
841 | "version": "2.1.2",
842 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
843 | "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
844 | },
845 | "content-disposition": {
846 | "version": "0.5.4",
847 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
848 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
849 | "requires": {
850 | "safe-buffer": "5.2.1"
851 | }
852 | },
853 | "content-type": {
854 | "version": "1.0.5",
855 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
856 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
857 | },
858 | "cookie": {
859 | "version": "0.7.1",
860 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
861 | "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w=="
862 | },
863 | "cookie-signature": {
864 | "version": "1.0.6",
865 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
866 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
867 | },
868 | "debug": {
869 | "version": "2.6.9",
870 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
871 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
872 | "requires": {
873 | "ms": "2.0.0"
874 | }
875 | },
876 | "depd": {
877 | "version": "2.0.0",
878 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
879 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
880 | },
881 | "destroy": {
882 | "version": "1.2.0",
883 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
884 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
885 | },
886 | "dunder-proto": {
887 | "version": "1.0.1",
888 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
889 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
890 | "requires": {
891 | "call-bind-apply-helpers": "^1.0.1",
892 | "es-errors": "^1.3.0",
893 | "gopd": "^1.2.0"
894 | }
895 | },
896 | "ee-first": {
897 | "version": "1.1.1",
898 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
899 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
900 | },
901 | "encodeurl": {
902 | "version": "2.0.0",
903 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
904 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="
905 | },
906 | "es-define-property": {
907 | "version": "1.0.1",
908 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
909 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="
910 | },
911 | "es-errors": {
912 | "version": "1.3.0",
913 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
914 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
915 | },
916 | "es-object-atoms": {
917 | "version": "1.1.1",
918 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
919 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
920 | "requires": {
921 | "es-errors": "^1.3.0"
922 | }
923 | },
924 | "escape-html": {
925 | "version": "1.0.3",
926 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
927 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
928 | },
929 | "etag": {
930 | "version": "1.8.1",
931 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
932 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
933 | },
934 | "express": {
935 | "version": "4.21.2",
936 | "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
937 | "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
938 | "requires": {
939 | "accepts": "~1.3.8",
940 | "array-flatten": "1.1.1",
941 | "body-parser": "1.20.3",
942 | "content-disposition": "0.5.4",
943 | "content-type": "~1.0.4",
944 | "cookie": "0.7.1",
945 | "cookie-signature": "1.0.6",
946 | "debug": "2.6.9",
947 | "depd": "2.0.0",
948 | "encodeurl": "~2.0.0",
949 | "escape-html": "~1.0.3",
950 | "etag": "~1.8.1",
951 | "finalhandler": "1.3.1",
952 | "fresh": "0.5.2",
953 | "http-errors": "2.0.0",
954 | "merge-descriptors": "1.0.3",
955 | "methods": "~1.1.2",
956 | "on-finished": "2.4.1",
957 | "parseurl": "~1.3.3",
958 | "path-to-regexp": "0.1.12",
959 | "proxy-addr": "~2.0.7",
960 | "qs": "6.13.0",
961 | "range-parser": "~1.2.1",
962 | "safe-buffer": "5.2.1",
963 | "send": "0.19.0",
964 | "serve-static": "1.16.2",
965 | "setprototypeof": "1.2.0",
966 | "statuses": "2.0.1",
967 | "type-is": "~1.6.18",
968 | "utils-merge": "1.0.1",
969 | "vary": "~1.1.2"
970 | }
971 | },
972 | "finalhandler": {
973 | "version": "1.3.1",
974 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
975 | "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
976 | "requires": {
977 | "debug": "2.6.9",
978 | "encodeurl": "~2.0.0",
979 | "escape-html": "~1.0.3",
980 | "on-finished": "2.4.1",
981 | "parseurl": "~1.3.3",
982 | "statuses": "2.0.1",
983 | "unpipe": "~1.0.0"
984 | }
985 | },
986 | "forwarded": {
987 | "version": "0.2.0",
988 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
989 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
990 | },
991 | "fresh": {
992 | "version": "0.5.2",
993 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
994 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
995 | },
996 | "function-bind": {
997 | "version": "1.1.2",
998 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
999 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
1000 | },
1001 | "get-intrinsic": {
1002 | "version": "1.2.7",
1003 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
1004 | "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
1005 | "requires": {
1006 | "call-bind-apply-helpers": "^1.0.1",
1007 | "es-define-property": "^1.0.1",
1008 | "es-errors": "^1.3.0",
1009 | "es-object-atoms": "^1.0.0",
1010 | "function-bind": "^1.1.2",
1011 | "get-proto": "^1.0.0",
1012 | "gopd": "^1.2.0",
1013 | "has-symbols": "^1.1.0",
1014 | "hasown": "^2.0.2",
1015 | "math-intrinsics": "^1.1.0"
1016 | }
1017 | },
1018 | "get-proto": {
1019 | "version": "1.0.1",
1020 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
1021 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
1022 | "requires": {
1023 | "dunder-proto": "^1.0.1",
1024 | "es-object-atoms": "^1.0.0"
1025 | }
1026 | },
1027 | "gopd": {
1028 | "version": "1.2.0",
1029 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
1030 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="
1031 | },
1032 | "has-symbols": {
1033 | "version": "1.1.0",
1034 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
1035 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="
1036 | },
1037 | "hasown": {
1038 | "version": "2.0.2",
1039 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
1040 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
1041 | "requires": {
1042 | "function-bind": "^1.1.2"
1043 | }
1044 | },
1045 | "http-errors": {
1046 | "version": "2.0.0",
1047 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
1048 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
1049 | "requires": {
1050 | "depd": "2.0.0",
1051 | "inherits": "2.0.4",
1052 | "setprototypeof": "1.2.0",
1053 | "statuses": "2.0.1",
1054 | "toidentifier": "1.0.1"
1055 | }
1056 | },
1057 | "iconv-lite": {
1058 | "version": "0.4.24",
1059 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1060 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1061 | "requires": {
1062 | "safer-buffer": ">= 2.1.2 < 3"
1063 | }
1064 | },
1065 | "inherits": {
1066 | "version": "2.0.4",
1067 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1068 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1069 | },
1070 | "ipaddr.js": {
1071 | "version": "1.9.1",
1072 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1073 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
1074 | },
1075 | "math-intrinsics": {
1076 | "version": "1.1.0",
1077 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
1078 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="
1079 | },
1080 | "media-typer": {
1081 | "version": "0.3.0",
1082 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1083 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
1084 | },
1085 | "merge-descriptors": {
1086 | "version": "1.0.3",
1087 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
1088 | "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="
1089 | },
1090 | "methods": {
1091 | "version": "1.1.2",
1092 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1093 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
1094 | },
1095 | "mime": {
1096 | "version": "1.6.0",
1097 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1098 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
1099 | },
1100 | "mime-db": {
1101 | "version": "1.52.0",
1102 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1103 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
1104 | },
1105 | "mime-types": {
1106 | "version": "2.1.35",
1107 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1108 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1109 | "requires": {
1110 | "mime-db": "1.52.0"
1111 | }
1112 | },
1113 | "ms": {
1114 | "version": "2.0.0",
1115 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1116 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1117 | },
1118 | "negotiator": {
1119 | "version": "0.6.3",
1120 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1121 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
1122 | },
1123 | "node-cache": {
1124 | "version": "5.1.2",
1125 | "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz",
1126 | "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==",
1127 | "requires": {
1128 | "clone": "2.x"
1129 | }
1130 | },
1131 | "object-inspect": {
1132 | "version": "1.13.3",
1133 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
1134 | "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA=="
1135 | },
1136 | "on-finished": {
1137 | "version": "2.4.1",
1138 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1139 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1140 | "requires": {
1141 | "ee-first": "1.1.1"
1142 | }
1143 | },
1144 | "parseurl": {
1145 | "version": "1.3.3",
1146 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1147 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
1148 | },
1149 | "path-to-regexp": {
1150 | "version": "0.1.12",
1151 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
1152 | "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
1153 | },
1154 | "proxy-addr": {
1155 | "version": "2.0.7",
1156 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1157 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1158 | "requires": {
1159 | "forwarded": "0.2.0",
1160 | "ipaddr.js": "1.9.1"
1161 | }
1162 | },
1163 | "qs": {
1164 | "version": "6.13.0",
1165 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
1166 | "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
1167 | "requires": {
1168 | "side-channel": "^1.0.6"
1169 | }
1170 | },
1171 | "range-parser": {
1172 | "version": "1.2.1",
1173 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1174 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1175 | },
1176 | "raw-body": {
1177 | "version": "2.5.2",
1178 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
1179 | "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
1180 | "requires": {
1181 | "bytes": "3.1.2",
1182 | "http-errors": "2.0.0",
1183 | "iconv-lite": "0.4.24",
1184 | "unpipe": "1.0.0"
1185 | }
1186 | },
1187 | "safe-buffer": {
1188 | "version": "5.2.1",
1189 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1190 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1191 | },
1192 | "safer-buffer": {
1193 | "version": "2.1.2",
1194 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1195 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1196 | },
1197 | "send": {
1198 | "version": "0.19.0",
1199 | "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
1200 | "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
1201 | "requires": {
1202 | "debug": "2.6.9",
1203 | "depd": "2.0.0",
1204 | "destroy": "1.2.0",
1205 | "encodeurl": "~1.0.2",
1206 | "escape-html": "~1.0.3",
1207 | "etag": "~1.8.1",
1208 | "fresh": "0.5.2",
1209 | "http-errors": "2.0.0",
1210 | "mime": "1.6.0",
1211 | "ms": "2.1.3",
1212 | "on-finished": "2.4.1",
1213 | "range-parser": "~1.2.1",
1214 | "statuses": "2.0.1"
1215 | },
1216 | "dependencies": {
1217 | "encodeurl": {
1218 | "version": "1.0.2",
1219 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
1220 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
1221 | },
1222 | "ms": {
1223 | "version": "2.1.3",
1224 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1225 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1226 | }
1227 | }
1228 | },
1229 | "serve-static": {
1230 | "version": "1.16.2",
1231 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
1232 | "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
1233 | "requires": {
1234 | "encodeurl": "~2.0.0",
1235 | "escape-html": "~1.0.3",
1236 | "parseurl": "~1.3.3",
1237 | "send": "0.19.0"
1238 | }
1239 | },
1240 | "setprototypeof": {
1241 | "version": "1.2.0",
1242 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1243 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1244 | },
1245 | "side-channel": {
1246 | "version": "1.1.0",
1247 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
1248 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
1249 | "requires": {
1250 | "es-errors": "^1.3.0",
1251 | "object-inspect": "^1.13.3",
1252 | "side-channel-list": "^1.0.0",
1253 | "side-channel-map": "^1.0.1",
1254 | "side-channel-weakmap": "^1.0.2"
1255 | }
1256 | },
1257 | "side-channel-list": {
1258 | "version": "1.0.0",
1259 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
1260 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
1261 | "requires": {
1262 | "es-errors": "^1.3.0",
1263 | "object-inspect": "^1.13.3"
1264 | }
1265 | },
1266 | "side-channel-map": {
1267 | "version": "1.0.1",
1268 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
1269 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
1270 | "requires": {
1271 | "call-bound": "^1.0.2",
1272 | "es-errors": "^1.3.0",
1273 | "get-intrinsic": "^1.2.5",
1274 | "object-inspect": "^1.13.3"
1275 | }
1276 | },
1277 | "side-channel-weakmap": {
1278 | "version": "1.0.2",
1279 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
1280 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
1281 | "requires": {
1282 | "call-bound": "^1.0.2",
1283 | "es-errors": "^1.3.0",
1284 | "get-intrinsic": "^1.2.5",
1285 | "object-inspect": "^1.13.3",
1286 | "side-channel-map": "^1.0.1"
1287 | }
1288 | },
1289 | "statuses": {
1290 | "version": "2.0.1",
1291 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1292 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
1293 | },
1294 | "toidentifier": {
1295 | "version": "1.0.1",
1296 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1297 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1298 | },
1299 | "type-is": {
1300 | "version": "1.6.18",
1301 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1302 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1303 | "requires": {
1304 | "media-typer": "0.3.0",
1305 | "mime-types": "~2.1.24"
1306 | }
1307 | },
1308 | "unpipe": {
1309 | "version": "1.0.0",
1310 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1311 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
1312 | },
1313 | "utils-merge": {
1314 | "version": "1.0.1",
1315 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1316 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
1317 | },
1318 | "vary": {
1319 | "version": "1.1.2",
1320 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1321 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
1322 | }
1323 | }
1324 | }
1325 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "samad",
3 | "version": "1.0.0",
4 | "description": "random image",
5 | "main": "index.js",
6 | "scripts": {
7 | "build": "mkdir -p public && cp -r static public/",
8 | "dev": "node api/index.js",
9 | "start": "node api/index.js"
10 | },
11 | "dependencies": {
12 | "express": "^4.18.2",
13 | "node-cache": "^5.1.2"
14 | }
15 | }
--------------------------------------------------------------------------------
/public/gifs/gif2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/gif2.gif
--------------------------------------------------------------------------------
/public/gifs/new.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/new.gif
--------------------------------------------------------------------------------
/public/gifs/one.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/one.gif
--------------------------------------------------------------------------------
/public/gifs/pic1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic1.gif
--------------------------------------------------------------------------------
/public/gifs/pic10.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic10.gif
--------------------------------------------------------------------------------
/public/gifs/pic11.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic11.gif
--------------------------------------------------------------------------------
/public/gifs/pic12.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic12.gif
--------------------------------------------------------------------------------
/public/gifs/pic13.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic13.gif
--------------------------------------------------------------------------------
/public/gifs/pic14.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic14.gif
--------------------------------------------------------------------------------
/public/gifs/pic2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic2.gif
--------------------------------------------------------------------------------
/public/gifs/pic3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic3.gif
--------------------------------------------------------------------------------
/public/gifs/pic4.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic4.gif
--------------------------------------------------------------------------------
/public/gifs/pic5.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic5.gif
--------------------------------------------------------------------------------
/public/gifs/pic6.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic6.gif
--------------------------------------------------------------------------------
/public/gifs/pic7.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic7.gif
--------------------------------------------------------------------------------
/public/gifs/pic8.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic8.gif
--------------------------------------------------------------------------------
/public/gifs/pic9.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/pic9.gif
--------------------------------------------------------------------------------
/public/gifs/program 1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/program 1.gif
--------------------------------------------------------------------------------
/public/gifs/program 2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/program 2.gif
--------------------------------------------------------------------------------
/public/gifs/program 5.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/program 5.gif
--------------------------------------------------------------------------------
/public/gifs/programming.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/programming.gif
--------------------------------------------------------------------------------
/public/gifs/two.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/two.gif
--------------------------------------------------------------------------------
/public/gifs/working.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/public/gifs/working.gif
--------------------------------------------------------------------------------
/static/gifs/gif2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/gif2.gif
--------------------------------------------------------------------------------
/static/gifs/new.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/new.gif
--------------------------------------------------------------------------------
/static/gifs/one.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/one.gif
--------------------------------------------------------------------------------
/static/gifs/pic1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic1.gif
--------------------------------------------------------------------------------
/static/gifs/pic10.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic10.gif
--------------------------------------------------------------------------------
/static/gifs/pic11.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic11.gif
--------------------------------------------------------------------------------
/static/gifs/pic12.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic12.gif
--------------------------------------------------------------------------------
/static/gifs/pic13.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic13.gif
--------------------------------------------------------------------------------
/static/gifs/pic14.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic14.gif
--------------------------------------------------------------------------------
/static/gifs/pic2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic2.gif
--------------------------------------------------------------------------------
/static/gifs/pic3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic3.gif
--------------------------------------------------------------------------------
/static/gifs/pic4.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic4.gif
--------------------------------------------------------------------------------
/static/gifs/pic5.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic5.gif
--------------------------------------------------------------------------------
/static/gifs/pic6.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic6.gif
--------------------------------------------------------------------------------
/static/gifs/pic7.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic7.gif
--------------------------------------------------------------------------------
/static/gifs/pic8.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic8.gif
--------------------------------------------------------------------------------
/static/gifs/pic9.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/pic9.gif
--------------------------------------------------------------------------------
/static/gifs/program 1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/program 1.gif
--------------------------------------------------------------------------------
/static/gifs/program 2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/program 2.gif
--------------------------------------------------------------------------------
/static/gifs/program 5.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/program 5.gif
--------------------------------------------------------------------------------
/static/gifs/programming.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/programming.gif
--------------------------------------------------------------------------------
/static/gifs/two.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/two.gif
--------------------------------------------------------------------------------
/static/gifs/working.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/samadpls/Programing-Gifs/94bb86577e816b8101fcf58ef7aff4aa31c9b4d2/static/gifs/working.gif
--------------------------------------------------------------------------------
/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 2,
3 | "builds": [
4 | {
5 | "src": "api/index.js",
6 | "use": "@vercel/node"
7 | },
8 | {
9 | "src": "static/**",
10 | "use": "@vercel/static"
11 | }
12 | ],
13 | "routes": [
14 | {
15 | "src": "/(.*)",
16 | "dest": "/api/index.js"
17 | }
18 | ]
19 | }
--------------------------------------------------------------------------------