From f8b2047cff3ed5585ec254ec2e983ef05563d021 Mon Sep 17 00:00:00 2001 From: Thomas Klaehn Date: Mon, 30 Jan 2023 13:29:26 +0100 Subject: [PATCH] Initial commit --- .gitignore | 6 + .vscode/launch.json | 16 + .vscode/tasks.json | 14 + config/config.json | 12 + go.mod | 3 + go.sum | 0 main.go | 145 ++ svelte/.gitignore | 10 + svelte/.npmrc | 1 + svelte/README.md | 38 + svelte/package-lock.json | 1592 +++++++++++++++++++ svelte/package.json | 19 + svelte/src/app.html | 12 + svelte/src/css/style.css | 566 +++++++ svelte/src/hooks.server.js | 14 + svelte/src/lib/Header.svelte | 27 + svelte/src/routes/+layout.svelte | 13 + svelte/src/routes/+page.js | 1 + svelte/src/routes/+page.svelte | 15 + svelte/src/routes/chicken/+page.js | 1 + svelte/src/routes/chicken/+page.svelte | 152 ++ svelte/static/7Auwp_0qiz-afTLGLQjUwkQ.woff2 | Bin 0 -> 11528 bytes svelte/static/favicon.png | Bin 0 -> 13562 bytes svelte/static/hahn.svg | 79 + svelte/static/haus.svg | 29 + svelte/static/perinet-logo.png | Bin 0 -> 5185 bytes svelte/static/perinet-periNODE.svg | 1 + svelte/static/perinet-security.svg | 1 + svelte/static/perinet-update.svg | 1 + svelte/static/update-arrows.png | Bin 0 -> 5027 bytes svelte/static/update-plain.png | Bin 0 -> 6566 bytes svelte/svelte.config.js | 12 + svelte/vite.config.js | 7 + 33 files changed, 2787 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 config/config.json create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go create mode 100644 svelte/.gitignore create mode 100644 svelte/.npmrc create mode 100644 svelte/README.md create mode 100644 svelte/package-lock.json create mode 100644 svelte/package.json create mode 100644 svelte/src/app.html create mode 100644 svelte/src/css/style.css create mode 100644 svelte/src/hooks.server.js create mode 100644 svelte/src/lib/Header.svelte create mode 100644 svelte/src/routes/+layout.svelte create mode 100644 svelte/src/routes/+page.js create mode 100644 svelte/src/routes/+page.svelte create mode 100644 svelte/src/routes/chicken/+page.js create mode 100644 svelte/src/routes/chicken/+page.svelte create mode 100644 svelte/static/7Auwp_0qiz-afTLGLQjUwkQ.woff2 create mode 100644 svelte/static/favicon.png create mode 100644 svelte/static/hahn.svg create mode 100644 svelte/static/haus.svg create mode 100644 svelte/static/perinet-logo.png create mode 100644 svelte/static/perinet-periNODE.svg create mode 100644 svelte/static/perinet-security.svg create mode 100644 svelte/static/perinet-update.svg create mode 100644 svelte/static/update-arrows.png create mode 100644 svelte/static/update-plain.png create mode 100644 svelte/svelte.config.js create mode 100644 svelte/vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2b1ac1a --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/node_modules/ +/public/build/ + +.DS_Store + +__debug_bin diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..34dafd5 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch Package", + "type": "go", + "request": "launch", + "mode": "auto", + "program": "${workspaceFolder}/main.go", + "preLaunchTask": "npm: build - svelte" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..7492294 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,14 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "build", + "path": "svelte", + "group": "build", + "problemMatcher": [], + "label": "npm: build - svelte", + "detail": "vite build" + } + ] +} \ No newline at end of file diff --git a/config/config.json b/config/config.json new file mode 100644 index 0000000..d33e287 --- /dev/null +++ b/config/config.json @@ -0,0 +1,12 @@ +{ + "outer_gate": { + "state": 1, + "open_time": 4, + "close_time": 2 + }, + "inner_gate": { + "state": 1, + "open_time": 2, + "close_time": 2 + } +} \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..43d5b3d --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module webserver + +go 1.19 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e69de29 diff --git a/main.go b/main.go new file mode 100644 index 0000000..f29735d --- /dev/null +++ b/main.go @@ -0,0 +1,145 @@ +package main + +import ( + "encoding/json" + "flag" + "fmt" + "io" + "log" + "net/http" + "os" +) + +const ( + OPENED uint = 1 + CLOSED uint = 2 + CLOSING uint = 3 + OPENING uint = 4 +) + +type gate struct { + State uint `json:"state"` + OpenTime uint `json:"open_time"` + CloseTime uint `json:"close_time"` +} + +type config struct { + InnerGate gate `json:"inner_gate"` + OuterGate gate `json:"outer_gate"` +} + +var ( + logger log.Logger = *log.Default() + config_path string + + cache_inner_gate = gate{ + State: 1, + OpenTime: 2, + CloseTime: 2, + } + + cache_outer_gate = gate{ + State: 1, + OpenTime: 4, + CloseTime: 2, + } + + config_cache = config{ + InnerGate: cache_inner_gate, + OuterGate: cache_outer_gate, + } +) + +func read_config() { + data, err := os.ReadFile(config_path) + if err != nil { + logger.Printf("Unable to read %s", config_path) + return + } + err = json.Unmarshal(data, &config_cache) + if err != nil { + logger.Print("Unable to evaluate config data") + return + } +} + +func api_handler_gates(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-type", "application/json; charset=utf-8;") + if r.Method == "GET" { + res, err := json.Marshal(config_cache) + if err != nil { + res = json.RawMessage(`{"error": "` + err.Error() + `"}`) + w.WriteHeader(http.StatusInternalServerError) + w.Write(res) + return + } + w.WriteHeader(http.StatusOK) + w.Write(res) + } else if r.Method == "PATCH" { + var tmp config + payload, _ := io.ReadAll(r.Body) + err := json.Unmarshal(payload, &tmp) + if err != nil { + logger.Print(err) + } + logger.Print(r.Body) + + } else { + w.WriteHeader(http.StatusMethodNotAllowed) + } +} + +func api_handler_gates_outer(w http.ResponseWriter, r *http.Request) { + if r.Method == "GET" { + res, err := json.Marshal(map[string]uint{"state": config_cache.OuterGate.State}) + if err != nil { + res = json.RawMessage(`{"error": "` + err.Error() + `"}`) + w.WriteHeader(http.StatusInternalServerError) + w.Write(res) + return + } + w.WriteHeader(http.StatusOK) + w.Write(res) + } else if r.Method == "PATCH" { + var tmp config + payload, _ := io.ReadAll(r.Body) + err := json.Unmarshal(payload, &tmp) + if err != nil { + res := json.RawMessage(`{"error": "` + err.Error() + `"}`) + w.WriteHeader(http.StatusInternalServerError) + w.Write(res) + return + } + if tmp.OuterGate.State == 1 { + config_cache.OuterGate.State = 3 // Schliessen => Schliesst + } else if tmp.OuterGate.State == 2 { + config_cache.OuterGate.State = 4 // Oeffnen => Oeffnet + } + // FIXME: add real gate handling + + w.WriteHeader(http.StatusOK) + } else { + w.WriteHeader(http.StatusMethodNotAllowed) + } +} + +func main() { + flag.StringVar(&config_path, "c", "./config/config.json", "Specify path to find the config file. Default is ./config/config.json") + flag.Parse() + read_config() + + // API routes + // Serve files from static folder + http.Handle("/", http.FileServer(http.Dir("./svelte/build"))) + + // Serve api + http.HandleFunc("/gates", api_handler_gates) + http.HandleFunc("/gates/outer", api_handler_gates_outer) + + port := ":5000" + fmt.Println("Server is running on port" + port) + + // Start server on port specified above + log.Fatal(http.ListenAndServe(port, nil)) + +} diff --git a/svelte/.gitignore b/svelte/.gitignore new file mode 100644 index 0000000..64007bd --- /dev/null +++ b/svelte/.gitignore @@ -0,0 +1,10 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +.vercel +.output diff --git a/svelte/.npmrc b/svelte/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/svelte/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/svelte/README.md b/svelte/README.md new file mode 100644 index 0000000..5c91169 --- /dev/null +++ b/svelte/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/svelte/package-lock.json b/svelte/package-lock.json new file mode 100644 index 0000000..71be6d4 --- /dev/null +++ b/svelte/package-lock.json @@ -0,0 +1,1592 @@ +{ + "name": "my-app", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "my-app", + "version": "0.0.1", + "dependencies": { + "@fontsource/fira-mono": "^4.5.0" + }, + "devDependencies": { + "@sveltejs/adapter-static": "next", + "@sveltejs/kit": "next", + "svelte": "^3.46.0", + "vite": "^3.1.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.8.tgz", + "integrity": "sha512-CyEWALmn+no/lbgbAJsbuuhT8s2J19EJGHkeyAwjbFJMrj80KJ9zuYsoAvidPTU7BgBf87r/sgae8Tw0dbOc4Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "dependencies": { + "esbuild-wasm": "0.15.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.8.tgz", + "integrity": "sha512-pE5RQsOTSERCtfZdfCT25wzo7dfhOSlhAXcsZmuvRYhendOv7djcdvtINdnDp2DAjP17WXlBB4nBO6sHLczmsg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fontsource/fira-mono": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@fontsource/fira-mono/-/fira-mono-4.5.9.tgz", + "integrity": "sha512-DDhkRUjPHwPK/wB7GM/7LzGkcEC5JyTZM93YnFoP2Qfjffq3qX1asnXNqfglgZxXHXVmu3RI8OjRf87I97XCfA==" + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@sveltejs/adapter-static": { + "version": "1.0.0-next.43", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.43.tgz", + "integrity": "sha512-PAgSp1GA8HkYE4p30/sBvJme2nefhcTBJafqQdMNoUksWZF2WzuL8OEO8wa9ndE6cghcGk3j6Ve0Oskg/wtTOw==", + "dev": true + }, + "node_modules/@sveltejs/kit": { + "version": "1.0.0-next.484", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.484.tgz", + "integrity": "sha512-Y3l8OmlgmfJX3m081rMUZmmEQWHtiSsj3+YWYK/CQ4V99jqoztXPz/4cAxUt5mC45jVF5Ee9ykmh6GzkYjvfAQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte": "^1.0.5", + "@types/cookie": "^0.5.1", + "cookie": "^0.5.0", + "devalue": "^3.1.2", + "kleur": "^4.1.4", + "magic-string": "^0.26.2", + "mime": "^3.0.0", + "node-fetch": "^3.2.4", + "sade": "^1.8.1", + "set-cookie-parser": "^2.4.8", + "sirv": "^2.0.2", + "tiny-glob": "^0.2.9", + "undici": "^5.8.1" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "svelte": "^3.44.0", + "vite": "^3.1.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.6.tgz", + "integrity": "sha512-4VcYesosw2ekdsbx25ZbIcO2MueKLz5b3gWrimTDRTg4KF309ov/bLg8t5pk5v9C2dTrnyzzmPcITQ5dtjk+bw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^4.2.1", + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.26.3", + "svelte-hmr": "^0.15.0" + }, + "engines": { + "node": "^14.18.0 || >= 16" + }, + "peerDependencies": { + "diff-match-patch": "^1.0.5", + "svelte": "^3.44.0", + "vite": "^3.0.0" + }, + "peerDependenciesMeta": { + "diff-match-patch": { + "optional": true + } + } + }, + "node_modules/@types/cookie": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", + "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/devalue": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-3.1.3.tgz", + "integrity": "sha512-9KO89Cb+qjzf2CqdrH+NuLaqdk9GhDP5EhR4zlkR51dvuIaiqtlkDkGzLMShDemwUy21raSMdu+kpX8Enw3yGQ==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.8.tgz", + "integrity": "sha512-Remsk2dmr1Ia65sU+QasE6svJbsHe62lzR+CnjpUvbZ+uSYo1SitiOWPRfZQkCu82YWZBBKXiD/j0i//XWMZ+Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.8", + "@esbuild/linux-loong64": "0.15.8", + "esbuild-android-64": "0.15.8", + "esbuild-android-arm64": "0.15.8", + "esbuild-darwin-64": "0.15.8", + "esbuild-darwin-arm64": "0.15.8", + "esbuild-freebsd-64": "0.15.8", + "esbuild-freebsd-arm64": "0.15.8", + "esbuild-linux-32": "0.15.8", + "esbuild-linux-64": "0.15.8", + "esbuild-linux-arm": "0.15.8", + "esbuild-linux-arm64": "0.15.8", + "esbuild-linux-mips64le": "0.15.8", + "esbuild-linux-ppc64le": "0.15.8", + "esbuild-linux-riscv64": "0.15.8", + "esbuild-linux-s390x": "0.15.8", + "esbuild-netbsd-64": "0.15.8", + "esbuild-openbsd-64": "0.15.8", + "esbuild-sunos-64": "0.15.8", + "esbuild-windows-32": "0.15.8", + "esbuild-windows-64": "0.15.8", + "esbuild-windows-arm64": "0.15.8" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.8.tgz", + "integrity": "sha512-bVh8FIKOolF7/d4AMzt7xHlL0Ljr+mYKSHI39TJWDkybVWHdn6+4ODL3xZGHOxPpdRpitemXA1WwMKYBsw8dGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "dependencies": { + "esbuild-wasm": "0.15.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.8.tgz", + "integrity": "sha512-ReAMDAHuo0H1h9LxRabI6gwYPn8k6WiUeyxuMvx17yTrJO+SCnIfNc/TSPFvDwtK9MiyiKG/2dBYHouT/M0BXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.8.tgz", + "integrity": "sha512-KaKcGfJ+yto7Fo5gAj3xwxHMd1fBIKatpCHK8znTJLVv+9+NN2/tIPBqA4w5rBwjX0UqXDeIE2v1xJP+nGEXgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.8.tgz", + "integrity": "sha512-8tjEaBgAKnXCkP7bhEJmEqdG9HEV6oLkF36BrMzpfW2rgaw0c48Zrxe+9RlfeGvs6gDF4w+agXyTjikzsS3izw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.8.tgz", + "integrity": "sha512-jaxcsGHYzn2L0/lffON2WfH4Nc+d/EwozVTP5K2v016zxMb5UQMhLoJzvLgBqHT1SG0B/mO+a+THnJCMVg15zw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.8.tgz", + "integrity": "sha512-2xp2UlljMvX8HExtcg7VHaeQk8OBU0CSl1j18B5CcZmSDkLF9p3utuMXIopG3a08fr9Hv+Dz6+seSXUow/G51w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.8.tgz", + "integrity": "sha512-9u1E54BRz1FQMl86iaHK146+4ID2KYNxL3trLZT4QLLx3M7Q9n4lGG3lrzqUatGR2cKy8c33b0iaCzsItZWkFg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.8.tgz", + "integrity": "sha512-4HxrsN9eUzJXdVGMTYA5Xler82FuZUu21bXKN42zcLHHNKCAMPUzD62I+GwDhsdgUBAUj0tRXDdsQHgaP6v0HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.8.tgz", + "integrity": "sha512-7DVBU9SFjX4+vBwt8tHsUCbE6Vvl6y6FQWHAgyw1lybC5gULqn/WnjHYHN2/LJaZRsDBvxWT4msEgwLGq1Wd3Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.8.tgz", + "integrity": "sha512-1OCm7Aq0tEJT70PbxmHSGYDLYP8DKH8r4Nk7/XbVzWaduo9beCjGBB+tGZIHK6DdTQ3h00/4Tb/70YMH/bOtKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.8.tgz", + "integrity": "sha512-yeFoNPVFPEzZvFYBfUQNG2TjGRaCyV1E27OcOg4LOtnGrxb2wA+mkW3luckyv1CEyd00mpAg7UdHx8nlx3ghgA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.8.tgz", + "integrity": "sha512-CEyMMUUNabXibw8OSNmBXhOIGhnjNVl5Lpseiuf00iKN0V47oqDrbo4dsHz1wH62m49AR8iG8wpDlTqfYgKbtg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.8.tgz", + "integrity": "sha512-OCGSOaspMUjexSCU8ZiA0UnV/NiRU+s2vIfEcAQWQ6u32R+2luyfh/4ZaY6jFbylJE07Esc/yRvb9Q5fXuClXA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.8.tgz", + "integrity": "sha512-RHdpdfxRTSrZXZJlFSLazFU4YwXLB5Rgf6Zr5rffqSsO4y9JybgtKO38bFwxZNlDXliYISXN/YROKrG9s7mZQA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.8.tgz", + "integrity": "sha512-VolFFRatBH09T5QMWhiohAWCOien1R1Uz9K0BRVVTBgBaVBt7eArsXTKxVhUgRf2vwu2c2SXkuP0r7HLG0eozw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.8.tgz", + "integrity": "sha512-HTAPlg+n4kUeE/isQxlCfsOz0xJGNoT5LJ9oYZWFKABfVf4Ycu7Zlf5ITgOnrdheTkz8JeL/gISIOCFAoOXrSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.8.tgz", + "integrity": "sha512-qMP/jR/FzcIOwKj+W+Lb+8Cfr8GZHbHUJxAPi7DUhNZMQ/6y7sOgRzlOSpRrbbUntrRZh0MqOyDhJ3Gpo6L1QA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.8.tgz", + "integrity": "sha512-Y7uCl5RNO4URjlemjdx++ukVHEMt5s5AfMWYUnMiK4Sry+pPCvQIctzXq6r6FKCyGKjX6/NGMCqR2OX6aLxj0w==", + "dev": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.8.tgz", + "integrity": "sha512-RKR1QHh4iWzjUhkP8Yqi75PPz/KS+b8zw3wUrzw6oAkj+iU5Qtyj61ZDaSG3Qf2vc6hTIUiPqVTqBH0NpXFNwg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.8.tgz", + "integrity": "sha512-ag9ptYrsizgsR+PQE8QKeMqnosLvAMonQREpLw4evA4FFgOBMLEat/dY/9txbpozTw9eEOYyD3a4cE9yTu20FA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.8.tgz", + "integrity": "sha512-dbpAb0VyPaUs9mgw65KRfQ9rqiWCHpNzrJusoPu+LpEoswosjt/tFxN7cd2l68AT4qWdBkzAjDLRon7uqMeWcg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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==", + "dev": true + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/magic-string": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.3.tgz", + "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", + "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "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/postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "2.78.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", + "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "node_modules/sirv": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", + "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "3.50.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.50.1.tgz", + "integrity": "sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz", + "integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": ">=3.19.0" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/totalist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", + "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/undici": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", + "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==", + "dev": true, + "engines": { + "node": ">=12.18" + } + }, + "node_modules/vite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.2.tgz", + "integrity": "sha512-wTDKPkiVbeT+drTPdkuvjVIC/2vKKUc1w3qNOuwgpyvPCZF6fvdxB5v5WEcCsqaYea0zrwA4+XialJKCHM3oVQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.15.6", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": "~2.78.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + } + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.8.tgz", + "integrity": "sha512-CyEWALmn+no/lbgbAJsbuuhT8s2J19EJGHkeyAwjbFJMrj80KJ9zuYsoAvidPTU7BgBf87r/sgae8Tw0dbOc4Q==", + "dev": true, + "optional": true, + "requires": { + "esbuild-wasm": "0.15.8" + } + }, + "@esbuild/linux-loong64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.8.tgz", + "integrity": "sha512-pE5RQsOTSERCtfZdfCT25wzo7dfhOSlhAXcsZmuvRYhendOv7djcdvtINdnDp2DAjP17WXlBB4nBO6sHLczmsg==", + "dev": true, + "optional": true + }, + "@fontsource/fira-mono": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@fontsource/fira-mono/-/fira-mono-4.5.9.tgz", + "integrity": "sha512-DDhkRUjPHwPK/wB7GM/7LzGkcEC5JyTZM93YnFoP2Qfjffq3qX1asnXNqfglgZxXHXVmu3RI8OjRf87I97XCfA==" + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", + "dev": true + }, + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@sveltejs/adapter-static": { + "version": "1.0.0-next.43", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-1.0.0-next.43.tgz", + "integrity": "sha512-PAgSp1GA8HkYE4p30/sBvJme2nefhcTBJafqQdMNoUksWZF2WzuL8OEO8wa9ndE6cghcGk3j6Ve0Oskg/wtTOw==", + "dev": true + }, + "@sveltejs/kit": { + "version": "1.0.0-next.484", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.484.tgz", + "integrity": "sha512-Y3l8OmlgmfJX3m081rMUZmmEQWHtiSsj3+YWYK/CQ4V99jqoztXPz/4cAxUt5mC45jVF5Ee9ykmh6GzkYjvfAQ==", + "dev": true, + "requires": { + "@sveltejs/vite-plugin-svelte": "^1.0.5", + "@types/cookie": "^0.5.1", + "cookie": "^0.5.0", + "devalue": "^3.1.2", + "kleur": "^4.1.4", + "magic-string": "^0.26.2", + "mime": "^3.0.0", + "node-fetch": "^3.2.4", + "sade": "^1.8.1", + "set-cookie-parser": "^2.4.8", + "sirv": "^2.0.2", + "tiny-glob": "^0.2.9", + "undici": "^5.8.1" + } + }, + "@sveltejs/vite-plugin-svelte": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.6.tgz", + "integrity": "sha512-4VcYesosw2ekdsbx25ZbIcO2MueKLz5b3gWrimTDRTg4KF309ov/bLg8t5pk5v9C2dTrnyzzmPcITQ5dtjk+bw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^4.2.1", + "debug": "^4.3.4", + "deepmerge": "^4.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.26.3", + "svelte-hmr": "^0.15.0" + } + }, + "@types/cookie": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", + "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true + }, + "data-uri-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", + "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "devalue": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-3.1.3.tgz", + "integrity": "sha512-9KO89Cb+qjzf2CqdrH+NuLaqdk9GhDP5EhR4zlkR51dvuIaiqtlkDkGzLMShDemwUy21raSMdu+kpX8Enw3yGQ==", + "dev": true + }, + "esbuild": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.8.tgz", + "integrity": "sha512-Remsk2dmr1Ia65sU+QasE6svJbsHe62lzR+CnjpUvbZ+uSYo1SitiOWPRfZQkCu82YWZBBKXiD/j0i//XWMZ+Q==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.8", + "@esbuild/linux-loong64": "0.15.8", + "esbuild-android-64": "0.15.8", + "esbuild-android-arm64": "0.15.8", + "esbuild-darwin-64": "0.15.8", + "esbuild-darwin-arm64": "0.15.8", + "esbuild-freebsd-64": "0.15.8", + "esbuild-freebsd-arm64": "0.15.8", + "esbuild-linux-32": "0.15.8", + "esbuild-linux-64": "0.15.8", + "esbuild-linux-arm": "0.15.8", + "esbuild-linux-arm64": "0.15.8", + "esbuild-linux-mips64le": "0.15.8", + "esbuild-linux-ppc64le": "0.15.8", + "esbuild-linux-riscv64": "0.15.8", + "esbuild-linux-s390x": "0.15.8", + "esbuild-netbsd-64": "0.15.8", + "esbuild-openbsd-64": "0.15.8", + "esbuild-sunos-64": "0.15.8", + "esbuild-windows-32": "0.15.8", + "esbuild-windows-64": "0.15.8", + "esbuild-windows-arm64": "0.15.8" + } + }, + "esbuild-android-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.8.tgz", + "integrity": "sha512-bVh8FIKOolF7/d4AMzt7xHlL0Ljr+mYKSHI39TJWDkybVWHdn6+4ODL3xZGHOxPpdRpitemXA1WwMKYBsw8dGw==", + "dev": true, + "optional": true, + "requires": { + "esbuild-wasm": "0.15.8" + } + }, + "esbuild-android-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.8.tgz", + "integrity": "sha512-ReAMDAHuo0H1h9LxRabI6gwYPn8k6WiUeyxuMvx17yTrJO+SCnIfNc/TSPFvDwtK9MiyiKG/2dBYHouT/M0BXQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.8.tgz", + "integrity": "sha512-KaKcGfJ+yto7Fo5gAj3xwxHMd1fBIKatpCHK8znTJLVv+9+NN2/tIPBqA4w5rBwjX0UqXDeIE2v1xJP+nGEXgA==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.8.tgz", + "integrity": "sha512-8tjEaBgAKnXCkP7bhEJmEqdG9HEV6oLkF36BrMzpfW2rgaw0c48Zrxe+9RlfeGvs6gDF4w+agXyTjikzsS3izw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.8.tgz", + "integrity": "sha512-jaxcsGHYzn2L0/lffON2WfH4Nc+d/EwozVTP5K2v016zxMb5UQMhLoJzvLgBqHT1SG0B/mO+a+THnJCMVg15zw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.8.tgz", + "integrity": "sha512-2xp2UlljMvX8HExtcg7VHaeQk8OBU0CSl1j18B5CcZmSDkLF9p3utuMXIopG3a08fr9Hv+Dz6+seSXUow/G51w==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.8.tgz", + "integrity": "sha512-9u1E54BRz1FQMl86iaHK146+4ID2KYNxL3trLZT4QLLx3M7Q9n4lGG3lrzqUatGR2cKy8c33b0iaCzsItZWkFg==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.8.tgz", + "integrity": "sha512-4HxrsN9eUzJXdVGMTYA5Xler82FuZUu21bXKN42zcLHHNKCAMPUzD62I+GwDhsdgUBAUj0tRXDdsQHgaP6v0HA==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.8.tgz", + "integrity": "sha512-7DVBU9SFjX4+vBwt8tHsUCbE6Vvl6y6FQWHAgyw1lybC5gULqn/WnjHYHN2/LJaZRsDBvxWT4msEgwLGq1Wd3Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.8.tgz", + "integrity": "sha512-1OCm7Aq0tEJT70PbxmHSGYDLYP8DKH8r4Nk7/XbVzWaduo9beCjGBB+tGZIHK6DdTQ3h00/4Tb/70YMH/bOtKg==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.8.tgz", + "integrity": "sha512-yeFoNPVFPEzZvFYBfUQNG2TjGRaCyV1E27OcOg4LOtnGrxb2wA+mkW3luckyv1CEyd00mpAg7UdHx8nlx3ghgA==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.8.tgz", + "integrity": "sha512-CEyMMUUNabXibw8OSNmBXhOIGhnjNVl5Lpseiuf00iKN0V47oqDrbo4dsHz1wH62m49AR8iG8wpDlTqfYgKbtg==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.8.tgz", + "integrity": "sha512-OCGSOaspMUjexSCU8ZiA0UnV/NiRU+s2vIfEcAQWQ6u32R+2luyfh/4ZaY6jFbylJE07Esc/yRvb9Q5fXuClXA==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.8.tgz", + "integrity": "sha512-RHdpdfxRTSrZXZJlFSLazFU4YwXLB5Rgf6Zr5rffqSsO4y9JybgtKO38bFwxZNlDXliYISXN/YROKrG9s7mZQA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.8.tgz", + "integrity": "sha512-VolFFRatBH09T5QMWhiohAWCOien1R1Uz9K0BRVVTBgBaVBt7eArsXTKxVhUgRf2vwu2c2SXkuP0r7HLG0eozw==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.8.tgz", + "integrity": "sha512-HTAPlg+n4kUeE/isQxlCfsOz0xJGNoT5LJ9oYZWFKABfVf4Ycu7Zlf5ITgOnrdheTkz8JeL/gISIOCFAoOXrSA==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.8.tgz", + "integrity": "sha512-qMP/jR/FzcIOwKj+W+Lb+8Cfr8GZHbHUJxAPi7DUhNZMQ/6y7sOgRzlOSpRrbbUntrRZh0MqOyDhJ3Gpo6L1QA==", + "dev": true, + "optional": true + }, + "esbuild-wasm": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.8.tgz", + "integrity": "sha512-Y7uCl5RNO4URjlemjdx++ukVHEMt5s5AfMWYUnMiK4Sry+pPCvQIctzXq6r6FKCyGKjX6/NGMCqR2OX6aLxj0w==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.8.tgz", + "integrity": "sha512-RKR1QHh4iWzjUhkP8Yqi75PPz/KS+b8zw3wUrzw6oAkj+iU5Qtyj61ZDaSG3Qf2vc6hTIUiPqVTqBH0NpXFNwg==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.8.tgz", + "integrity": "sha512-ag9ptYrsizgsR+PQE8QKeMqnosLvAMonQREpLw4evA4FFgOBMLEat/dY/9txbpozTw9eEOYyD3a4cE9yTu20FA==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.8", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.8.tgz", + "integrity": "sha512-dbpAb0VyPaUs9mgw65KRfQ9rqiWCHpNzrJusoPu+LpEoswosjt/tFxN7cd2l68AT4qWdBkzAjDLRon7uqMeWcg==", + "dev": true, + "optional": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "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==", + "dev": true + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true + }, + "magic-string": { + "version": "0.26.3", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.3.tgz", + "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true + }, + "node-fetch": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", + "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "rollup": { + "version": "2.78.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", + "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "set-cookie-parser": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", + "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", + "dev": true + }, + "sirv": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", + "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", + "dev": true, + "requires": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^3.0.0" + } + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svelte": { + "version": "3.50.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.50.1.tgz", + "integrity": "sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==", + "dev": true + }, + "svelte-hmr": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz", + "integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==", + "dev": true, + "requires": {} + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "totalist": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", + "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", + "dev": true + }, + "undici": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", + "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==", + "dev": true + }, + "vite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.2.tgz", + "integrity": "sha512-wTDKPkiVbeT+drTPdkuvjVIC/2vKKUc1w3qNOuwgpyvPCZF6fvdxB5v5WEcCsqaYea0zrwA4+XialJKCHM3oVQ==", + "dev": true, + "requires": { + "esbuild": "^0.15.6", + "fsevents": "~2.3.2", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": "~2.78.0" + } + }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true + } + } +} diff --git a/svelte/package.json b/svelte/package.json new file mode 100644 index 0000000..8b7436f --- /dev/null +++ b/svelte/package.json @@ -0,0 +1,19 @@ +{ + "name": "my-app", + "version": "0.0.1", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@sveltejs/adapter-static": "next", + "@sveltejs/kit": "next", + "svelte": "^3.46.0", + "vite": "^3.1.0" + }, + "type": "module", + "dependencies": { + "@fontsource/fira-mono": "^4.5.0" + } +} diff --git a/svelte/src/app.html b/svelte/src/app.html new file mode 100644 index 0000000..9ab5e86 --- /dev/null +++ b/svelte/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/svelte/src/css/style.css b/svelte/src/css/style.css new file mode 100644 index 0000000..ff68cb3 --- /dev/null +++ b/svelte/src/css/style.css @@ -0,0 +1,566 @@ +html, +body { + margin: 0; + padding: 0; + font-size: 18px !important; + font-family: 'Muli', arial, verdana, helvetica, sans-serif; + font-weight: 300; + font-style: normal; + height: 100%; + color: #b6b6b6; + background: #282929; +} + +body { + display: flex; + flex-direction: column; +} + +.modalbg { + background: rgba(0, 0, 0, 0.6); + height: 100%; + width: 100%; + position: fixed; + top: 0px; + z-index: 999; + overflow-x: hidden; + overflow-y: auto; + color: white; +} + +a { + outline: none; + color: #b6b6b6; + text-decoration-line: none; +} + +li { + list-style: none; +} + +.content { + padding: 10rem 0; + margin: 2%; +} + +section { + margin: auto 0; + align-items: center; + text-align: center; +} + +section h1 { + margin: 20px auto; + font-size: 2rem; +} + +section h2 { + font-size: 1.4rem; +} + +table { + margin: auto; +} + +td p { + margin: 0; +} + +td.left { + text-align: right; + font-weight: 700; + width: 33%; + padding: 5px; + vertical-align: text-top; +} + +td.right { + text-align: left; +} + +td.input { + text-align: left; + width: 65%; + outline: none; + vertical-align: text-top; +} + +form { + font-size: 1.2rem; +} + +td select { + width: 51%; + outline: none; + width: 62%; + outline: none; + margin-left: 2%; +} + +td input { + width: 60%; + outline: none; +} + +td textarea { + text-align: left; +} + +td input span { + font-size: 1.0rem; + outline: none; + border: none; + background: none; +} + +select, +input { + border: 1px #999999 solid; + background-color: #f6f6f6; + padding: 2px 4px 2px 4px; + margin: 0 0 0.5rem 0; + color: #b6b6b6 !important; + font-size: 1.0rem; + border-radius: 8px; + outline: none; +} + +td div input { + color: #b6b6b6 !important; + border: none; + background: none; +} + +textarea { + border-radius: 10px; + width: 98%; + height: 10rem; + position: relative; + resize: none; + outline: none; + margin-left: 2%; +} + +header { + width: 100%; + height: 50px; + line-height: 50px; + text-align: center; + background-color: #282929; +} + + +/*logo placement*/ + +header figure { + float: left; + color: #b6b6b6; +} + +header figure.logo { + position: absolute; + right: 0px; + top: -15px; +} + + +/*Navigation*/ + +.header { + background-color: #282929; + /*position: fixed;*/ + width: 100%; + z-index: 510; +} + +.header ul { + margin: 0; + padding: 0; + list-style: none; + overflow: hidden; + /* background-color: #282929; */ + background-color: transparent; +} + +.header li a { + display: block; + padding: 30px 5px 10px 5px; + font-size: 1.5rem; + border-right: 1px solid #282929; + text-decoration: none; + /* background: rgba(255, 255, 255, 0.9) */ + background-color: #282929; +} + +.header li a:hover, +.header .menu-btn:hover { + background-color: #282929; +} + +.header .logo { + display: block; + float: left; + font-size: 2em; + padding: 5px; + text-decoration: none; +} + + +/* menu */ + +.header .menu { + clear: both; + max-height: 0; + transition: max-height .2s ease-out; +} + + +/* menu icon */ + +.header .menu-icon { + cursor: pointer; + float: right; + margin: 2%; + padding: 10px 20px; + position: relative; + user-select: none; +} + +.header .menu-icon .nav-icon { + background: #000; + display: block; + height: 5px; + position: relative; + transition: background .2s ease-out; + width: 30px; +} + +.header .menu-icon .nav-icon:before, +.header .menu-icon .nav-icon:after { + background: #000; + content: ''; + display: block; + height: 100%; + position: absolute; + transition: all .2s ease-out; + width: 100%; +} + +.header .menu-icon .nav-icon:before { + top: 20px; +} + +.header .menu-icon .nav-icon:after { + top: 10px; +} + + +/* menu btn */ + +.header .menu-btn { + display: none; +} + +.header .menu-btn:checked~.menu { + max-height: 1200px; +} + +.header .menu-btn:checked~.menu-icon .nav-icon { + background: transparent; +} + +.header .menu-btn:checked~.menu-icon .nav-icon:before { + transform: rotate(-45deg); + top: 0; +} + +.header .menu-btn:checked~.menu-icon .nav-icon:after { + transform: rotate(45deg); + top: 0; +} + + +/* menu content - larger screen*/ + +@media (min-width: 1132px) { + .header li { + float: left; + } + .header li a { + padding: 20px 15px 5px 0px; + font-size: 1rem; + border: none; + } + .header .menu { + clear: none; + float: right; + max-height: none; + } + .header .menu-icon { + display: none; + } +} + + +/* smaller screen*/ + +@media (max-width: 924px) { + .header li { + padding: 30px 5px 10px 5px; + } + .header li a { + font-size: 1.2rem; + } +} + +#overlay { + position: absolute; + display: none; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 999; + background-color: rgba(0, 0, 0, 0.5); + /*dim the background*/ +} + +.update-container { + display: flex; + align-items: center; + justify-content: center; +} + +#update-plain { + position: relative; +} + +#update-overlay { + position: absolute; + z-index: 502; + transform-origin: 50% 50%; + transition: transform 1.00s; +} + +address { + text-align: center; + margin-top: 5px; +} + +address table { + margin: 0 auto; + width: 100%; + font-style: normal; +} + +address td { + width: 50%; +} + +input[type="submit" i] { + margin: 0px 0 6px 0; + vertical-align: middle; + position: relative; + font-size: 16px; + font-weight: bold; + width: auto; + height: 45px; + z-index: 200; + width: 65%; + outline: none; +} + +input[type="submit"] { + border-radius: 30px; + background: #282929; + border: 1px solid #d2d2d2; + -webkit-transition: all 1s; + transition: all 1s; + margin-top: 2%; + margin-left: 2%; + outline: none; + z-index: auto; +} + +input[type="submit" i]:hover { + background-color: #f6f6f6; + color: #282929; + outline: none; +} + +input[type="file"] { + border-radius: 10px; + margin: 1%; + width: 390px; + margin-left: 45px; + margin-right: 28px; + outline: none; +} + +input { + border-radius: 10px; + background: #282929; + margin-left: 2%; + outline: none; +} + +.confi table td.input { + padding: 1px 0px 10px 0px; + outline: none; +} + +.confi table td.left { + padding: 0px 25px 0px 0px; +} + +.content #uploadbutton { + width: 400px; + outline: none; +} + +footer { + background-color: #f6f6f6; + padding: 1px 50px 1px 0px; + text-align: center; + text-decoration: none; + font-size: 0.8rem; + bottom: 0; + width: 100%; + position: fixed; +} + +footer nav :hover { + color: #b6b6b6; + font-weight: 600; +} + +footer td p { + text-align: left; + padding-left: 40%; +} + + +/* upload loader animation*/ + +.loader { + display: flex; + justify-content: center; + align-items: center; + width: 100px; + height: 100px; + background: transparent; + margin: 30px auto 0 auto; + border: solid 10px #b6b6b6; + border-top: solid 10px #c2d100; + border-radius: 50%; + opacity: 0; +} + +.loader.active { + animation: loading 4s ease-in-out; + animation-fill-mode: forwards; +} + +@keyframes loading { + 5% { + opacity: 1; + border-color: #b6b6b6; + } + 15% { + opacity: 1; + border-color: #c2d100; + } + 30% { + opacity: 1; + transform: rotate(180deg); + border-color: #b6b6b6; + } + 45% { + opacity: 1; + border-color: #c2d100; + } + 60% { + opacity: 1; + transform: rotate(180deg); + border-color: #b6b6b6; + } + 70% { + opacity: 1; + border-color: #c2d100; + } + 85% { + opacity: 1; + transform: rotate(180deg); + border-color: #c2d100; + } + 90% { + opacity: 1; + transform: rotate(1080deg); + border-color: #c2d100; + } + 99% { + opacity: 1; + transform: rotate(1080deg); + border-color: #c2d100; + } + 100% { + opacity: 1; + transform: rotate(1080deg); + border-color: #282929; + } +} + + +/*Chrome runable slider*/ + +@media screen and (-webkit-min-device-pixel-ratio:0) { + input[type='range'] { + overflow: hidden; + /* Standard */ + width: calc(99.9% - 1.5px); + -webkit-appearance: none; + background-color: transparent; + margin: 0 0 0; + } + input[type='range']::-webkit-slider-runnable-track { + height: fit-content; + /* -webkit-appearance: none; */ + color: #C2D100; + /* margin-top: -5px; */ + } + input[type='range']::-webkit-slider-thumb { + width: 20px; + -webkit-appearance: none; + height: 20px; + cursor: ew-resize; + border-radius: 5px; + background: #292659; + box-shadow: -1080px 10px 10px 1080px #C1D10A; + } + input:focus { + outline: none; + border-color: #C1D10A; + } +} + + +/** FF*/ + +input[type="range"]::-moz-range-progress { + background-color: #C1D10A; +} + +input[type="range"]::-moz-range-track { + background-color: transparent; +} + + +/* IE*/ + +input[type="range"]::-ms-fill-lower { + background-color: #C1D10A; +} + +input[type="range"]::-ms-fill-upper { + background-color: #C1D10A; +} \ No newline at end of file diff --git a/svelte/src/hooks.server.js b/svelte/src/hooks.server.js new file mode 100644 index 0000000..001e4f1 --- /dev/null +++ b/svelte/src/hooks.server.js @@ -0,0 +1,14 @@ +export const handle = async ({ event, resolve }) => { + let userid = event.cookies.get('userid'); + + if (!userid) { + // if this is the first time the user has visited this app, + // set a cookie so that we recognise them when they return + userid = crypto.randomUUID(); + event.cookies.set('userid', userid, { path: '/' }); + } + + event.locals.userid = userid; + + return resolve(event); +}; diff --git a/svelte/src/lib/Header.svelte b/svelte/src/lib/Header.svelte new file mode 100644 index 0000000..8a2616e --- /dev/null +++ b/svelte/src/lib/Header.svelte @@ -0,0 +1,27 @@ + + +
+ + + + + + + +
diff --git a/svelte/src/routes/+layout.svelte b/svelte/src/routes/+layout.svelte new file mode 100644 index 0000000..47b4a6b --- /dev/null +++ b/svelte/src/routes/+layout.svelte @@ -0,0 +1,13 @@ + + +
+ +
+ +
+ + diff --git a/svelte/src/routes/+page.js b/svelte/src/routes/+page.js new file mode 100644 index 0000000..189f71e --- /dev/null +++ b/svelte/src/routes/+page.js @@ -0,0 +1 @@ +export const prerender = true; diff --git a/svelte/src/routes/+page.svelte b/svelte/src/routes/+page.svelte new file mode 100644 index 0000000..43fe9ca --- /dev/null +++ b/svelte/src/routes/+page.svelte @@ -0,0 +1,15 @@ + + + + Home + + + +
+
+ Home +
+

Home

+
diff --git a/svelte/src/routes/chicken/+page.js b/svelte/src/routes/chicken/+page.js new file mode 100644 index 0000000..189f71e --- /dev/null +++ b/svelte/src/routes/chicken/+page.js @@ -0,0 +1 @@ +export const prerender = true; diff --git a/svelte/src/routes/chicken/+page.svelte b/svelte/src/routes/chicken/+page.svelte new file mode 100644 index 0000000..f530cb7 --- /dev/null +++ b/svelte/src/routes/chicken/+page.svelte @@ -0,0 +1,152 @@ + + + + Chicken + + + +
+
+ Chicken +
+

Chicken

+
+ + + + + + + + + + + + + +
+

Außenklappe

+
+ handle_button_outer(event)}/> +
Öffnen: + +
Schließen: + +
+
+
diff --git a/svelte/static/7Auwp_0qiz-afTLGLQjUwkQ.woff2 b/svelte/static/7Auwp_0qiz-afTLGLQjUwkQ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..fcdb7ce200330929d961a16e3bc26953a839c67a GIT binary patch literal 11528 zcmV+jE%(xQPew8T0RR9104)dr4gdfE0AsWO04%To0RR9100000000000000000000 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 literal 0 HcmV?d00001 diff --git a/svelte/static/favicon.png b/svelte/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..5c96c85d2307b764ecbc8bb2e9783ea82cb7552d GIT binary patch literal 13562 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 AR{#J2 literal 0 HcmV?d00001 diff --git a/svelte/static/hahn.svg b/svelte/static/hahn.svg new file mode 100644 index 0000000..a753273 --- /dev/null +++ b/svelte/static/hahn.svg @@ -0,0 +1,79 @@ + + + + +Created by potrace 1.15, written by Peter Selinger 2001-2017 + + + + + diff --git a/svelte/static/haus.svg b/svelte/static/haus.svg new file mode 100644 index 0000000..8510502 --- /dev/null +++ b/svelte/static/haus.svg @@ -0,0 +1,29 @@ + + + + +Created by potrace 1.15, written by Peter Selinger 2001-2017 + + + + + + + diff --git a/svelte/static/perinet-logo.png b/svelte/static/perinet-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e1639e8f59bac0d4f802b4ca518b3f4f3ee5e5ed GIT binary patch literal 5185 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 literal 0 HcmV?d00001 diff --git a/svelte/static/perinet-periNODE.svg b/svelte/static/perinet-periNODE.svg new file mode 100644 index 0000000..4c63229 --- /dev/null +++ b/svelte/static/perinet-periNODE.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svelte/static/perinet-security.svg b/svelte/static/perinet-security.svg new file mode 100644 index 0000000..aeb599d --- /dev/null +++ b/svelte/static/perinet-security.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svelte/static/perinet-update.svg b/svelte/static/perinet-update.svg new file mode 100644 index 0000000..0507d4e --- /dev/null +++ b/svelte/static/perinet-update.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svelte/static/update-arrows.png b/svelte/static/update-arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..b4de910800adeab52b1fc832b628c3ce1e6bc830 GIT binary patch literal 5027 zcmb7I2{@E%`=1#m2BGXpX;9f_##m=8g&A8}LK4Y37|YBw3uCE<6rsYgW(is1Sfh|p zlTukC9in8=f{rCytLS^FufFqj&iB9mb6xK{^Sr*dhP| zfi_xN;Ov3#{I!dJ18`61@lywZpk_ozXS%cXeyle+7~$zd_97sd!4v=ofeiLADW2Ye z1iHKz!H-BXguiXR1(zrK7{U)}TcfNgrUZYYML3n<5N_k>9Ukb7@qzC#5-?z5fdIh- zx~DudIEX~UG7aJDak0SfwZ}-f{JIG}&=BryZ6|L^rV`|}5!wh8+(Fmwa1x# zcLqj=aDO_Tf<+=jLqidvng}x052=B{V2~&@5{*^|EYxXXB)TV4okUYu3-K)mjzIIK z5-D^dnIyj!)613Kenero} zzxe!se{rM}eg9#eHRKm_fWE(|7{)|{FgFlbbJUv#CKBvQo_F{pgD$7 z2uOPZjm)5W6YwDf5?x`Pi8WrZrsN7f1# zJ^VN558A%PwI=%jVKvtse?pd~rgl`aFEI$fX!hnN@|Jj09Sw|*jyf9gErm5Ev6jJ} zeuVu5k{{jw=k!03LqwlnfVCon7;7pyNFoBXpx0+!_i_G-0nxNkfI!#8vyL79dkk1Q ztTmuIM(Zz+-2>0IF`#N8V;cDWg;s}F&8e{dS8ij%N)l&bmjs)&oAT#c%FH{z_)@QS?b#VP zHmc`56yw&u<@}SHl*j1S1!_3@jdn40`=Zi$W{8nutt(qFS04POG1E8tSfr4KO5Fu8 zTc{%*`zgd*p6ED4jfA{)EQgt=`yJ70_$g`20-wF6~0RRf_fV zix!+^nR5lPGj?R=%nXMmIkw4h=8^C#@_CBe^5^}l5k2uK9ynu%^n9<)mK8dg z(#cG`I=c|xw{XQOQEKO1S&e%|H2-qm9{YXl7b@w6{;JOucd|SRfe&JO{K5%^J6Ahr zZ$@yx7#(z|n_jqavUxFkR`)oY&xC(RjOah!3VWB7u`ILvw8J9OkRTqRb9u42J*!&b zk@g?nm2x(7FyxVkhNBzcFzMcoB_1=-a;-{xK##k%-BL3vVOur62dPIMu@$G_wHS~9 zf)1Y;L9DQZHwgE%IF8`6&DN?}K(%553{->zD=~5!&iTSJS8mYetoE zE+3pJRLx?!WDUd4>Q+rU+b>`#+Nj~M=Btw)j~&YZ2Y-_n$1laNkdiZ^>T((`NXl8b zsLaEOgb*GCS@XaY!G4VzT7<#XHPjtY?@&>X8%UlAJho4ZAjG%n(t1Iwvo z&zwT5^TfOEp-}t8YV!^h@1_JNU#Wbk-nsF8MywMYMUN_{aSnG|MVbt>3ryOvv`uGt zF1%!iyIy4%bJWbkqqjB{CreSLgoSRmuSdIX3P0zq|7B8hVrGL(+d%OdtG$(7dq*2M zw(;kSi?;Edm}I;4&GWfrF<>oi#dM>Wb**7T$d@0VJVLoqwCd5amN&0q_?ecfG~9~r zHS{u150ArS_>E)3iQZF=Z(KS4pMxL;uU&7kM2+|)Aqj;OpQ~M?tf#hRGnicAL6r}2 zr)VsFmOFUY(p=`v?xE|`CN2(TVs@%^!ed9sUg!I7ww2={J>a+Za!+R zGG;dcVutLK;55lNX=Xe!d`RaaI&1O}M1sx+8{Tfk#5RfGq{a6y4OGY|X_?<3ZqtZ4i+a7Tps@D^??9=hu*Gg4$YopvC=6*l}g}bVI|8s|?u(NJ+ za(Y@!nufv_^-rLjh8|D^&j2Ls+F;WKXnG;EuOkta_$A1=1)s zsPnS?I)jUN(0IOIoC}Ek`i2v>;qAI|gQX_zx~!UGDi`MOJa^@ol(+{J{x+K(Wo^Hk zq>SnfiwG4Uq?u?H>qvZbu{l`M&%fkc0OS9XiIUFl+dS$qF%zhqdQiY6>l7@)WTDRh z*a0$fBt#wP9ts1noe@%YezTwK9$-BB-f>M9&W)0J6jU=KMJ3~ICew188d&(_ z{Fo?;QnaEZgbzbrJdsQtW4rD5hxRDtjEon2R?m0xb!{DV+APSge#v%6(PJtX5z0M^ zcRoOadNTH)XRDup~*!qH&Hyw? zUCD;UXW9-rD!{vkN?`+92Jw{P+eIqFki4|fK?#;}z?gp)hCGzppvf|XT^1A+6F>A& z5)h@~TnjILe+akRMm0}`%B`YvZFZ@RU`68UYU(e-_;Zr;tNdWHWq1*ssqP_&KIm3S zsHtxMRP@w)!@G?!X?p&YL>h(C(ux+^8{jqOp=Am<9&y7 za5!ubSC4KMoxLs|tC(*Q6x8){97E11+G2^@T+@_Vz6`bGloX^r-TKj~>y8o_?-eWd z^<6rz_&mO$edTc1otDLr0~hD}RDHJEsnWo6jMl-&;uABw@OOK0W<1Mn1|d%I$0~Mw z$P%sWn&osd7)USzT!JCHE}k#_v+zkZR9dnw?pXIwvx5*(8&AL8To?X=40{e@m#4`{ zt=z_i3oD#hScwfHC9V|1H&gIZBO|bnvX2VWWU}1#`XySjkT!OA8NHQT(GECB)%5tp z9oBtdwE_w6I~4K-^u<4#b$Mri|FBOib|3_R^|x$fUrB2+RjqS7Gw+z<_qfcqZm&JE0otPTf@MUM4^9{%MycKUm_Cv-42|EJ` z8%nl16#Em-fHQXOenFa;aeafU3n9!#>(^}>6Pdb(-bEyQE*5tn_!D#>YVG%!)t1UR zByB6f!QOPvIgYAJ)@8z^ul6mT5DUr|&F-P}`sg<{m#?wpW`v&OrEi>#2#o7^)Unmv znRE$9s@$$c0vu5u=}zNDm0fuufq^A|;e&s1FZEqIlp$`3W+S5%; z-a(YH#&)pS!cA+^<fv=D^hz~V(D@GmgEU%h zR=iF|51ieUg4OJVmJXMNLvDh$0hX1u@8{YB0HNPd_`RMWx-Yc zMo?pWSaxVaHmtHszV*xWys|`-xL(d-u?5OkW1Jvg-y1S!h0z8XwGep2kgo!RM_L*I(+FKZJ8r9B;6DrSq z#m-GJZmN|?W@U?Z_r@<6c($%oU7c=Ca6)dkoDBHz@XAG?FIqm~_brU$-HQ8|>QWEo zFkaO!u{C=~ywoU0o(&#ORUpJ}?@o6dganGb7}^q8E7T~$Ohh#<`#K>V``Tu$oV7I0 zJbLKcawSBCVkYyONW3Lyl{3+z_ln2kx5U;rT|+Ur3d6|fQb?=D+c7ON-u$wa*Z1wX zmv=)(uPtmS-8;9%9tU|}?02fyUG&CzcStGZ5J6_ZMQy{XwI2EStvj@tsa1|$Yay$E z;VuGx(z(YcU91YK*;1kIZoP@8*Dy@ih!;469oPK)q2DDdj5EU-KMZ|xy0XyxGKC|O z(@+hZrfgps2}`#qG;a|+!k@@vHlXA_(-;xe@?g&1Qv$Vdu=+rXh`Vz9(#uy zoInGR3}6?{jt}098H-Oy>g?=~6v{bL0v^v(Q31d8?0*-(ozG@!rdj8r@<*|DDQ}${ z7>-8wkZ!!N;`u_CqN6hBXQ6x6ANF|x2?UH56Kamn4F1K&Pv#4933=G+=_jXaSJ&fP|gau}s zUMy7U+TGinH!){d&A!}?l%kwne4kdx({4o&t2tV4x#Hsi zuQ^=XOP{(FQ|#S%w^}aJWoB^Kl<*f?WN+fvduL| z`|xku%F~qZv{z@ZiZYXuC?Z($NM{-MG4UDiw1sM&OpQo>)NrBS#z-aO+P9)lo V8O*F0xpeKnHA}n=uFAwC`d_w$Sn&V= literal 0 HcmV?d00001 diff --git a/svelte/static/update-plain.png b/svelte/static/update-plain.png new file mode 100644 index 0000000000000000000000000000000000000000..3a55ac78308fcd62263d105e3c73e1a08050e1c4 GIT binary patch literal 6566 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 literal 0 HcmV?d00001 diff --git a/svelte/svelte.config.js b/svelte/svelte.config.js new file mode 100644 index 0000000..0bf629b --- /dev/null +++ b/svelte/svelte.config.js @@ -0,0 +1,12 @@ +import adapter from '@sveltejs/adapter-static'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + kit: { + adapter: adapter({ + fallback: "200.html" + }) + } +}; + +export default config; diff --git a/svelte/vite.config.js b/svelte/vite.config.js new file mode 100644 index 0000000..11f6c22 --- /dev/null +++ b/svelte/vite.config.js @@ -0,0 +1,7 @@ +import { sveltekit } from '@sveltejs/kit/vite'; + +const config = { + plugins: [sveltekit()] +}; + +export default config;