commit 208e773d655e4790745b6805dee1e89805b0c438 Author: Firepup Sixfifty Date: Sun Oct 1 18:39:12 2023 -0500 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..41af388 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +__pycache__/** +.upm +venv/** +**/__pycache__/** +.pythonlibs/** +.config/** +replit*txt +node_modules/** diff --git a/.replit b/.replit new file mode 100644 index 0000000..23de556 --- /dev/null +++ b/.replit @@ -0,0 +1,81 @@ +entrypoint = "index.js" + +hidden = [".config", "package-lock.json"] + +#[interpreter] +#command = ["prybar-nodejs", "-q", "--ps1", "\u0001\u001b[33m\u0002\u0001\u001b[00m\u0002 ", "-i"] +run = ["npm", "run", "start"] + +[[hints]] +regex = "Error \\[ERR_REQUIRE_ESM\\]" +message = "We see that you are using require(...) inside your code. We currently do not support this syntax. Please use 'import' instead when using external modules. (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import)" + +[nix] +channel = "stable-22_11" + +[env] +XDG_CONFIG_HOME = "/home/runner/.config" +PATH = "/home/runner/$REPL_SLUG/.config/npm/node_global/bin:/home/runner/$REPL_SLUG/node_modules/.bin" +npm_config_prefix = "/home/runner/$REPL_SLUG/.config/npm/node_global" + +[gitHubImport] +requiredFiles = [".replit", "replit.nix", ".config", "package.json", "package-lock.json"] + +[packager] +language = "nodejs" + + [packager.features] + packageSearch = true + guessImports = false + enabledForHosting = false + +[unitTest] +language = "nodejs" + +[debugger] +support = true + + [debugger.interactive] + transport = "localhost:0" + startCommand = [ "dap-node" ] + + [debugger.interactive.initializeMessage] + command = "initialize" + type = "request" + + [debugger.interactive.initializeMessage.arguments] + clientID = "replit" + clientName = "replit.com" + columnsStartAt1 = true + linesStartAt1 = true + locale = "en-us" + pathFormat = "path" + supportsInvalidatedEvent = true + supportsProgressReporting = true + supportsRunInTerminalRequest = true + supportsVariablePaging = true + supportsVariableType = true + + [debugger.interactive.launchMessage] + command = "launch" + type = "request" + + [debugger.interactive.launchMessage.arguments] + args = [] + console = "externalTerminal" + cwd = "." + environment = [] + pauseForSourceMap = false + program = "./index.js" + request = "launch" + sourceMaps = true + stopOnEntry = false + type = "pwa-node" + +[languages] + +[languages.javascript] +pattern = "**/{*.js,*.jsx,*.ts,*.tsx}" + +[languages.javascript.languageServer] +start = "typescript-language-server --stdio" \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..c16d425 --- /dev/null +++ b/index.js @@ -0,0 +1,513 @@ +const express = require("express"), http = require('http'), UAParser = require('ua-parser-js'), fs = require('fs'), path = require("path"), app = express(), directory = __dirname, htmlfileloc = directory + "/public/pages", rawfileloc = directory + "/public/raw", cssfileloc = directory + "/public/scripts", jsfileloc = directory + "/public/styles", iconfileloc = directory + "/public/icons", errorfileloc = directory + "/public/errors", dynamfileloc = directory + "/public/dynamic", err404loc = errorfileloc + "/404.ejs", err422loc = errorfileloc + "/422.ejs", err403loc = errorfileloc + "/403.ejs", err500loc = errorfileloc + "/500.ejs", conloc = htmlfileloc + "/construction.html", port = 8080, validImageTypes = ['.jpg', '.jpeg', '.png', '.gif'], imgsrv = "https://image-hosting.firepup650.repl.co", axios = require('axios'), und = undefined, users = ["youngchief","coderelijah","bigminiboss","pikachub2005","jayayseaohbee14","9pfs"], aliases = {"smallmaxworker":"bigminiboss","9pfs1":"9pfs"}; +var tracks = und, datas = und; +app.use(require("expressjs-remembering-doomsdaybear")) +app.set('trust proxy', 1) +const cookieCheck = (req, res, next) => { + const options = { + maxAge: 1000 * 60 * 60 * 24 * 365 * 20, + httpOnly: true, + sameSite: 'strict', + }; + res.cookie('cookiesEnabled', 'true', options); + next(); +}; +const spotifyRequest = ((rawData, name, time, deezerData) => { + axios.get('https://api.youngchief.xyz/spotify/now').then(res => { + let data = res.data; + // console.log(data); + //data = JSON.parse(data.replace(/'/g, "\"")); + axios.get(`https://api.deezer.com/2.0/track/isrc:${data.isrc}`).then(resp => { + let dzData = resp.data; + let song = dzData.title; + let duration = dzData.duration; + //console.log(dzData); + rawData(data,song,duration,dzData); + }).catch(err => { + console.log('YCSPR Error (ISRC API):', err.message); + rawData(data,"Unknown","Unknown",{}); + }); + }).catch(err => { + console.log('YCSPR Error (YC\'s end):', err.message); + rawData(und,err.message,und,und); + }); +}); +const spotifyQueueRequest = ((rawData, isrcs, names, dzDatas) => { + axios.get('https://api.youngchief.xyz/spotify/queue').then(res => { + let data = res.data; + // console.log(data); + //data = JSON.parse(data.replace(/'/g, "\"")); + let ids = []; + let tracks = []; + let datas = []; + for (track in data.queue) { + ids.push(data.queue[track]); + axios.get(`https://api.deezer.com/2.0/track/isrc:${data.queue[track]}`).then(resp => { + let dzData = resp.data; + datas.push(dzData); + let song = dzData.title; + tracks.push(song); + }).catch(err => { + console.log('YCSPR Error (ISRC API):', err.message); + }); + } + console.log("DEBUG: TRACKS =",tracks); + console.log("DEBUG: IDS =",ids); + rawData(data,ids,tracks,datas); + }).catch(err => { + console.log('YCSPR Error (YC\'s end):', err.message, err); + rawData(und,err.message,und,und); + }); +}); +const spotifyHistoryRequest = ((rawData, isrcs, names, dzDatas) => { + axios.get('https://api.youngchief.xyz/spotify/history').then(res => { + let data = res.data; + // console.log(data); + //data = JSON.parse(data.replace(/'/g, "\"")); + let ids = []; + tracks = []; + datas = []; + for (track in data.history) { + ids.push(data.history[track]); + axios.get(`https://api.deezer.com/2.0/track/isrc:${data.history[track]}`).then(resp => { + let dzData = resp.data; + datas.push(dzData); + let song = dzData.title; + tracks.push(song); + }).catch(err => { + console.log('YCSPR Error (ISRC API):', err.message); + }); + } + console.log("DEBUG: TRACKS =",tracks); + console.log("DEBUG: IDS =",ids); + rawData(data,ids,tracks,datas); + }).catch(err => { + console.log('YCSPR Error (YC\'s e nd):', err.message, err); + rawData(und,err.message,und,und); + }); +}); +let startTime = Date.now(); +let totalPages = 0; +const countPages = (dir, callback) => { + let count = 0; + fs.readdir(dir, (err, files) => { + if (err) return callback(err); + let pending = files.length; + if (!pending) return callback(null, count); + files.forEach(file => { + let filePath = path.join(dir, file); + fs.stat(filePath, (err, stats) => { + if (err) return callback(err); + if (stats.isDirectory()) { + countPages(filePath, (err, res) => { + if (err) return callback(err); + count += res; + if (!--pending) callback(null, count); + }); + } else if (stats.isFile() && ['.html', '.ejs'].includes(path.extname(file))) { + count++; + if (!--pending) callback(null, count); + } else { + if (!--pending) callback(null, count); + } + }); + }); + }); +}; +countPages('public', (err, count) => { + if (err) { + console.error(err); + return; + } + console.log(count + " pages") + totalPages = count; +}); +function isUser(user) { + let valid = false; + for (id in users) { + if (user === users[id]) { + valid = true; + } + } + return valid; +}; +function isAlias(user) { + let realUser = ""; + for (var key in aliases) { + if (key === user) { + realUser = aliases[key]; + } + } + return realUser; +}; +function getContributors(dezData) { + let contribs = dezData.contributors; + let retValue = ""; + for (value in contribs) { + if (retValue) { + retValue = `${retValue}, ${contribs[value].name}` + } else { + retValue = contribs[value].name + } + } + console.log(retValue); + return retValue; +}; +// Next function was provided by Youngchief +function secondsToMinutes(seconds) { + let minutes = Math.floor(seconds / 60); // get the number of whole minutes + let leftoverSeconds = seconds % 60; // get the remaining seconds + if (leftoverSeconds >= 10) { + return minutes + ":" + leftoverSeconds; + } else { + return minutes + ":" + leftoverSeconds + "0"; + } +}; +app.use(cookieCheck); +app.use(express.static(cssfileloc)); +app.use(express.static(jsfileloc)); +app.use(express.static(iconfileloc)); +app.get("/images/:filename", function(req, res, next) { + let path = '/' + req.params.filename; + let fulllink = imgsrv + path; + res.redirect(fulllink) +}); +app.get("/images/:directory/:filename", function(req, res, next) { + let path = '/' + req.params.directory + '/' + req.params.filename; + let fulllink = imgsrv + path; + res.redirect(fulllink) +}); +app.set("view engine", "ejs"); +app.get("/cause-error-500", function(req, res, next) { + throw new Error("Intentional 500 Internal Server Error"); +}); +app.get("/cause-error-404", function(req, res) { + res.status(404).render(err404loc, { message: "Intentional 404 Not Found" }); +}); +app.get("/cause-error-403", function(req, res) { + res.status(403).render(err403loc, { message: "Intentional 403 Forbidden" }); +}); +app.get('/', function(req, res) { + res.sendFile(path.join(htmlfileloc, `index.html`)); +}); +app.get(/\.html$/, function(req, res) { + if (!req.url.endsWith('.js') && !req.url.endsWith('.css') && req.url.endsWith('.html')) { + const strippedUrl = req.url.slice(0, -5); + return res.redirect(strippedUrl); + } + next(); +}); +app.get("/about-browser", function(req, res) { + return res.redirect("/about-you"); +}); +app.get("/youngchief-spotify", function(req, res) { + return res.redirect("/youngchief/spotify"); +}); +app.get('/about-you', function(req, res) { + let uAH = req.headers['user-agent']; + let browserName = 'Unknown'; + let browserVersion = 'Unknown'; + let cookiesEnabled = req.headers.cookie ? true : false; + let platformName = 'Unknown'; + let platformVersion = 'Unknown'; + let deviceModel = 'Unknown'; + let deviceType = 'Unknown'; + let deviceVendor = 'Unknown'; + let agent = new UAParser(uAH); + platformName = agent.getOS().name; + platformVersion = agent.getOS().version; + deviceModel = agent.getDevice().model; + deviceType = agent.getDevice().type; + deviceVendor = agent.getDevice().vendor; + browserName = agent.getBrowser().name; + browserVersion = agent.getBrowser().version; + let datarray = [platformName, platformVersion, deviceModel, deviceVendor, browserName, browserVersion]; + let itemid = 0; + datarray.forEach((item) => { + if (item == undefined) { + datarray[itemid] = "Unknown"; + } + itemid++; + }); + platformName = datarray[0]; + platformVersion = datarray[1]; + deviceModel = datarray[2]; + deviceVendor = datarray[3]; + browserName = datarray[4]; + browserVersion = datarray[5]; + if (deviceType == undefined) { + deviceType = 'Unknown, might be desktop.'; + } + res.render(path.join(dynamfileloc, 'about-you'), { + userAgent: uAH, + browserName: browserName, + browserVersion: browserVersion, + cookiesEnabled: cookiesEnabled, + platformName: platformName, + platformVersion: platformVersion, + deviceModel: deviceModel, + deviceType: deviceType, + deviceVendor: deviceVendor + }); +}); +app.get("/server-info", (req, res) => { + let uptime = (Date.now() - startTime) / 1000; + let author = "Firepup650"; + res.render(dynamfileloc + '/server-info.ejs', { + author: author, + uptime: uptime, + images: totalPages + }); +}); +// Youngchief +app.get("/youngchief/spotify", (req, res) => { + spotifyRequest((data, song, length, dzData) => { + let playing = "Not set by route"; + let progress = "Not set by route"; + let isrc = "Not set by route"; + let name = "Not set by route"; + let raw = "Not set by route"; + let dur = "Not set by route"; + let contribs = "Not set by route"; + let cal = "Not set by route"; + let end = "Not set by route"; + let error = und; + if (data && data.error) { + end = "Youngchief's end"; + raw = JSON.stringify(data).replace(/,/g,", "); + cal = imgsrv+"/error.png"; + error = data.error; + } else if (data && data.playing) { + playing = data.playing; + progress = Math.round(data.progress/1000); + isrc = data.isrc; + name = song; + dur = secondsToMinutes(length); + raw = JSON.stringify(data).replace(/,/g,", "); + contribs = getContributors(dzData); + cal = dzData.album.cover_xl; + } else { + end = "My end, probably"; + raw = "Unknown (Server Error)"; + cal = imgsrv+"/error.png"; + error = song; + } + res.render(dynamfileloc + '/spotify.ejs', { + playing: playing, + progress: secondsToMinutes(progress), + isrc: isrc, + name: name, + len: dur, + raw: raw, + cont: contribs, + cal: cal, + end: end, + err: error + }); + }); +}); +app.get("/youngchief/spotify/queue", (req, res) => { + spotifyQueueRequest((data, ids, tracks, dzDatas) => { + let isrcs = "Not set by route"; + let names = "Not set by route"; + let raw = "Not set by route"; + let end = "Not set by route"; + let error = und; + if (data && data.error) { + end = "Youngchief's end"; + raw = JSON.stringify(data).replace(/,/g,", "); + error = data.error; + } else if (data && ids) { + isrcs = JSON.stringify(ids).replace(/,/g,", ").replace(/\[/g,"").replace(/\]/g,"").replace(/\"/g,""); + names = JSON.stringify(tracks).replace(/,/g,", ").replace(/\[/g,"").replace(/\]/g,"").replace(/\"/g,""); + raw = JSON.stringify(data).replace(/,/g,", "); + } else { + end = "My end, probably"; + raw = "Unknown (Server Error)"; + error = "Internal Error"; + } + res.render(dynamfileloc + '/spotify-queue.ejs', { + isrc: isrcs, + name: names, + raw: raw, + end: end, + err: error + }); + }); +}); +app.get("/youngchief/spotify/history", (req, res) => { + spotifyHistoryRequest((data, ids, tracks, dzDatas) => { + let isrcs = "Not set by route"; + let names = "Not set by route"; + let raw = "Not set by route"; + let end = "Not set by route"; + let error = und; + if (data && data.error) { + end = "Youngchief's end"; + raw = JSON.stringify(data).replace(/,/g,", "); + error = data.error; + } else if (data && ids) { + isrcs = JSON.stringify(ids).replace(/,/g,", ").replace(/\[/g,"").replace(/\]/g,"").replace(/\"/g,""); + names = JSON.stringify(tracks).replace(/,/g,", ").replace(/\[/g,"").replace(/\]/g,"").replace(/\"/g,""); + raw = JSON.stringify(data).replace(/,/g,", "); + } else { + end = "My end, probably"; + raw = "Unknown (Server Error)"; + error = "Internal Error"; + } + res.render(dynamfileloc + '/spotify-history.ejs', { + isrc: isrcs, + name: names, + raw: raw, + end: end, + err: error + }); + }); +}); +// EOY +app.get('/users/:name', function(req, res) { + return res.redirect(`/user/${req.params.name}`); +}); +app.get('/rating/:name', function(req, res) { + return res.redirect(`/ratings/${req.params.name}`); +}); +app.get('/user/:name', function(req, res) { + let user = req.params.name + if (isUser(user)) { + const htmlFilePath = path.join(htmlfileloc, `users/${user}.html`); + res.sendFile(htmlFilePath); + } else { + let test = isAlias(user); + if (test) { + return res.redirect(`/user/${test}`) + } else { + res.status(404).render(err404loc, {message: `User "${user}" does not have a user page. Contact @Firepup650 if you believe you have seen this message in error.`}); + } + } +}); +app.get('/ratings/:name', function(req, res) { + let user = req.params.name + if (isUser(user)) { + const htmlFilePath = path.join(htmlfileloc, `ratings/${user}.html`); + res.sendFile(htmlFilePath); + } else { + let test = isAlias(user); + if (test) { + return res.redirect(`/ratings/${test}`) + } else { + res.status(404).render(err404loc, {message: `User "${user}" does not have a ratings page. Contact @Firepup650 if you believe you have seen this message in error.`}); + } + } +}); +app.get('/:file', function(req, res) { + const fileName = req.params.file; + const htmlFilePath = path.join(htmlfileloc, `${fileName}.html`); + if (fs.existsSync(htmlFilePath) && fileName != "construction") { + if (fileName.startsWith('forbid')) { + res.status(403).render(err403loc); + } else { + res.sendFile(htmlFilePath); + } + } else { + if (isUser(fileName)) { + return res.redirect(`/user/${fileName}`) + } else if (!(isAlias(fileName))) { + res.status(404).render(err404loc); + } else { + return res.redirect(`/user/${isAlias(fileName)}`); + } + } +}); +app.get('/raw/:file', function(req, res) { + const fileName = req.params.file; + const filePath = path.join(rawfileloc, `${fileName}`); + if (fs.existsSync(filePath)) { + if (fileName.startsWith('forbid')) { + res.status(403).render(err403loc); + } else { + res.sendFile(filePath); + /* + fs.readFile(filePath, 'utf8', (err, data) => { + if (err) { + res.render(dynamfileloc+"/raw.ejs", {fileName: "Error", fileData: err}); + return; + } + res.render(dynamfileloc+"/raw.ejs", {fileName: fileName, fileData: data.replace(/\n/g, "
").replace(/=/g, " = ")}); + }) + //*/ + } + } else { + res.status(404).render(err404loc, {message: "The requested file was not found on the server."}); + } +}); +app.get('/rawFile/:file', function(req, res) { + const fileName = req.params.file; + const filePath = path.join(rawfileloc, `${fileName}`); + if (fs.existsSync(filePath)) { + if (fileName.startsWith('forbid')) { + res.status(403).render(err403loc); + } else { + //res.sendFile(filePath); + ///* + fs.readFile(filePath, 'utf8', (err, data) => { + if (err) { + res.render(dynamfileloc+"/raw.ejs", {fileName: "Error", fileData: err, raw: false}); + return; + } + res.render(dynamfileloc+"/raw.ejs", {fileName: fileName, fileData: data.replace(/\n/g, "
"), raw: true}); + }) + //*/ + } + } else { + res.status(404).render(err404loc, {message: "The requested file was not found on the server."}); + } +}); +app.get('/file/:file', function(req, res) { + const fileName = req.params.file; + const filePath = path.join(rawfileloc, `${fileName}`); + if (fs.existsSync(filePath)) { + if (fileName.startsWith('forbid')) { + res.status(403).render(err403loc); + } else { + //res.sendFile(filePath); + ///* + fs.readFile(filePath, 'utf8', (err, data) => { + if (err) { + res.render(dynamfileloc+"/raw.ejs", {fileName: "Error", fileData: err, raw: false}); + return; + } + res.render(dynamfileloc+"/raw.ejs", {fileName: fileName, fileData: data.replace(/\n/g, "
").replace(/=/g, " = "), raw: false}); + }) + //*/ + } + } else { + res.status(404).render(err404loc, {message: "The requested file was not found on the server."}); + } +}); +app.use(function(req, res, next) { + res.status(404).render(err404loc); +}); +app.use(function(error, req, res, next) { + res.status(500).render(err500loc, { error }); +}); +app.listen(port, () => { + console.log(`Server started on port ${port}`); +}); +app.on("error", error => { + if (error.syscall !== "listen") { + throw error; + } + + const bind = typeof port === "string" ? "Pipe " + port : "Port " + port; + + switch (error.code) { + case "EACCES": + console.error(bind + " requires elevated privileges"); + process.exit(1); + break; + case "EADDRINUSE": + console.error(bind + " is already in use"); + break; + default: + throw error; + } +}); \ No newline at end of file diff --git a/nodemon.json b/nodemon.json new file mode 100644 index 0000000..2eb80b7 --- /dev/null +++ b/nodemon.json @@ -0,0 +1,5 @@ +{ + "ignore": ["public/**","views/**"], + "watch": ["index.js","nodemon.json","restart"], + "ext": "js,mjs,json" +} \ No newline at end of file diff --git a/old-index.js b/old-index.js new file mode 100644 index 0000000..cd0f99e --- /dev/null +++ b/old-index.js @@ -0,0 +1,22 @@ +const express = require("express"); +const app = express(); +const fileloc = __dirname+"/public" +const err404loc = __dirname+"/404.html" +const err500loc = __dirname+"/500.html" +const files = express.static(fileloc) + +app.use(files); +app.get("/cause-error-500", function(req, res, next) { + throw new Error("Intentional 500 error"); +}); +app.get("/cause-error-404", function(req, res) { + res.status(404).send("Intentional 404 error"); +}); +app.use(function(req, res, next) { + res.status(404).sendFile(err404loc); +}); +app.use(function(error, req, res, next) { + res.sendStatus(500).sendFile(err500loc); +}); + +app.listen(8080); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..faf5c85 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2035 @@ +{ + "name": "nodejs", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "nodejs", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "axios": "^1.3.5", + "ejs": "^3.1.9", + "express": "^4.18.2", + "ua-parser-js": "^1.0.33" + }, + "devDependencies": { + "nodemon": "^2.0.20" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz", + "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + } + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "requires": { + "jake": "^10.8.5" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "ua-parser-js": { + "version": "1.0.36", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz", + "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==" + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c8c8d3b --- /dev/null +++ b/package.json @@ -0,0 +1,23 @@ +{ + "name": "nodejs", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "nodemon index.js", + "dev": "nodemon index.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^1.3.5", + "ejs": "^3.1.9", + "express": "^4.18.2", + "ua-parser-js": "^1.0.33" + }, + "devDependencies": { + "nodemon": "^2.0.20" + } +} diff --git a/public/dynamic/about-you.ejs b/public/dynamic/about-you.ejs new file mode 100644 index 0000000..b34c915 --- /dev/null +++ b/public/dynamic/about-you.ejs @@ -0,0 +1,25 @@ + + + + + + FP650 - About You + + + + +

About Your Browser

+ + +

User Agent: <%= userAgent %>

+

Browser Name: <%= browserName %>

+

Browser Version: <%= browserVersion %>

+

Platform Name: <%= platformName %>

+

Platform Version: <%= platformVersion %>

+

Device Model: <%= deviceModel %>

+

Device Type: <%= deviceType %>

+

Device Vendor: <%= deviceVendor %>

+

Cookies Enabled: <%= cookiesEnabled %>

+ + + \ No newline at end of file diff --git a/public/dynamic/raw.ejs b/public/dynamic/raw.ejs new file mode 100644 index 0000000..1512da6 --- /dev/null +++ b/public/dynamic/raw.ejs @@ -0,0 +1,20 @@ + + + + + + FP650 - Raw - <%= fileName %> + + + + + + + <% if (!raw) { %> +

<%- fileData %>

+ + <% } else { %> +

<%- fileData %>

+ <% } %> + + \ No newline at end of file diff --git a/public/dynamic/server-info.ejs b/public/dynamic/server-info.ejs new file mode 100644 index 0000000..e3a96fb --- /dev/null +++ b/public/dynamic/server-info.ejs @@ -0,0 +1,18 @@ + + + + FP650 - Server Info + + + + + + + +

Server Info:

+

Author: <%= author %>

+

Uptime: <%= uptime %> seconds

+

Total Pages: <%= images %>

+ + + \ No newline at end of file diff --git a/public/dynamic/spotify-history.ejs b/public/dynamic/spotify-history.ejs new file mode 100644 index 0000000..5825231 --- /dev/null +++ b/public/dynamic/spotify-history.ejs @@ -0,0 +1,25 @@ + + + + FP650 - YCS - History + + + + + + + +

Youngchief's Spotify History:

+ <% if (typeof err == 'undefined') { %> +

Status: OK

+

History (isrcs): <%= isrc %>

+

History (Song Names): <%= name %>

+ <% } else { %> +

Status: ERROR

+

Error Origin: <%= end %>

+

Error: <%= err %>

+ <% } %> +

Raw data: <%= raw %>

+ + + \ No newline at end of file diff --git a/public/dynamic/spotify-queue.ejs b/public/dynamic/spotify-queue.ejs new file mode 100644 index 0000000..9c5c63e --- /dev/null +++ b/public/dynamic/spotify-queue.ejs @@ -0,0 +1,27 @@ + + + + FP650 - YCS - Queue + + + + + + + +

Youngchief's Spotify Queue:

+ <% if (typeof err == 'undefined') { %> +

Status: OK

+

Queue (isrcs): <%= isrc %>

+

Queue (Song Names): <%= name %>

+ <% } else { %> +

Status: ERROR

+

Error Origin: <%= end %>

+

Error: <%= err %>

+ <% } %> +

Raw data: <%= raw %>

+ + + + + \ No newline at end of file diff --git a/public/dynamic/spotify.ejs b/public/dynamic/spotify.ejs new file mode 100644 index 0000000..3f4fd3b --- /dev/null +++ b/public/dynamic/spotify.ejs @@ -0,0 +1,32 @@ + + + + FP650 - Youngchief's Spotify + + + + + + + +

Youngchief's Spotify:

+ <% if (typeof err == 'undefined') { %> +

Status: OK

+

Currently listening: <%= playing %>

+

Progress in track (in miliseconds): <%= progress %>/<%= len %>

+

Unique song ID (isrc): <%= isrc %>

+

Song Name: <%= name %>

+

Artist(s): <%= cont %>

+ <% } else { %> +

Status: ERROR

+

Error Origin: <%= end %>

+

Error: <%= err %>

+ <% } %> +

Raw data: <%= raw %>

+

Cover Art:

+ + + + + + \ No newline at end of file diff --git a/public/errors/403.ejs b/public/errors/403.ejs new file mode 100644 index 0000000..3644fb1 --- /dev/null +++ b/public/errors/403.ejs @@ -0,0 +1,24 @@ + + + + + + FP650 - 403 Error + + + + + + +

403 Forbidden

+ <% if (typeof message !== 'undefined') { %> +

Error message:

+

<%= message %>

+ <% } else { %> +

The requested page is forbidden to access on the server.

+ <% } %> + + + + + \ No newline at end of file diff --git a/public/errors/404.ejs b/public/errors/404.ejs new file mode 100644 index 0000000..4d6b4a7 --- /dev/null +++ b/public/errors/404.ejs @@ -0,0 +1,24 @@ + + + + + + FP650 - 404 Error + + + + + + +

404 Not Found

+ <% if (typeof message !== 'undefined') { %> +

Error message:

+

<%= message %>

+ <% } else { %> +

The requested page was not found on the server.

+ <% } %> + + + + + \ No newline at end of file diff --git a/public/errors/422.ejs b/public/errors/422.ejs new file mode 100644 index 0000000..0066201 --- /dev/null +++ b/public/errors/422.ejs @@ -0,0 +1,22 @@ + + + + + + FP650 - 422 Error + + + + +

422 Unprocessable Entity

+ <% if (typeof message !== 'undefined') { %> +

Error message:

+

<%= message %>

+ <% } else { %> +

The requested url did not match a valid image request format.

+ <% } %> + + + + + \ No newline at end of file diff --git a/public/errors/500.ejs b/public/errors/500.ejs new file mode 100644 index 0000000..8856225 --- /dev/null +++ b/public/errors/500.ejs @@ -0,0 +1,25 @@ + + + + + + FP650 - 500 Error + + + + + + +

500 Internal Server Error

+

An error has occurred on the server.

+ <% if (error) { %> +

Error message:

+
<%= error.message %>
+

Stack trace:

+
<%= error.stack %>
+ <% } %> + + + + + \ No newline at end of file diff --git a/public/icons/favicon.ico b/public/icons/favicon.ico new file mode 100644 index 0000000..11d6fdf Binary files /dev/null and b/public/icons/favicon.ico differ diff --git a/public/images/not-here.txt b/public/images/not-here.txt new file mode 100644 index 0000000..d830252 --- /dev/null +++ b/public/images/not-here.txt @@ -0,0 +1 @@ +Images aren't hosted on this server. :P \ No newline at end of file diff --git a/public/pages/cheese.html b/public/pages/cheese.html new file mode 100644 index 0000000..17ac5cf --- /dev/null +++ b/public/pages/cheese.html @@ -0,0 +1,58 @@ + + + + + + FP650 - Cheese + + + + +
+ +
+ + + +

+ Bouncing cheese + + + + + + \ No newline at end of file diff --git a/public/pages/construction.html b/public/pages/construction.html new file mode 100644 index 0000000..97c5961 --- /dev/null +++ b/public/pages/construction.html @@ -0,0 +1,18 @@ + + + + + + FP650 - Unfinished page + + + + + + +

Page under construction.

+ + + + + \ No newline at end of file diff --git a/public/pages/dvd-screensaver.html b/public/pages/dvd-screensaver.html new file mode 100644 index 0000000..3e2be45 --- /dev/null +++ b/public/pages/dvd-screensaver.html @@ -0,0 +1,93 @@ + + + + + + FP650 - DVD Screensaver + + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/pages/forbidden.html b/public/pages/forbidden.html new file mode 100644 index 0000000..da781aa --- /dev/null +++ b/public/pages/forbidden.html @@ -0,0 +1,19 @@ + + + + + + FP650 - You shouldn't be here. + + + + + + + +

You shouldn't be here.

+ + + + + \ No newline at end of file diff --git a/public/pages/hidden.html b/public/pages/hidden.html new file mode 100644 index 0000000..8292a61 --- /dev/null +++ b/public/pages/hidden.html @@ -0,0 +1,57 @@ + + + + + + FP650 - Hidden :O + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + There should be stuff here in a second. If there's not, then reload. (Or, you know, you have javascript turned off.) + Note: if you can't see anything after the page loads, it might be that you have "auto-dark" extension on, or you're using some builtin browser feature that darkens webpages, and decided to invert the images. If that is the case, sorry! Can't fix that and have the page not be blinding. -\(-_-)/- + + \ No newline at end of file diff --git a/public/pages/index.html b/public/pages/index.html new file mode 100644 index 0000000..78af67a --- /dev/null +++ b/public/pages/index.html @@ -0,0 +1,36 @@ + + + + + + Firepup650 + + + + + + + + +
Welcome to my site!
+ Go to the Maintenance page +
+ Go to the DVD Screensaver page +
+ Go to the Cheese page +
+ Go to the Password Generator page +
+ Go to the Users page +
+ Go to the About Browser page +
+ Go to the Server Info page +
+ Go to the Vists page +
+ Go to the Usage page +
+ + + \ No newline at end of file diff --git a/public/pages/maintenance.html b/public/pages/maintenance.html new file mode 100644 index 0000000..66c3873 --- /dev/null +++ b/public/pages/maintenance.html @@ -0,0 +1,17 @@ + + + + + + FP650 - Maintenance + + + + + + + +

Website under maintenance.

+ + + \ No newline at end of file diff --git a/public/pages/password-generator.html b/public/pages/password-generator.html new file mode 100644 index 0000000..b697f24 --- /dev/null +++ b/public/pages/password-generator.html @@ -0,0 +1,24 @@ + + + + + + FP650 - Password Generator + + + + + + + +

Click the button to generate a random password:

+ + + + + +
+ + + + \ No newline at end of file diff --git a/public/pages/pfps.html b/public/pages/pfps.html new file mode 100644 index 0000000..f16a359 --- /dev/null +++ b/public/pages/pfps.html @@ -0,0 +1,37 @@ + + + + + + Firepup650 + + + + +
+ + + +
+ + + + + +
My profile pictures
+
+ "Offical" PFP
+
+ "Forum" PFP
+
+ "Chat" PFP +
+ + + \ No newline at end of file diff --git a/public/pages/ratings.html b/public/pages/ratings.html new file mode 100644 index 0000000..f14d1dd --- /dev/null +++ b/public/pages/ratings.html @@ -0,0 +1,32 @@ + + + + + + FP650 - Ratings + + + + + + + + +
Current user ratings
+ Youngchief +
+ CoderElijah +
+ bigminiboss +
+ PikachuB2005 +
+ JayAySeaOhBee14 +
+ 9pfs +
+

Talk to @Firepup650 about getting a rating page!

+
+ + + diff --git a/public/pages/ratings/9pfs.html b/public/pages/ratings/9pfs.html new file mode 100644 index 0000000..b86b61a --- /dev/null +++ b/public/pages/ratings/9pfs.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - 9pfs + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@9pfs
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/bigminiboss.html b/public/pages/ratings/bigminiboss.html new file mode 100644 index 0000000..9245b12 --- /dev/null +++ b/public/pages/ratings/bigminiboss.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - BMB + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@bigminiboss
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/coderelijah.html b/public/pages/ratings/coderelijah.html new file mode 100644 index 0000000..3213d17 --- /dev/null +++ b/public/pages/ratings/coderelijah.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - CE + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@CoderElijah
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/jayayseaohbee14.html b/public/pages/ratings/jayayseaohbee14.html new file mode 100644 index 0000000..88205e9 --- /dev/null +++ b/public/pages/ratings/jayayseaohbee14.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratngs - JASOB14 + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@JayAySeaOhBee14
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/pikachub2005.html b/public/pages/ratings/pikachub2005.html new file mode 100644 index 0000000..b2b2a62 --- /dev/null +++ b/public/pages/ratings/pikachub2005.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - PB2005 + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@PikachuB2005
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/ratings/youngchief.html b/public/pages/ratings/youngchief.html new file mode 100644 index 0000000..d312dff --- /dev/null +++ b/public/pages/ratings/youngchief.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - Ratings - YC + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@Youngchief
has not yet provided content to put on this page.
+ + + + + \ No newline at end of file diff --git a/public/pages/usage.html b/public/pages/usage.html new file mode 100644 index 0000000..5f69b18 --- /dev/null +++ b/public/pages/usage.html @@ -0,0 +1,24 @@ + + + + + + FP650 - Usage + + + + + + + + +
Things I use on this site
+

1. Bookie0's BounceCSS is used for styling

+

3. Most of the site uses code I've made, or adapted from online sources

+

4. The "cheese" page uses code from commandblockguy's site, and "dvd-screensaver" uses adapted code of the same.

+

5. The DVD logo is used on the "dvd-sceensaver" page

+

6. The countapi.xyz API is used for tracking total page views.

+
+ + + \ No newline at end of file diff --git a/public/pages/users.html b/public/pages/users.html new file mode 100644 index 0000000..d0958f4 --- /dev/null +++ b/public/pages/users.html @@ -0,0 +1,32 @@ + + + + + + FP650 - Users + + + + + + + + +
Current user pages
+ Youngchief +
+ CoderElijah +
+ bigminiboss +
+ PikachuB2005 +
+ JayAySeaOhBee14 +
+ 9pfs +
+

Talk to @Firepup650 about getting a page!

+
+ + + diff --git a/public/pages/users/9pfs.html b/public/pages/users/9pfs.html new file mode 100644 index 0000000..6274ab4 --- /dev/null +++ b/public/pages/users/9pfs.html @@ -0,0 +1,20 @@ + + + + + + FP650 - 9pfs + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@9pfs
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/bigminiboss.html b/public/pages/users/bigminiboss.html new file mode 100644 index 0000000..2d29f56 --- /dev/null +++ b/public/pages/users/bigminiboss.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - bigminiboss + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@bigminiboss
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/coderelijah.html b/public/pages/users/coderelijah.html new file mode 100644 index 0000000..2e614f3 --- /dev/null +++ b/public/pages/users/coderelijah.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - CoderElijah + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@CoderElijah
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/jayayseaohbee14.html b/public/pages/users/jayayseaohbee14.html new file mode 100644 index 0000000..0dc5937 --- /dev/null +++ b/public/pages/users/jayayseaohbee14.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - JASOB14 + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@JayAySeaOhBee14
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/pikachub2005.html b/public/pages/users/pikachub2005.html new file mode 100644 index 0000000..df9ece7 --- /dev/null +++ b/public/pages/users/pikachub2005.html @@ -0,0 +1,20 @@ + + + + + + Firepup650 - PikachuB2005 + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@PikachuB2005
has not yet provided content to put on this page.
+ + + + + diff --git a/public/pages/users/youngchief.html b/public/pages/users/youngchief.html new file mode 100644 index 0000000..fc7c462 --- /dev/null +++ b/public/pages/users/youngchief.html @@ -0,0 +1,21 @@ + + + + + + Firepup650 - Youngchief + + + + + + + + +
If you see this page, then the route is setup and working properly, but
@Youngchief
has not yet provided content to put on this page.
+

Youngchief's Spotify Status

+ + + + + diff --git a/public/pages/visits.html b/public/pages/visits.html new file mode 100644 index 0000000..af78364 --- /dev/null +++ b/public/pages/visits.html @@ -0,0 +1,73 @@ + + + + + + Firepup650 - Website Visits + + + +
+ + + + + + + + + + + + + + + + + + +
+ + + + +

This website has had a total of 0 views.

+

This page has had a total of 0 views.

+

The page_name_error page has had a total of 0 views.

+

The maintenance page has had a total of 0 views.

+

The index page has had a total of 0 views.

+

The cheese page has had a total of 0 views.

+

The dvd-screensaver page has had a total of 0 views.

+

The password-generator page has had a total of 0 views.

+

The about-you page has had a total of 0 views.

+

The server-info page has had a total of 0 views.

+

The user pages have had a total of 0 views.

+

The user ratings pages have had a total of 0 views.

+

Youngchief's Spotify pages have had a total of 0 views.

+

Under Costruction Pages have had a total of 0 views.

+

This website has had 0 error 404s.

+

This website has had 0 error 403s.

+

This website has had 0 error 500s.

+
+ + + diff --git a/public/raw/flags.txt b/public/raw/flags.txt new file mode 100644 index 0000000..b9b2e91 --- /dev/null +++ b/public/raw/flags.txt @@ -0,0 +1,336 @@ +flag-a-spring-folly=false +flag-admin-join-team=true +flag-allow-camera-iframe=true +flag-analytics-v2=true +flag-anonymous-workspace=false +flag-anthropomorphized-jaguar=true +flag-apple-sso=true +flag-autocomplete=true +flag-beta-template-java10=true +flag-beta-template-nodejs=true +flag-beta-template-pygame=true +flag-beta-template-python3=true +flag-beta-template-python_turtle=true +flag-beta-template-pyxel=true +flag-bicoastal-turtle=false +flag-bigger-help-btn=true +flag-biological-computer=true +flag-bounties=true +flag-bounties-add-socials-to-application-form=false +flag-bounties-application-cash-out=true +flag-bounties-home-module=true +flag-bounties-hunter-profile-label=true +flag-bounties-my-cycles-earn-cta=false +flag-bounties-negotiate=false +flag-bounties-new-event-log=true +flag-bounties-pinned-bounty=0 +flag-bounties-sidebar-nav-item=total +flag-bounties-small-btn-home=true +flag-bounty-chat=true +flag-bounty-hunter-services=true +flag-bounty-hunter-services-in-new-tab=true +flag-bounty-hunter-services-proposal-form=true +flag-bounty-poster-sidebar-banner=false +flag-bounty-reputation=true +flag-bounty-services-in-create-modal=true +flag-bundle-world=true +flag-buy-baby-food-with-cycles=true +flag-bytebot-api=false +flag-call-analytics-identify=true +flag-cash-out=true +flag-cash-out-admin=true +flag-checkout-for-plans=false +flag-cluicurl=true +flag-cm-tooltips-mount-at-root=false +flag-code-suggestion-engine=false +flag-code-suggestion-multiplayer=true +flag-codex-codegen-context-strategy=false +flag-codex-java=false +flag-collect-datadog-analytics=true +flag-colored-tool-icons=false +flag-colored-tool-icons-ghostwriter-marketing=false +flag-comment-codemirror=false +flag-community-hub-entry-banner=false +flag-copy-stacks-mutation=true +flag-copy-unit-ui=true +flag-create-repl-label=true +flag-create-repl-onboarding-step=false +flag-curlclui-html-preview=false +flag-curriculum-hub=true +flag-custom-themes=true +flag-custom-themes-alpha=true +flag-cycles-hacker-nudge=false +flag-dd-rum=true +flag-dd-rum-session-replay=false +flag-debugger-hover-variable=true +flag-debugger-v2=false +flag-deployments=true +flag-deployments-custom-domains=true +flag-deployments-lifecycle-commands=true +flag-deployments-paid-tiers=true +flag-deployments-server-side=true +flag-desktop=false +flag-disable-github-import=false +flag-domain-linking-v2=true +flag-dotcom-email=true +flag-dotreplit-packager=true +flag-draft-courses=false +flag-draw-attention-import-github=false +flag-dusty-sentence=false +flag-eager-load-directories=true +flag-edit-repl-info-forms=false +flag-editor-css-containment=true +flag-editor-git-conflict-markers=false +flag-editor-header=true +flag-editor-new-indent=true +flag-editor-statusbar=true +flag-egress-actions=false +flag-egress-add-on=true +flag-egress-notifs=true +flag-egress-snafu=false +flag-egress-summary=true +flag-elegant-elephant=true +flag-expiring-hacker-emails=false +flag-expt-100-days-of-code-entries=true +flag-expt-hide-placeholder-if-lesson=false +flag-expt-youtube-tutorials-learn-page=true +flag-ext-data-module=true +flag-extension-creator=true +flag-extension-devtools=true +flag-extensions=true +flag-extensions-enforce-scopes=false +flag-filetree-menu-2=false +flag-filetree-multiselect=true +flag-filetree-search=true +flag-filter-team-repls=true +flag-fly-me-to-the-moon=false +flag-follow-rollout-reporting=true +flag-following-feed=true +flag-freak-flag=true +flag-funky-future=false +flag-geo-signup-continent=true +flag-ghostrunner=false +flag-ghostwriter-banner-variant=personal +flag-ghostwriter-chat-engine=gpt-3.5-turbo +flag-ghostwriter-chat-engine-override=false +flag-ghostwriter-chat-explain-code=false +flag-ghostwriter-chat-ext=false +flag-ghostwriter-chat-prompt-strategy=chat-last-n-messages-file-context +flag-ghostwriter-complete-engine=self-hosted-large +flag-ghostwriter-doc-embeddings=true +flag-ghostwriter-enable-debugger-error-logging=false +flag-ghostwriter-enable-generic-debugger=false +flag-ghostwriter-file-content-strategy=initial-characters +flag-ghostwriter-neighboring-context=true +flag-ghostwriter-neighboring-context-strategy=none +flag-ghsp=true +flag-git-gud=true +flag-git-gud-gutter=true +flag-gitgud-gql-updates=true +flag-glowing-giraffe=true +flag-google-classroom-share=true +flag-gpus=true +flag-graphql-introspection=false +flag-gw-portals=false +flag-gwc-empty-state-is-message=false +flag-gwc-metered-cap-all-time=25 +flag-gwc-metered-cap-time-window=90 +flag-gwc-payers-default-open=true +flag-hacker-gift=false +flag-hacker2022-for-president=true +flag-hackweek-winner=false +flag-handicap-goval-conn=false +flag-hide-and-seek=true +flag-highlight-active-word=false +flag-home-recent-repls-improved=true +flag-i18n=false +flag-i18n-survey=false +flag-iap-apple=false +flag-iframe-extensions=false +flag-infinite-spiral=false +flag-infinity-drive=false +flag-infinity-drive-beta=false +flag-infinity-drive-eight-gigs=false +flag-jam-clui-commands=false +flag-kill-switch-native-auth=false +flag-kill-switch-notification-permissions=false +flag-killswitch-bad-graphql=false +flag-killswitch-bounties-no-anon-access=false +flag-killswitch-bounties-no-public-applications=false +flag-killswitch-bounties-require-captcha=false +flag-killswitch-ghostwriter=false +flag-killswitch-ghostwriter-reject-probability=0 +flag-killswitch-product-gating=false +flag-killswitch-relatedRepls=false +flag-killswitch-teams=false +flag-killswitch-tip-repl=false +flag-killswitch-track-segment-events-delta=false +flag-landing-mobile-section=true +flag-launching-new-courses=true +flag-layout-dnd=true +flag-layout-fixed-sidebar=true +flag-layout-navigator=true +flag-layout-tour-killswitch=true +flag-livestream-replit-developer-day-2023=off +flag-look-for-errors=false +flag-low-cycles-email=true +flag-lsp-hover-cmd-definition=true +flag-lsp-status-in-ws=false +flag-mark-all-threads-as-read=true +flag-mb-cache-test=false +flag-mb-github-connect=false +flag-mb-github-integration-explorers=true +flag-mb-github-integration-release=true +flag-mb-import-from-github=true +flag-mb-updated-git-section=false +flag-md-preview2=true +flag-migrate-replbox=true +flag-minimal-mobile-code-editor=false +flag-mobile-auth-pass=false +flag-mobile-banner=true +flag-mobile-console-dupe-input-fix=false +flag-mobile-new-side-filetree=true +flag-mobile-new-tab-pane=true +flag-mobile-research-survey=false +flag-mobile-show-run-fab=false +flag-mobile-show-seach=false +flag-mobile-show-seach-internal=false +flag-mobile-show-switch-server-cta=false +flag-mobile-show-switch-server-cta-release=true +flag-mobile-swipe-perf=true +flag-mobile-undo=true +flag-mobile-web-fun=true +flag-multiplayer-management-2=true +flag-multiselect=false +flag-nectar-nanny=true +flag-neon-databases=true +flag-neon-databases-discount=false +flag-neon-databases-tour=true +flag-new-bounty-search-sort=false +flag-new-coder-onboarding=true +flag-new-cover-page=true +flag-new-pub-flow=true +flag-nix-modules-tool=false +flag-no-cycles-discount=true +flag-no-pong-reconnect=false +flag-notifications=true +flag-notifications-handle=false +flag-notifications-permissions=false +flag-null-diagnostics=true +flag-onboarding-experiment=true +flag-one-websocket=false +flag-open-with=true +flag-orlando-honeymoon=true +flag-ot-data-loss-client-tracking=false +flag-p-signup=control +flag-pane-bindings-bottom-bar=false +flag-patch-dotreplit=true +flag-pedit-multiplayer=false +flag-plastic-plates=true +flag-postgres-databases=false +flag-postgres-db-god-mode=false +flag-privacy-change=true +flag-pro-dev-activation-create=false +flag-pro-dev-identify-server-side=true +flag-pro-dev-onboarding-v1=true +flag-pro-dev-onboarding-v2=false +flag-profile-2=true +flag-profile-noupgrade=false +flag-promo-modal-variant=cycles +flag-readme-preview=true +flag-repl-analytics=true +flag-repl-auth-sidebar=true +flag-repl-logs=false +flag-replview-file-gcs=false +flag-report-repl-spotlight=true +flag-rm-layout-state-clear=true +flag-run-button-editor=false +flag-run-keybindings-in-capture=true +flag-search-replace-clui=true +flag-search-replace-pane=true +flag-self-grouping-projects=true +flag-sell-biological-computer=true +flag-semantic-scrollbar=false +flag-semantic-search-v1=false +flag-series-of-tubes=false +flag-service-worker=true +flag-services-mobile=true +flag-shellhints=true +flag-show-custom-themes-mobile=false +flag-show-custom-themes-mobile-failsafe=true +flag-show-custom-themes-mobile-internal=false +flag-show-download-mobile-app-banner=true +flag-show-location-field-in-the-user-profile=true +flag-show-new-repricing-mobile=false +flag-show-repls-as-first-tab-profile=true +flag-show-teams-on-mobile=false +flag-show-tip-tour=false +flag-sidebar-repls-menu=false +flag-siderepl-expt=false +flag-signup-marketing-sidebar=control +flag-signup-refactor=true +flag-soren-is-a-fool=true +flag-spooky-extensions=false +flag-status-bar-branch=true +flag-storage-dynamic-resize-beta=false +flag-storage-utilization=false +flag-tab-menu=true +flag-task-manager=true +flag-tea-for-two-and-two-for-tea=false +flag-team-export=true +flag-team-org-management=true +flag-teams-business=true +flag-teams-dates=false +flag-teams-google-classroom=true +flag-teams-onboarding=true +flag-teams-overview-killswitch=false +flag-teams-pro-add-remove-seats=true +flag-teams-pro-beta=true +flag-teams-projects-overview-fetch-tests=true +flag-teams-rapid-trial=true +flag-teams-restrict-after-submit=false +flag-teams-stripe-checkout=true +flag-template-examples=true +flag-test-roles=true +flag-test-string-flag=var-2 +flag-thread-notifications=false +flag-thread-selection-experiment=false +flag-thread-snippets=true +flag-threads-2=true +flag-threads-dropdown-menu=false +flag-threads-pane=true +flag-threads-popup-notifications=false +flag-tip-balance-top-up-behavior=immediate-checkout +flag-tip-repl=true +flag-toolchain-multiple-runners=false +flag-transaction-history-new=true +flag-transfer-files=true +flag-transfer-repl=true +flag-tutorial-onboarding-tooltips=false +flag-typing-indicator=true +flag-typing-presence=false +flag-ultra-hardcore=false +flag-unit-aware-share-links=true +flag-unit-aware-share-links-ui=true +flag-unload-prevention=false +flag-unsupported-browser-page=false +flag-use-annotation-subscriptions=true +flag-use-es-community-feed=false +flag-use-new-code-rendering=true +flag-user-extensions=true +flag-vade-retro-alternativa=false +flag-verification-no-worker=false +flag-virtualized-commandbar=true +flag-webview-alternate-domain=false +flag-workspace-experience-survey=true +flag-workspace-header-chat-entry=true +flag-workspace-v2=true +flag-ws-bounties=false +flag-ws-density-filetree=false +flag-ws-diagnostics-status=false +flag-ws-draft-files=true +flag-ws-keybindings=false +flag-ws-quick-jump=true +flag-xterm-dom-rendering-firefox=true +flag-xterm-file-parser=true +flag-yo-ho-ho=false diff --git a/public/raw/minifier b/public/raw/minifier new file mode 100644 index 0000000..887aee3 --- /dev/null +++ b/public/raw/minifier @@ -0,0 +1,34 @@ +#/usr/bin/bash +echo "Writing new \".replit\" file..." +echo "entrypoint = \"main.py\" +modules = [\"python-3.10:v18-20230807-322e88b\"] + +hidden = [\".*\", \"replit*\",\"*.sh\"] + +[nix] +channel = \"stable-23_05\" + +[deployment] +run = [\"sh\", \"-c\", \"python3 main.py\"]" > .replit +echo "Writing new \"pyproject.toml\" file..." +echo "[tool.poetry] +name = \"python-template\" +version = \"0.1.0\" +description = \"\" +authors = [\"Your Name \"] + +[tool.poetry.dependencies] +python = \"^3.10.11\" + +[build-system] +requires = [\"poetry-core>=1.0.0\"] +build-backend = \"poetry.core.masonry.api\"" > pyproject.toml +echo "Writing new \"replit.nix\" file..." +echo "{ pkgs }: { + deps = [ + ]; +}" > replit.nix +echo "Removing \"venv\" folder..." +rm -rf venv +echo "Restarting Repl to apply changes..." +kill 1 diff --git a/public/scripts/eruda_loader.js b/public/scripts/eruda_loader.js new file mode 100644 index 0000000..3a09b21 --- /dev/null +++ b/public/scripts/eruda_loader.js @@ -0,0 +1,33 @@ +let dPressed = false; +let ePressed = false; +let vPressed = false; +function keydownListener(event) { + if (event.key === "d") { + dPressed = true; + } else if (event.key === "e" && dPressed) { + ePressed = true; + } else if (event.key === "v" && ePressed) { + eruda.init(); + document.removeEventListener('keyup', keyupListener); + document.removeEventListener('keydown', keydownListener); + } else { + dPressed = false; + ePressed = false; + vPressed = false; + } +} +document.addEventListener('keydown', keydownListener); +function keyupListener(e) { + if ( + //e.shiftKey && + e.ctrlKey && + e.altKey && + e.key === "d" + ) { + eruda.init(); + document.removeEventListener('keyup', keyupListener); + document.removeEventListener('keydown', keydownListener); + } +} +document.addEventListener('keyup', keyupListener); +console.debug("Listener Script ready.") \ No newline at end of file diff --git a/public/scripts/footer.js b/public/scripts/footer.js new file mode 100644 index 0000000..c8c1f68 --- /dev/null +++ b/public/scripts/footer.js @@ -0,0 +1,6 @@ +var foot = document.createElement("footer"); +foot.innerHTML = `This website uses Bookie0's BounceCSS for styling.
Website © 2023 Firepup650`; +foot.style.marginTop = "auto"; +foot.style.textAlign = "center"; +document.querySelector("body").append(foot); +console.debug("Footer Script done.") \ No newline at end of file diff --git a/public/scripts/hidden.js b/public/scripts/hidden.js new file mode 100644 index 0000000..15687e5 --- /dev/null +++ b/public/scripts/hidden.js @@ -0,0 +1,23 @@ +var text = `` +var array = ["87","69","76","67","79","77","69", + "spc","84","79", + "spc","84","72","69", + "spc","72","73","68","68","69","78", + "spc","80","65","71","69","46", + "spc","67","79","77","77","69","78","84", + "spc","73","45","65","77","45","65","45","83","85","80","69","82","45","83","69","65","82","67","72","69","82", + "spc","73","70","spc","89","79","85", + "spc","67","65","78", + "spc","82","69","65","68", + "spc","84","72","73","83","46"] +array.forEach( + (item) => { + if (item != "spc") { + //text += `char(`+item+`)` + text += `char(`+item+`)` + } + else { + text += "
" + }}) +document.getElementById("shh").innerHTML = text +console.log("Page loaded.") \ No newline at end of file diff --git a/public/scripts/hidden2.js b/public/scripts/hidden2.js new file mode 100644 index 0000000..4062afd --- /dev/null +++ b/public/scripts/hidden2.js @@ -0,0 +1,9 @@ +function dLS(url) { + var script = document.createElement("script"); + script.src = url; + document.head.appendChild(script); +} +dLS("hidden.js") +dLS("footer.js") +dLS("poof.js") +console.log("Hidden scripts loaded") \ No newline at end of file diff --git a/public/scripts/maintenance.js b/public/scripts/maintenance.js new file mode 100644 index 0000000..bfce85e --- /dev/null +++ b/public/scripts/maintenance.js @@ -0,0 +1,13 @@ +maintenance = false +if (maintenance) { + if (window.location.href.indexOf("maintenance") == -1) { + document.getElementById("Maintenance").innerHTML = `Warning:
Site under maintenance.
Be warned, site may be unstable.
` + } + document.getElementById("Maintenance").removeAttribute("hidden") + if (window.location.href.indexOf("maintenance") == -1 && window.location.href.indexOf('id') == -1) { + window.location.href = "/maintenance" +} +} else if (!(window.location.href.indexOf("maintenance") == -1)) { + document.getElementById("Maintenance").innerHTML = `Website not under maintenance.` +} +console.info("Maintenance Script done.") \ No newline at end of file diff --git a/public/scripts/pgen.js b/public/scripts/pgen.js new file mode 100644 index 0000000..9c4155e --- /dev/null +++ b/public/scripts/pgen.js @@ -0,0 +1,25 @@ +function genPwd() { + var pwdLen = Math.floor(Math.random() * 21) + 10; + var pwdChars = ""; + if (document.getElementById("commnsym").checked) { + pwdChars = pwdChars + "!@#$%&?*/" + } + if (document.getElementById("uncomsym").checked) { + pwdChars = pwdChars + "~^()_+`-={}[]\\|;:'\"<,>." + } + if (document.getElementById("uppercas").checked) { + pwdChars = pwdChars + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + } + if (document.getElementById("lowercas").checked) { + pwdChars = pwdChars + "abcdefghijklmnopqrstuvwxyz" + } + if (document.getElementById("numerics").checked) { + pwdChars = pwdChars + "0123456789" + } + if (pwdChars != "") { + var rndPwd = new Array(pwdLen).fill(pwdChars).map(x => (function(chars) { let umax = Math.pow(2, 32), r = new Uint32Array(1), max = umax - (umax % chars.length); do { crypto.getRandomValues(r); } while(r[0] > max); return chars[r[0] % chars.length]; })(x)).join(''); + } else { + var rndPwd = new Array(100000).fill("!@#$%&?*/~^()_+`-={}[]\\|;:'\"<,>.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789").map(x => (function(chars) { let umax = Math.pow(2, 32), r = new Uint32Array(1), max = umax - (umax % chars.length); do { crypto.getRandomValues(r); } while(r[0] > max); return chars[r[0] % chars.length]; })(x)).join(''); + } + document.getElementById("password").innerText = "Your random password is: " + rndPwd; +} \ No newline at end of file diff --git a/public/scripts/pgen2.js b/public/scripts/pgen2.js new file mode 100644 index 0000000..b535d1e --- /dev/null +++ b/public/scripts/pgen2.js @@ -0,0 +1,8 @@ +function dLS(url) { + var script = document.createElement("script"); + script.src = url; + document.head.appendChild(script); +} +dLS("pgen.js") +dLS("footer.js") +console.log("PwdGen scripts loaded") \ No newline at end of file diff --git a/public/scripts/poof.js b/public/scripts/poof.js new file mode 100644 index 0000000..0a6655e --- /dev/null +++ b/public/scripts/poof.js @@ -0,0 +1,5 @@ +const randomNum = Math.floor(Math.random() * 1001); +if ((randomNum == 650)) { + document.body.innerHTML = ""; +} +console.log("Poof check done.") \ No newline at end of file diff --git a/public/scripts/script.js b/public/scripts/script.js new file mode 100644 index 0000000..517797b --- /dev/null +++ b/public/scripts/script.js @@ -0,0 +1,10 @@ +function dLS(url) { + var script = document.createElement("script"); + script.src = url; + document.head.appendChild(script); +} +dLS("https://cdn.jsdelivr.net/npm/eruda@2.11.3/eruda.min.js") +dLS("/footer.js") +dLS("/maintenance.js") +dLS("/eruda_loader.js") +console.info("Main Script done.") \ No newline at end of file diff --git a/public/scripts/test.js b/public/scripts/test.js new file mode 100644 index 0000000..e69de29 diff --git a/public/styles/cheese.css b/public/styles/cheese.css new file mode 100644 index 0000000..b2cb856 --- /dev/null +++ b/public/styles/cheese.css @@ -0,0 +1,77 @@ +html, body { + height: 100%; + width: 100%; + color: #00FF00; + margin: 0; + padding: 0; +} + +html { + background-color: #000000; +} + +.warning { + color: #FF0000; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.block { + width: 100%; +} + +footer { + margin-top: auto; + text-align: center; +} + +a:has(button) { + box-shadow: none !important; + transform: none !important; +} + +#replit-badge { + box-shadow: none; + transform: none; + outline: none; + background: #000000; +} + +.center { + display: block; + margin: 0 auto; + text-align: center; + color: #00FF00; +} + +.left { + text-align: left; +} + +.right { + text-align: right; +} + +.rainbow { + background: linear-gradient(to right , #ff0000 0% , #e100ff 10% , #00b3ff 30% , #00ff1e 50% , #ff0000 90%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} + +.color { + color: #00FF00; +} + +.force-color { + background: #00ff00; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} \ No newline at end of file diff --git a/public/styles/ejsstyle.css b/public/styles/ejsstyle.css new file mode 100644 index 0000000..84fe018 --- /dev/null +++ b/public/styles/ejsstyle.css @@ -0,0 +1,97 @@ +html, body { + height: 100%; + width: 100%; + background-color: #000000; + margin: 0; + padding: 0; +} + +* { + color: #00FF00; +} + +.warning { + color: #FF0000; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.content { + flex: 1; +} + +.block { + width: 100%; +} + +footer { + margin-top: auto; + text-align: center; +} + +footer { + position: absolute; + bottom: 0; + width: 100%; +} + +a:has(button) { +box-shadow: none !important; +transform: none !important; +} + +#replit-badge { + box-shadow: none; + transform: none; + outline: none; + background: #000000; +} + +.center { + display: block; + margin: 0 auto; + text-align: center; +} + +.left { + text-align: left; +} + +.right { + text-align: right; +} + +/* +.rainbow { + background: linear-gradient(90.02deg, #ff0000 0.02%, #e100ff 27.09%, #00b3ff 51.04%, #00ff1e 76.56%, #ff0000 99.99%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} +*/ + +.rainbow { + background-clip: text; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; + background-image: linear-gradient(to right, #ff0000 0%, #e100ff 10%, #00b3ff 30%, #00ff1e 50%, #ff0000 90%); +} + +.color { + color: #00FF00; +} + +.force-color { + background: #00ff00; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} \ No newline at end of file diff --git a/public/styles/old.hidden.css b/public/styles/old.hidden.css new file mode 100644 index 0000000..56603af --- /dev/null +++ b/public/styles/old.hidden.css @@ -0,0 +1,58 @@ +html, body { + height: 100%; + width: 100%; + background-color: #FFFFFF; +} + +* { + color: #00aa00; +} + +.warning { + color: #aa0000; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +footer { + margin-top: auto; + text-align: center; +} + +a:has(button) { +box-shadow: none !important; +transform: none !important; +} + +#replit-badge { + box-shadow: none; + transform: none; + outline: none; + background: #FFFFFF; +} + +.center { + display: block; + margin: 0 auto; + text-align: center; +} + +.left { + text-align: left; +} + +.right { + text-align: right; +} + +.rainbow { + background: linear-gradient(90.02deg, #ff0000 0.02%, #e100ff 27.09%, #00b3ff 51.04%, #00ff1e 76.56%, #ff0000 99.99%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} diff --git a/public/styles/style.css b/public/styles/style.css new file mode 100644 index 0000000..e634f45 --- /dev/null +++ b/public/styles/style.css @@ -0,0 +1,90 @@ +@import url('https://fonts.googleapis.com/css2?family=Source+Code+Pro&display=swap'); + +html, body { + height: 100%; + width: 100%; + background-color: #000000; + color: #00FF00; + margin: 0; + padding: 0; + font-family: 'Source Code Pro', monospace !important; +} + +.warning { + color: #FF0000; +} + +body { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.block { + width: 100%; +} + +footer { + margin-top: auto; + text-align: center; +} + +a, button, .rainbow, .force-color, span, label { + font-family: 'Source Code Pro', monospace !important; +} + +a:has(button) { + box-shadow: none !important; + transform: none !important; +} + +#replit-badge { + box-shadow: none; + transform: none; + outline: none; + background: #000000; +} + +.center { + display: block; + margin: 0 auto; + text-align: center; +} + +.left { + text-align: left; +} + +.right { + text-align: right; +} + +/* +.rainbow { + background: linear-gradient(90.02deg, #ff0000 0.02%, #e100ff 27.09%, #00b3ff 51.04%, #00ff1e 76.56%, #ff0000 99.99%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} +*/ + +.rainbow { + background: linear-gradient(to right, #ff0000 0%, #e100ff 10%, #00b3ff 30%, #00ff1e 50%, #ff0000 90%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} + +.color { + color: #00FF00; +} + +.force-color { + background: #00ff00; + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + text-fill-color: transparent; +} \ No newline at end of file diff --git a/replit.nix b/replit.nix new file mode 100644 index 0000000..d70c3be --- /dev/null +++ b/replit.nix @@ -0,0 +1,14 @@ +{ pkgs }: { + deps = [ + pkgs.calc + pkgs.openssh + pkgs.inetutils + pkgs.lsof + pkgs.nodejs-18_x + pkgs.nodePackages.typescript-language-server + pkgs.yarn + pkgs.replitPackages.jest + pkgs.ncurses.dev + pkgs.pkg-config + ]; +} \ No newline at end of file diff --git a/restart b/restart new file mode 100644 index 0000000..02de4bc --- /dev/null +++ b/restart @@ -0,0 +1,16 @@ +old code for image requests: + /* + var options = { + host: 'image-hosting.firepup650.repl.co', + path: path, + method: 'GET' + }; + var request = http.get(options, function(response) { + res.writeHead(response.statusCode, { + 'Content-Type': response.headers['content-type'] + }); + response.pipe(res); + }).on("error", function(e) { + console.log("Got error: " + e.message, e); + }); + */ \ No newline at end of file