黄琪勇 1 year ago
parent
commit
d141b0f42e

+ 0 - 17
.editorconfig

@@ -1,19 +1,3 @@
-<<<<<<< HEAD
-# http://editorconfig.org
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.md]
-insert_final_newline = false
-trim_trailing_whitespace = false
-=======
 # http://editorconfig.org
 root = true
 
@@ -28,4 +12,3 @@ trim_trailing_whitespace = true
 [*.md]
 insert_final_newline = false
 trim_trailing_whitespace = false
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29

+ 1 - 5
dev-dist/registerSW.js

@@ -1,5 +1 @@
-if ('serviceWorker' in navigator)
-  navigator.serviceWorker.register('/dev-sw.js?dev-sw', {
-    scope: '/',
-    type: 'classic'
-  });
+if('serviceWorker' in navigator) navigator.serviceWorker.register('/dev-sw.js?dev-sw', { scope: '/', type: 'classic' })

+ 1 - 9
dev-dist/sw.js

@@ -79,18 +79,10 @@ define(['./workbox-5357ef54'], (function (workbox) { 'use strict';
    */
   workbox.precacheAndRoute([{
     "url": "registerSW.js",
-    "revision": "c13177a9267a39c567afc9864c87d7e8"
+    "revision": "3ca0b8505b4bec776b69afdba2768812"
   }, {
     "url": "index.html",
-<<<<<<< HEAD
-<<<<<<< HEAD
-    "revision": "0.opm4grrrkk"
-=======
-    "revision": "0.5f2kh264hgo"
->>>>>>> iteration-20240417-subject
-=======
     "revision": "0.37gnmgfpud8"
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29
   }], {});
   workbox.cleanupOutdatedCaches();
   workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {

+ 0 - 6585
package-lock.json

@@ -1,11 +1,7 @@
 {
   "name": "vue-vite-h5",
   "version": "0.2.0",
-<<<<<<< HEAD
-  "lockfileVersion": 2,
-=======
   "lockfileVersion": 3,
->>>>>>> feature-3.20
   "requires": true,
   "packages": {
     "": {
@@ -1661,24 +1657,6 @@
       "dev": true,
       "license": "MIT"
     },
-<<<<<<< HEAD
-    "node_modules/@esbuild/win32-x64": {
-      "version": "0.18.20",
-      "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ],
-      "engines": {
-        "node": ">=12"
-      }
-    },
-=======
->>>>>>> feature-3.20
     "node_modules/@eslint-community/eslint-utils": {
       "version": "4.4.0",
       "dev": true,
@@ -1723,8 +1701,6 @@
         "url": "https://opencollective.com/eslint"
       }
     },
-<<<<<<< HEAD
-=======
     "node_modules/@eslint/eslintrc/node_modules/ajv": {
       "version": "6.12.6",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -1741,7 +1717,6 @@
         "url": "https://github.com/sponsors/epoberezkin"
       }
     },
->>>>>>> feature-3.20
     "node_modules/@eslint/eslintrc/node_modules/globals": {
       "version": "13.21.0",
       "dev": true,
@@ -1756,15 +1731,12 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-<<<<<<< HEAD
-=======
     "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
       "dev": true
     },
->>>>>>> feature-3.20
     "node_modules/@eslint/eslintrc/node_modules/type-fest": {
       "version": "0.20.2",
       "dev": true,
@@ -3032,12 +3004,7 @@
     },
     "node_modules/@xmldom/xmldom": {
       "version": "0.8.10",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
-      "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
-=======
       "license": "MIT",
->>>>>>> feature-3.20
       "engines": {
         "node": ">=10.0.0"
       }
@@ -3073,15 +3040,6 @@
       }
     },
     "node_modules/ajv": {
-<<<<<<< HEAD
-      "version": "6.12.6",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-=======
       "version": "8.12.0",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
       "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
@@ -3089,7 +3047,6 @@
         "fast-deep-equal": "^3.1.1",
         "json-schema-traverse": "^1.0.0",
         "require-from-string": "^2.0.2",
->>>>>>> feature-3.20
         "uri-js": "^4.2.2"
       },
       "funding": {
@@ -3789,11 +3746,7 @@
     },
     "node_modules/copy-anything": {
       "version": "2.0.6",
-<<<<<<< HEAD
-      "dev": true,
-=======
       "devOptional": true,
->>>>>>> feature-3.20
       "license": "MIT",
       "dependencies": {
         "is-what": "^3.14.1"
@@ -3824,21 +3777,11 @@
     },
     "node_modules/core-util-is": {
       "version": "1.0.3",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
-    },
-    "node_modules/cos-js-sdk-v5": {
-      "version": "1.4.20",
-      "resolved": "https://registry.npmmirror.com/cos-js-sdk-v5/-/cos-js-sdk-v5-1.4.20.tgz",
-      "integrity": "sha512-cGpmVoKN3iYBtWo8Lwp059fOrT4yyb/+I6fVS++Zyop/ZFJswDRkjnrASViwYd8N+hi3qWVAa6ruvvBsLutEwg==",
-=======
       "license": "MIT"
     },
     "node_modules/cos-js-sdk-v5": {
       "version": "1.4.20",
       "license": "ISC",
->>>>>>> feature-3.20
       "dependencies": {
         "@xmldom/xmldom": "^0.8.6"
       }
@@ -4208,10 +4151,6 @@
     },
     "node_modules/errno": {
       "version": "0.1.8",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "MIT",
       "optional": true,
       "dependencies": {
@@ -4308,10 +4247,6 @@
     },
     "node_modules/esbuild": {
       "version": "0.18.20",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "hasInstallScript": true,
       "license": "MIT",
       "bin": {
@@ -4516,8 +4451,6 @@
         "url": "https://opencollective.com/eslint"
       }
     },
-<<<<<<< HEAD
-=======
     "node_modules/eslint/node_modules/ajv": {
       "version": "6.12.6",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -4534,7 +4467,6 @@
         "url": "https://github.com/sponsors/epoberezkin"
       }
     },
->>>>>>> feature-3.20
     "node_modules/eslint/node_modules/ansi-styles": {
       "version": "4.3.0",
       "dev": true,
@@ -4636,15 +4568,12 @@
         "node": ">=8"
       }
     },
-<<<<<<< HEAD
-=======
     "node_modules/eslint/node_modules/json-schema-traverse": {
       "version": "0.4.1",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
       "dev": true
     },
->>>>>>> feature-3.20
     "node_modules/eslint/node_modules/supports-color": {
       "version": "7.2.0",
       "dev": true,
@@ -4887,12 +4816,7 @@
     },
     "node_modules/file-saver": {
       "version": "2.0.5",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
-      "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
-=======
       "license": "MIT"
->>>>>>> feature-3.20
     },
     "node_modules/filelist": {
       "version": "1.0.4",
@@ -5111,8 +5035,6 @@
       "version": "1.0.0",
       "license": "ISC"
     },
-<<<<<<< HEAD
-=======
     "node_modules/fsevents": {
       "version": "2.3.3",
       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -5126,7 +5048,6 @@
         "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
       }
     },
->>>>>>> feature-3.20
     "node_modules/function-bind": {
       "version": "1.1.1",
       "license": "MIT"
@@ -5572,10 +5493,6 @@
     },
     "node_modules/image-size": {
       "version": "0.5.5",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "MIT",
       "optional": true,
       "bin": {
@@ -5587,12 +5504,7 @@
     },
     "node_modules/immediate": {
       "version": "3.0.6",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
-      "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
-=======
       "license": "MIT"
->>>>>>> feature-3.20
     },
     "node_modules/import-fresh": {
       "version": "3.3.0",
@@ -6293,11 +6205,7 @@
     },
     "node_modules/is-what": {
       "version": "3.14.1",
-<<<<<<< HEAD
-      "dev": true,
-=======
       "devOptional": true,
->>>>>>> feature-3.20
       "license": "MIT"
     },
     "node_modules/is-windows": {
@@ -6489,15 +6397,9 @@
       "license": "(AFL-2.1 OR BSD-3-Clause)"
     },
     "node_modules/json-schema-traverse": {
-<<<<<<< HEAD
-      "version": "0.4.1",
-      "dev": true,
-      "license": "MIT"
-=======
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
       "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
->>>>>>> feature-3.20
     },
     "node_modules/json-stable-stringify-without-jsonify": {
       "version": "1.0.1",
@@ -6530,12 +6432,7 @@
     },
     "node_modules/jszip": {
       "version": "3.10.1",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
-      "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
-=======
       "license": "(MIT OR GPL-3.0-or-later)",
->>>>>>> feature-3.20
       "dependencies": {
         "lie": "~3.3.0",
         "pako": "~1.0.2",
@@ -6545,21 +6442,11 @@
     },
     "node_modules/jszip/node_modules/isarray": {
       "version": "1.0.0",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
-    },
-    "node_modules/jszip/node_modules/readable-stream": {
-      "version": "2.3.8",
-      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
-      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
-=======
       "license": "MIT"
     },
     "node_modules/jszip/node_modules/readable-stream": {
       "version": "2.3.8",
       "license": "MIT",
->>>>>>> feature-3.20
       "dependencies": {
         "core-util-is": "~1.0.0",
         "inherits": "~2.0.3",
@@ -6572,21 +6459,11 @@
     },
     "node_modules/jszip/node_modules/safe-buffer": {
       "version": "5.1.2",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-    },
-    "node_modules/jszip/node_modules/string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-=======
       "license": "MIT"
     },
     "node_modules/jszip/node_modules/string_decoder": {
       "version": "1.1.1",
       "license": "MIT",
->>>>>>> feature-3.20
       "dependencies": {
         "safe-buffer": "~5.1.0"
       }
@@ -6615,11 +6492,7 @@
     },
     "node_modules/less": {
       "version": "4.2.0",
-<<<<<<< HEAD
-      "dev": true,
-=======
       "devOptional": true,
->>>>>>> feature-3.20
       "license": "Apache-2.0",
       "dependencies": {
         "copy-anything": "^2.0.1",
@@ -6667,12 +6540,7 @@
     },
     "node_modules/lie": {
       "version": "3.3.0",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz",
-      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
-=======
       "license": "MIT",
->>>>>>> feature-3.20
       "dependencies": {
         "immediate": "~3.0.5"
       }
@@ -6953,10 +6821,6 @@
     },
     "node_modules/make-dir": {
       "version": "2.1.0",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "MIT",
       "optional": true,
       "dependencies": {
@@ -6969,10 +6833,6 @@
     },
     "node_modules/make-dir/node_modules/semver": {
       "version": "5.7.2",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "ISC",
       "optional": true,
       "bin": {
@@ -7031,10 +6891,6 @@
     },
     "node_modules/mime": {
       "version": "1.6.0",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "MIT",
       "optional": true,
       "bin": {
@@ -7218,10 +7074,6 @@
     },
     "node_modules/needle": {
       "version": "3.2.0",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "MIT",
       "optional": true,
       "dependencies": {
@@ -7238,10 +7090,6 @@
     },
     "node_modules/needle/node_modules/debug": {
       "version": "3.2.7",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "MIT",
       "optional": true,
       "dependencies": {
@@ -7628,12 +7476,7 @@
     },
     "node_modules/pako": {
       "version": "1.0.11",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
-      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
-=======
       "license": "(MIT AND Zlib)"
->>>>>>> feature-3.20
     },
     "node_modules/param-case": {
       "version": "3.0.4",
@@ -7678,11 +7521,7 @@
     },
     "node_modules/parse-node-version": {
       "version": "1.0.1",
-<<<<<<< HEAD
-      "dev": true,
-=======
       "devOptional": true,
->>>>>>> feature-3.20
       "license": "MIT",
       "engines": {
         "node": ">= 0.10"
@@ -7795,10 +7634,6 @@
     },
     "node_modules/pify": {
       "version": "4.0.1",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "MIT",
       "optional": true,
       "engines": {
@@ -8065,12 +7900,7 @@
     },
     "node_modules/process-nextick-args": {
       "version": "2.0.1",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
-=======
       "license": "MIT"
->>>>>>> feature-3.20
     },
     "node_modules/proxy-from-env": {
       "version": "1.1.0",
@@ -8078,10 +7908,6 @@
     },
     "node_modules/prr": {
       "version": "1.0.1",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "MIT",
       "optional": true
     },
@@ -8499,25 +8325,14 @@
       }
     },
     "node_modules/rollup": {
-<<<<<<< HEAD
-      "version": "3.28.0",
-      "dev": true,
-      "license": "MIT",
-=======
       "version": "2.79.1",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
       "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
->>>>>>> feature-3.20
       "bin": {
         "rollup": "dist/bin/rollup"
       },
       "engines": {
-<<<<<<< HEAD
-        "node": ">=14.18.0",
-        "npm": ">=8.0.0"
-=======
         "node": ">=10.0.0"
->>>>>>> feature-3.20
       },
       "optionalDependencies": {
         "fsevents": "~2.3.2"
@@ -8638,10 +8453,6 @@
     },
     "node_modules/sax": {
       "version": "1.2.4",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "ISC",
       "optional": true
     },
@@ -8693,12 +8504,7 @@
     },
     "node_modules/setimmediate": {
       "version": "1.0.5",
-<<<<<<< HEAD
-      "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
-      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
-=======
       "license": "MIT"
->>>>>>> feature-3.20
     },
     "node_modules/shebang-command": {
       "version": "2.0.0",
@@ -9404,11 +9210,7 @@
     },
     "node_modules/typescript": {
       "version": "5.1.6",
-<<<<<<< HEAD
-      "dev": true,
-=======
       "devOptional": true,
->>>>>>> feature-3.20
       "license": "Apache-2.0",
       "bin": {
         "tsc": "bin/tsc",
@@ -9700,10 +9502,6 @@
     },
     "node_modules/vite": {
       "version": "4.4.9",
-<<<<<<< HEAD
-      "dev": true,
-=======
->>>>>>> feature-3.20
       "license": "MIT",
       "dependencies": {
         "esbuild": "^0.18.10",
@@ -9781,23 +9579,6 @@
         "node": ">= 8.0.0"
       }
     },
-<<<<<<< HEAD
-    "node_modules/vite-plugin-eslint/node_modules/rollup": {
-      "version": "2.79.1",
-      "dev": true,
-      "license": "MIT",
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-=======
->>>>>>> feature-3.20
     "node_modules/vite-plugin-mkcert": {
       "version": "1.16.0",
       "dev": true,
@@ -9837,8 +9618,6 @@
         "workbox-window": "^7.0.0"
       }
     },
-<<<<<<< HEAD
-=======
     "node_modules/vite/node_modules/rollup": {
       "version": "3.29.4",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
@@ -9854,7 +9633,6 @@
         "fsevents": "~2.3.2"
       }
     },
->>>>>>> feature-3.20
     "node_modules/vooks": {
       "version": "0.2.12",
       "resolved": "https://registry.npmmirror.com/vooks/-/vooks-0.2.12.tgz",
@@ -10316,23 +10094,6 @@
         "node": ">=16.0.0"
       }
     },
-<<<<<<< HEAD
-    "node_modules/workbox-build/node_modules/ajv": {
-      "version": "8.12.0",
-      "license": "MIT",
-      "dependencies": {
-        "fast-deep-equal": "^3.1.1",
-        "json-schema-traverse": "^1.0.0",
-        "require-from-string": "^2.0.2",
-        "uri-js": "^4.2.2"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/epoberezkin"
-      }
-    },
-=======
->>>>>>> feature-3.20
     "node_modules/workbox-build/node_modules/fs-extra": {
       "version": "9.1.0",
       "license": "MIT",
@@ -10346,13 +10107,6 @@
         "node": ">=10"
       }
     },
-<<<<<<< HEAD
-    "node_modules/workbox-build/node_modules/json-schema-traverse": {
-      "version": "1.0.0",
-      "license": "MIT"
-    },
-=======
->>>>>>> feature-3.20
     "node_modules/workbox-build/node_modules/jsonfile": {
       "version": "6.1.0",
       "license": "MIT",
@@ -10373,22 +10127,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-<<<<<<< HEAD
-    "node_modules/workbox-build/node_modules/rollup": {
-      "version": "2.79.1",
-      "license": "MIT",
-      "bin": {
-        "rollup": "dist/bin/rollup"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "optionalDependencies": {
-        "fsevents": "~2.3.2"
-      }
-    },
-=======
->>>>>>> feature-3.20
     "node_modules/workbox-build/node_modules/source-map": {
       "version": "0.8.0-beta.0",
       "license": "BSD-3-Clause",
@@ -10757,6328 +10495,5 @@
         "tslib": "2.3.0"
       }
     }
-<<<<<<< HEAD
-  },
-  "dependencies": {
-    "@aashutoshrathi/word-wrap": {
-      "version": "1.2.6",
-      "dev": true
-    },
-    "@ampproject/remapping": {
-      "version": "2.2.1",
-      "requires": {
-        "@jridgewell/gen-mapping": "^0.3.0",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      }
-    },
-    "@antfu/utils": {
-      "version": "0.7.6",
-      "dev": true
-    },
-    "@apideck/better-ajv-errors": {
-      "version": "0.3.6",
-      "requires": {
-        "json-schema": "^0.4.0",
-        "jsonpointer": "^5.0.0",
-        "leven": "^3.1.0"
-      }
-    },
-    "@babel/code-frame": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/highlight": "^7.22.10",
-        "chalk": "^2.4.2"
-      }
-    },
-    "@babel/compat-data": {
-      "version": "7.22.9"
-    },
-    "@babel/core": {
-      "version": "7.22.10",
-      "requires": {
-        "@ampproject/remapping": "^2.2.0",
-        "@babel/code-frame": "^7.22.10",
-        "@babel/generator": "^7.22.10",
-        "@babel/helper-compilation-targets": "^7.22.10",
-        "@babel/helper-module-transforms": "^7.22.9",
-        "@babel/helpers": "^7.22.10",
-        "@babel/parser": "^7.22.10",
-        "@babel/template": "^7.22.5",
-        "@babel/traverse": "^7.22.10",
-        "@babel/types": "^7.22.10",
-        "convert-source-map": "^1.7.0",
-        "debug": "^4.1.0",
-        "gensync": "^1.0.0-beta.2",
-        "json5": "^2.2.2",
-        "semver": "^6.3.1"
-      }
-    },
-    "@babel/generator": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/types": "^7.22.10",
-        "@jridgewell/gen-mapping": "^0.3.2",
-        "@jridgewell/trace-mapping": "^0.3.17",
-        "jsesc": "^2.5.1"
-      }
-    },
-    "@babel/helper-annotate-as-pure": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-builder-binary-assignment-operator-visitor": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/types": "^7.22.10"
-      }
-    },
-    "@babel/helper-compilation-targets": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/compat-data": "^7.22.9",
-        "@babel/helper-validator-option": "^7.22.5",
-        "browserslist": "^4.21.9",
-        "lru-cache": "^5.1.1",
-        "semver": "^6.3.1"
-      }
-    },
-    "@babel/helper-create-class-features-plugin": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.22.5",
-        "@babel/helper-environment-visitor": "^7.22.5",
-        "@babel/helper-function-name": "^7.22.5",
-        "@babel/helper-member-expression-to-functions": "^7.22.5",
-        "@babel/helper-optimise-call-expression": "^7.22.5",
-        "@babel/helper-replace-supers": "^7.22.9",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.6",
-        "semver": "^6.3.1"
-      }
-    },
-    "@babel/helper-create-regexp-features-plugin": {
-      "version": "7.22.9",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.22.5",
-        "regexpu-core": "^5.3.1",
-        "semver": "^6.3.1"
-      }
-    },
-    "@babel/helper-define-polyfill-provider": {
-      "version": "0.4.2",
-      "requires": {
-        "@babel/helper-compilation-targets": "^7.22.6",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "debug": "^4.1.1",
-        "lodash.debounce": "^4.0.8",
-        "resolve": "^1.14.2"
-      }
-    },
-    "@babel/helper-environment-visitor": {
-      "version": "7.22.5"
-    },
-    "@babel/helper-function-name": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/template": "^7.22.5",
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-hoist-variables": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-member-expression-to-functions": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-module-imports": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-module-transforms": {
-      "version": "7.22.9",
-      "requires": {
-        "@babel/helper-environment-visitor": "^7.22.5",
-        "@babel/helper-module-imports": "^7.22.5",
-        "@babel/helper-simple-access": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.6",
-        "@babel/helper-validator-identifier": "^7.22.5"
-      }
-    },
-    "@babel/helper-optimise-call-expression": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-plugin-utils": {
-      "version": "7.22.5"
-    },
-    "@babel/helper-remap-async-to-generator": {
-      "version": "7.22.9",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.22.5",
-        "@babel/helper-environment-visitor": "^7.22.5",
-        "@babel/helper-wrap-function": "^7.22.9"
-      }
-    },
-    "@babel/helper-replace-supers": {
-      "version": "7.22.9",
-      "requires": {
-        "@babel/helper-environment-visitor": "^7.22.5",
-        "@babel/helper-member-expression-to-functions": "^7.22.5",
-        "@babel/helper-optimise-call-expression": "^7.22.5"
-      }
-    },
-    "@babel/helper-simple-access": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-skip-transparent-expression-wrappers": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-split-export-declaration": {
-      "version": "7.22.6",
-      "requires": {
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/helper-string-parser": {
-      "version": "7.22.5"
-    },
-    "@babel/helper-validator-identifier": {
-      "version": "7.22.5"
-    },
-    "@babel/helper-validator-option": {
-      "version": "7.22.5"
-    },
-    "@babel/helper-wrap-function": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-function-name": "^7.22.5",
-        "@babel/template": "^7.22.5",
-        "@babel/types": "^7.22.10"
-      }
-    },
-    "@babel/helpers": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/template": "^7.22.5",
-        "@babel/traverse": "^7.22.10",
-        "@babel/types": "^7.22.10"
-      }
-    },
-    "@babel/highlight": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-validator-identifier": "^7.22.5",
-        "chalk": "^2.4.2",
-        "js-tokens": "^4.0.0"
-      }
-    },
-    "@babel/parser": {
-      "version": "7.22.10"
-    },
-    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
-        "@babel/plugin-transform-optional-chaining": "^7.22.5"
-      }
-    },
-    "@babel/plugin-proposal-private-property-in-object": {
-      "version": "7.21.0-placeholder-for-preset-env.2"
-    },
-    "@babel/plugin-syntax-async-generators": {
-      "version": "7.8.4",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-class-properties": {
-      "version": "7.12.13",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.12.13"
-      }
-    },
-    "@babel/plugin-syntax-class-static-block": {
-      "version": "7.14.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-dynamic-import": {
-      "version": "7.8.3",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-export-namespace-from": {
-      "version": "7.8.3",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.3"
-      }
-    },
-    "@babel/plugin-syntax-import-assertions": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-syntax-import-attributes": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-syntax-import-meta": {
-      "version": "7.10.4",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@babel/plugin-syntax-json-strings": {
-      "version": "7.8.3",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-jsx": {
-      "version": "7.22.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-syntax-logical-assignment-operators": {
-      "version": "7.10.4",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@babel/plugin-syntax-nullish-coalescing-operator": {
-      "version": "7.8.3",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-numeric-separator": {
-      "version": "7.10.4",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.10.4"
-      }
-    },
-    "@babel/plugin-syntax-object-rest-spread": {
-      "version": "7.8.3",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-optional-catch-binding": {
-      "version": "7.8.3",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-optional-chaining": {
-      "version": "7.8.3",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.8.0"
-      }
-    },
-    "@babel/plugin-syntax-private-property-in-object": {
-      "version": "7.14.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-top-level-await": {
-      "version": "7.14.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.14.5"
-      }
-    },
-    "@babel/plugin-syntax-typescript": {
-      "version": "7.22.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-syntax-unicode-sets-regex": {
-      "version": "7.18.6",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.18.6",
-        "@babel/helper-plugin-utils": "^7.18.6"
-      }
-    },
-    "@babel/plugin-transform-arrow-functions": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-async-generator-functions": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-environment-visitor": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-remap-async-to-generator": "^7.22.9",
-        "@babel/plugin-syntax-async-generators": "^7.8.4"
-      }
-    },
-    "@babel/plugin-transform-async-to-generator": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-module-imports": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-remap-async-to-generator": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-block-scoped-functions": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-block-scoping": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-class-properties": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-class-static-block": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-class-static-block": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-classes": {
-      "version": "7.22.6",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.22.5",
-        "@babel/helper-compilation-targets": "^7.22.6",
-        "@babel/helper-environment-visitor": "^7.22.5",
-        "@babel/helper-function-name": "^7.22.5",
-        "@babel/helper-optimise-call-expression": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-replace-supers": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.6",
-        "globals": "^11.1.0"
-      }
-    },
-    "@babel/plugin-transform-computed-properties": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/template": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-destructuring": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-dotall-regex": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-duplicate-keys": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-dynamic-import": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3"
-      }
-    },
-    "@babel/plugin-transform-exponentiation-operator": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-export-namespace-from": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
-      }
-    },
-    "@babel/plugin-transform-for-of": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-function-name": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-compilation-targets": "^7.22.5",
-        "@babel/helper-function-name": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-json-strings": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-json-strings": "^7.8.3"
-      }
-    },
-    "@babel/plugin-transform-literals": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-logical-assignment-operators": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
-      }
-    },
-    "@babel/plugin-transform-member-expression-literals": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-modules-amd": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-module-transforms": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-modules-commonjs": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-module-transforms": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-simple-access": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-modules-systemjs": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-hoist-variables": "^7.22.5",
-        "@babel/helper-module-transforms": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-validator-identifier": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-modules-umd": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-module-transforms": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-named-capturing-groups-regex": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-new-target": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-nullish-coalescing-operator": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
-      }
-    },
-    "@babel/plugin-transform-numeric-separator": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-numeric-separator": "^7.10.4"
-      }
-    },
-    "@babel/plugin-transform-object-rest-spread": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/compat-data": "^7.22.5",
-        "@babel/helper-compilation-targets": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-transform-parameters": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-object-super": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-replace-supers": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-optional-catch-binding": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
-      }
-    },
-    "@babel/plugin-transform-optional-chaining": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
-      }
-    },
-    "@babel/plugin-transform-parameters": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-private-methods": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-create-class-features-plugin": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-private-property-in-object": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.22.5",
-        "@babel/helper-create-class-features-plugin": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
-      }
-    },
-    "@babel/plugin-transform-property-literals": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-regenerator": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "regenerator-transform": "^0.15.2"
-      }
-    },
-    "@babel/plugin-transform-reserved-words": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-shorthand-properties": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-spread": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-sticky-regex": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-template-literals": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-typeof-symbol": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-typescript": {
-      "version": "7.22.10",
-      "dev": true,
-      "requires": {
-        "@babel/helper-annotate-as-pure": "^7.22.5",
-        "@babel/helper-create-class-features-plugin": "^7.22.10",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/plugin-syntax-typescript": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-unicode-escapes": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-unicode-property-regex": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-unicode-regex": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/plugin-transform-unicode-sets-regex": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/helper-create-regexp-features-plugin": "^7.22.5",
-        "@babel/helper-plugin-utils": "^7.22.5"
-      }
-    },
-    "@babel/preset-env": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/compat-data": "^7.22.9",
-        "@babel/helper-compilation-targets": "^7.22.10",
-        "@babel/helper-plugin-utils": "^7.22.5",
-        "@babel/helper-validator-option": "^7.22.5",
-        "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5",
-        "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5",
-        "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
-        "@babel/plugin-syntax-async-generators": "^7.8.4",
-        "@babel/plugin-syntax-class-properties": "^7.12.13",
-        "@babel/plugin-syntax-class-static-block": "^7.14.5",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-        "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
-        "@babel/plugin-syntax-import-assertions": "^7.22.5",
-        "@babel/plugin-syntax-import-attributes": "^7.22.5",
-        "@babel/plugin-syntax-import-meta": "^7.10.4",
-        "@babel/plugin-syntax-json-strings": "^7.8.3",
-        "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
-        "@babel/plugin-syntax-numeric-separator": "^7.10.4",
-        "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
-        "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
-        "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
-        "@babel/plugin-syntax-top-level-await": "^7.14.5",
-        "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
-        "@babel/plugin-transform-arrow-functions": "^7.22.5",
-        "@babel/plugin-transform-async-generator-functions": "^7.22.10",
-        "@babel/plugin-transform-async-to-generator": "^7.22.5",
-        "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
-        "@babel/plugin-transform-block-scoping": "^7.22.10",
-        "@babel/plugin-transform-class-properties": "^7.22.5",
-        "@babel/plugin-transform-class-static-block": "^7.22.5",
-        "@babel/plugin-transform-classes": "^7.22.6",
-        "@babel/plugin-transform-computed-properties": "^7.22.5",
-        "@babel/plugin-transform-destructuring": "^7.22.10",
-        "@babel/plugin-transform-dotall-regex": "^7.22.5",
-        "@babel/plugin-transform-duplicate-keys": "^7.22.5",
-        "@babel/plugin-transform-dynamic-import": "^7.22.5",
-        "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
-        "@babel/plugin-transform-export-namespace-from": "^7.22.5",
-        "@babel/plugin-transform-for-of": "^7.22.5",
-        "@babel/plugin-transform-function-name": "^7.22.5",
-        "@babel/plugin-transform-json-strings": "^7.22.5",
-        "@babel/plugin-transform-literals": "^7.22.5",
-        "@babel/plugin-transform-logical-assignment-operators": "^7.22.5",
-        "@babel/plugin-transform-member-expression-literals": "^7.22.5",
-        "@babel/plugin-transform-modules-amd": "^7.22.5",
-        "@babel/plugin-transform-modules-commonjs": "^7.22.5",
-        "@babel/plugin-transform-modules-systemjs": "^7.22.5",
-        "@babel/plugin-transform-modules-umd": "^7.22.5",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
-        "@babel/plugin-transform-new-target": "^7.22.5",
-        "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5",
-        "@babel/plugin-transform-numeric-separator": "^7.22.5",
-        "@babel/plugin-transform-object-rest-spread": "^7.22.5",
-        "@babel/plugin-transform-object-super": "^7.22.5",
-        "@babel/plugin-transform-optional-catch-binding": "^7.22.5",
-        "@babel/plugin-transform-optional-chaining": "^7.22.10",
-        "@babel/plugin-transform-parameters": "^7.22.5",
-        "@babel/plugin-transform-private-methods": "^7.22.5",
-        "@babel/plugin-transform-private-property-in-object": "^7.22.5",
-        "@babel/plugin-transform-property-literals": "^7.22.5",
-        "@babel/plugin-transform-regenerator": "^7.22.10",
-        "@babel/plugin-transform-reserved-words": "^7.22.5",
-        "@babel/plugin-transform-shorthand-properties": "^7.22.5",
-        "@babel/plugin-transform-spread": "^7.22.5",
-        "@babel/plugin-transform-sticky-regex": "^7.22.5",
-        "@babel/plugin-transform-template-literals": "^7.22.5",
-        "@babel/plugin-transform-typeof-symbol": "^7.22.5",
-        "@babel/plugin-transform-unicode-escapes": "^7.22.10",
-        "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
-        "@babel/plugin-transform-unicode-regex": "^7.22.5",
-        "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
-        "@babel/preset-modules": "0.1.6-no-external-plugins",
-        "@babel/types": "^7.22.10",
-        "babel-plugin-polyfill-corejs2": "^0.4.5",
-        "babel-plugin-polyfill-corejs3": "^0.8.3",
-        "babel-plugin-polyfill-regenerator": "^0.5.2",
-        "core-js-compat": "^3.31.0",
-        "semver": "^6.3.1"
-      }
-    },
-    "@babel/preset-modules": {
-      "version": "0.1.6-no-external-plugins",
-      "requires": {
-        "@babel/helper-plugin-utils": "^7.0.0",
-        "@babel/types": "^7.4.4",
-        "esutils": "^2.0.2"
-      }
-    },
-    "@babel/regjsgen": {
-      "version": "0.8.0"
-    },
-    "@babel/runtime": {
-      "version": "7.22.10",
-      "requires": {
-        "regenerator-runtime": "^0.14.0"
-      },
-      "dependencies": {
-        "regenerator-runtime": {
-          "version": "0.14.0"
-        }
-      }
-    },
-    "@babel/template": {
-      "version": "7.22.5",
-      "requires": {
-        "@babel/code-frame": "^7.22.5",
-        "@babel/parser": "^7.22.5",
-        "@babel/types": "^7.22.5"
-      }
-    },
-    "@babel/traverse": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/code-frame": "^7.22.10",
-        "@babel/generator": "^7.22.10",
-        "@babel/helper-environment-visitor": "^7.22.5",
-        "@babel/helper-function-name": "^7.22.5",
-        "@babel/helper-hoist-variables": "^7.22.5",
-        "@babel/helper-split-export-declaration": "^7.22.6",
-        "@babel/parser": "^7.22.10",
-        "@babel/types": "^7.22.10",
-        "debug": "^4.1.0",
-        "globals": "^11.1.0"
-      }
-    },
-    "@babel/types": {
-      "version": "7.22.10",
-      "requires": {
-        "@babel/helper-string-parser": "^7.22.5",
-        "@babel/helper-validator-identifier": "^7.22.5",
-        "to-fast-properties": "^2.0.0"
-      }
-    },
-    "@cfcs/core": {
-      "version": "0.0.6",
-      "requires": {
-        "@egjs/component": "^3.0.2"
-      }
-    },
-    "@css-render/plugin-bem": {
-      "version": "0.15.12",
-      "dev": true
-    },
-    "@css-render/vue3-ssr": {
-      "version": "0.15.12",
-      "dev": true
-    },
-    "@daybrush/utils": {
-      "version": "1.13.0"
-    },
-    "@egjs/agent": {
-      "version": "2.4.3"
-    },
-    "@egjs/children-differ": {
-      "version": "1.0.1",
-      "requires": {
-        "@egjs/list-differ": "^1.0.0"
-      }
-    },
-    "@egjs/component": {
-      "version": "3.0.4"
-    },
-    "@egjs/list-differ": {
-      "version": "1.0.1"
-    },
-    "@emotion/hash": {
-      "version": "0.8.0",
-      "dev": true
-    },
-    "@esbuild/win32-x64": {
-      "version": "0.18.20",
-      "dev": true,
-      "optional": true
-    },
-    "@eslint-community/eslint-utils": {
-      "version": "4.4.0",
-      "dev": true,
-      "requires": {
-        "eslint-visitor-keys": "^3.3.0"
-      }
-    },
-    "@eslint-community/regexpp": {
-      "version": "4.6.2",
-      "dev": true
-    },
-    "@eslint/eslintrc": {
-      "version": "2.1.2",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.12.4",
-        "debug": "^4.3.2",
-        "espree": "^9.6.0",
-        "globals": "^13.19.0",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^4.1.0",
-        "minimatch": "^3.1.2",
-        "strip-json-comments": "^3.1.1"
-      },
-      "dependencies": {
-        "globals": {
-          "version": "13.21.0",
-          "dev": true,
-          "requires": {
-            "type-fest": "^0.20.2"
-          }
-        },
-        "type-fest": {
-          "version": "0.20.2",
-          "dev": true
-        }
-      }
-    },
-    "@eslint/js": {
-      "version": "8.47.0",
-      "dev": true
-    },
-    "@humanwhocodes/config-array": {
-      "version": "0.11.10",
-      "dev": true,
-      "requires": {
-        "@humanwhocodes/object-schema": "^1.2.1",
-        "debug": "^4.1.1",
-        "minimatch": "^3.0.5"
-      }
-    },
-    "@humanwhocodes/module-importer": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "@humanwhocodes/object-schema": {
-      "version": "1.2.1",
-      "dev": true
-    },
-    "@intlify/core-base": {
-      "version": "9.2.2",
-      "requires": {
-        "@intlify/devtools-if": "9.2.2",
-        "@intlify/message-compiler": "9.2.2",
-        "@intlify/shared": "9.2.2",
-        "@intlify/vue-devtools": "9.2.2"
-      }
-    },
-    "@intlify/devtools-if": {
-      "version": "9.2.2",
-      "requires": {
-        "@intlify/shared": "9.2.2"
-      }
-    },
-    "@intlify/message-compiler": {
-      "version": "9.2.2",
-      "requires": {
-        "@intlify/shared": "9.2.2",
-        "source-map": "0.6.1"
-      }
-    },
-    "@intlify/shared": {
-      "version": "9.2.2"
-    },
-    "@intlify/vue-devtools": {
-      "version": "9.2.2",
-      "requires": {
-        "@intlify/core-base": "9.2.2",
-        "@intlify/shared": "9.2.2"
-      }
-    },
-    "@jridgewell/gen-mapping": {
-      "version": "0.3.3",
-      "requires": {
-        "@jridgewell/set-array": "^1.0.1",
-        "@jridgewell/sourcemap-codec": "^1.4.10",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      }
-    },
-    "@jridgewell/resolve-uri": {
-      "version": "3.1.1"
-    },
-    "@jridgewell/set-array": {
-      "version": "1.1.2"
-    },
-    "@jridgewell/source-map": {
-      "version": "0.3.5",
-      "requires": {
-        "@jridgewell/gen-mapping": "^0.3.0",
-        "@jridgewell/trace-mapping": "^0.3.9"
-      }
-    },
-    "@jridgewell/sourcemap-codec": {
-      "version": "1.4.15"
-    },
-    "@jridgewell/trace-mapping": {
-      "version": "0.3.19",
-      "requires": {
-        "@jridgewell/resolve-uri": "^3.1.0",
-        "@jridgewell/sourcemap-codec": "^1.4.14"
-      }
-    },
-    "@juggle/resize-observer": {
-      "version": "3.4.0",
-      "dev": true
-    },
-    "@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "requires": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      }
-    },
-    "@nodelib/fs.stat": {
-      "version": "2.0.5"
-    },
-    "@nodelib/fs.walk": {
-      "version": "1.2.8",
-      "requires": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      }
-    },
-    "@octokit/auth-token": {
-      "version": "3.0.4",
-      "dev": true
-    },
-    "@octokit/core": {
-      "version": "4.2.4",
-      "dev": true,
-      "requires": {
-        "@octokit/auth-token": "^3.0.0",
-        "@octokit/graphql": "^5.0.0",
-        "@octokit/request": "^6.0.0",
-        "@octokit/request-error": "^3.0.0",
-        "@octokit/types": "^9.0.0",
-        "before-after-hook": "^2.2.0",
-        "universal-user-agent": "^6.0.0"
-      }
-    },
-    "@octokit/endpoint": {
-      "version": "7.0.6",
-      "dev": true,
-      "requires": {
-        "@octokit/types": "^9.0.0",
-        "is-plain-object": "^5.0.0",
-        "universal-user-agent": "^6.0.0"
-      }
-    },
-    "@octokit/graphql": {
-      "version": "5.0.6",
-      "dev": true,
-      "requires": {
-        "@octokit/request": "^6.0.0",
-        "@octokit/types": "^9.0.0",
-        "universal-user-agent": "^6.0.0"
-      }
-    },
-    "@octokit/openapi-types": {
-      "version": "18.0.0",
-      "dev": true
-    },
-    "@octokit/plugin-paginate-rest": {
-      "version": "6.1.2",
-      "dev": true,
-      "requires": {
-        "@octokit/tsconfig": "^1.0.2",
-        "@octokit/types": "^9.2.3"
-      }
-    },
-    "@octokit/plugin-request-log": {
-      "version": "1.0.4",
-      "dev": true
-    },
-    "@octokit/plugin-rest-endpoint-methods": {
-      "version": "7.2.3",
-      "dev": true,
-      "requires": {
-        "@octokit/types": "^10.0.0"
-      },
-      "dependencies": {
-        "@octokit/types": {
-          "version": "10.0.0",
-          "dev": true,
-          "requires": {
-            "@octokit/openapi-types": "^18.0.0"
-          }
-        }
-      }
-    },
-    "@octokit/request": {
-      "version": "6.2.8",
-      "dev": true,
-      "requires": {
-        "@octokit/endpoint": "^7.0.0",
-        "@octokit/request-error": "^3.0.0",
-        "@octokit/types": "^9.0.0",
-        "is-plain-object": "^5.0.0",
-        "node-fetch": "^2.6.7",
-        "universal-user-agent": "^6.0.0"
-      },
-      "dependencies": {
-        "node-fetch": {
-          "version": "2.6.12",
-          "dev": true,
-          "requires": {
-            "whatwg-url": "^5.0.0"
-          }
-        }
-      }
-    },
-    "@octokit/request-error": {
-      "version": "3.0.3",
-      "dev": true,
-      "requires": {
-        "@octokit/types": "^9.0.0",
-        "deprecation": "^2.0.0",
-        "once": "^1.4.0"
-      }
-    },
-    "@octokit/rest": {
-      "version": "19.0.13",
-      "dev": true,
-      "requires": {
-        "@octokit/core": "^4.2.1",
-        "@octokit/plugin-paginate-rest": "^6.1.2",
-        "@octokit/plugin-request-log": "^1.0.4",
-        "@octokit/plugin-rest-endpoint-methods": "^7.1.2"
-      }
-    },
-    "@octokit/tsconfig": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "@octokit/types": {
-      "version": "9.3.2",
-      "dev": true,
-      "requires": {
-        "@octokit/openapi-types": "^18.0.0"
-      }
-    },
-    "@rollup/plugin-babel": {
-      "version": "5.3.1",
-      "requires": {
-        "@babel/helper-module-imports": "^7.10.4",
-        "@rollup/pluginutils": "^3.1.0"
-      },
-      "dependencies": {
-        "@rollup/pluginutils": {
-          "version": "3.1.0",
-          "requires": {
-            "@types/estree": "0.0.39",
-            "estree-walker": "^1.0.1",
-            "picomatch": "^2.2.2"
-          }
-        },
-        "@types/estree": {
-          "version": "0.0.39"
-        },
-        "estree-walker": {
-          "version": "1.0.1"
-        }
-      }
-    },
-    "@rollup/plugin-node-resolve": {
-      "version": "11.2.1",
-      "requires": {
-        "@rollup/pluginutils": "^3.1.0",
-        "@types/resolve": "1.17.1",
-        "builtin-modules": "^3.1.0",
-        "deepmerge": "^4.2.2",
-        "is-module": "^1.0.0",
-        "resolve": "^1.19.0"
-      },
-      "dependencies": {
-        "@rollup/pluginutils": {
-          "version": "3.1.0",
-          "requires": {
-            "@types/estree": "0.0.39",
-            "estree-walker": "^1.0.1",
-            "picomatch": "^2.2.2"
-          }
-        },
-        "@types/estree": {
-          "version": "0.0.39"
-        },
-        "estree-walker": {
-          "version": "1.0.1"
-        }
-      }
-    },
-    "@rollup/plugin-replace": {
-      "version": "2.4.2",
-      "requires": {
-        "@rollup/pluginutils": "^3.1.0",
-        "magic-string": "^0.25.7"
-      },
-      "dependencies": {
-        "@rollup/pluginutils": {
-          "version": "3.1.0",
-          "requires": {
-            "@types/estree": "0.0.39",
-            "estree-walker": "^1.0.1",
-            "picomatch": "^2.2.2"
-          }
-        },
-        "@types/estree": {
-          "version": "0.0.39"
-        },
-        "estree-walker": {
-          "version": "1.0.1"
-        },
-        "magic-string": {
-          "version": "0.25.9",
-          "requires": {
-            "sourcemap-codec": "^1.4.8"
-          }
-        }
-      }
-    },
-    "@rollup/pluginutils": {
-      "version": "5.0.3",
-      "dev": true,
-      "requires": {
-        "@types/estree": "^1.0.0",
-        "estree-walker": "^2.0.2",
-        "picomatch": "^2.3.1"
-      }
-    },
-    "@scena/dragscroll": {
-      "version": "1.4.0",
-      "requires": {
-        "@daybrush/utils": "^1.6.0",
-        "@scena/event-emitter": "^1.0.2"
-      }
-    },
-    "@scena/event-emitter": {
-      "version": "1.0.5",
-      "requires": {
-        "@daybrush/utils": "^1.1.1"
-      }
-    },
-    "@scena/matrix": {
-      "version": "1.1.1",
-      "requires": {
-        "@daybrush/utils": "^1.4.0"
-      }
-    },
-    "@surma/rollup-plugin-off-main-thread": {
-      "version": "2.2.3",
-      "requires": {
-        "ejs": "^3.1.6",
-        "json5": "^2.2.0",
-        "magic-string": "^0.25.0",
-        "string.prototype.matchall": "^4.0.6"
-      },
-      "dependencies": {
-        "magic-string": {
-          "version": "0.25.9",
-          "requires": {
-            "sourcemap-codec": "^1.4.8"
-          }
-        }
-      }
-    },
-    "@types/crypto-js": {
-      "version": "4.1.1",
-      "dev": true
-    },
-    "@types/eslint": {
-      "version": "8.44.2",
-      "dev": true,
-      "requires": {
-        "@types/estree": "*",
-        "@types/json-schema": "*"
-      }
-    },
-    "@types/estree": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "@types/fined": {
-      "version": "1.1.3",
-      "dev": true
-    },
-    "@types/inquirer": {
-      "version": "8.2.6",
-      "dev": true,
-      "requires": {
-        "@types/through": "*",
-        "rxjs": "^7.2.0"
-      }
-    },
-    "@types/json-schema": {
-      "version": "7.0.12",
-      "dev": true
-    },
-    "@types/katex": {
-      "version": "0.14.0",
-      "dev": true
-    },
-    "@types/liftoff": {
-      "version": "4.0.0",
-      "dev": true,
-      "requires": {
-        "@types/fined": "*",
-        "@types/node": "*"
-      }
-    },
-    "@types/lodash": {
-      "version": "4.14.197",
-      "dev": true
-    },
-    "@types/lodash-es": {
-      "version": "4.17.8",
-      "dev": true,
-      "requires": {
-        "@types/lodash": "*"
-      }
-    },
-    "@types/node": {
-      "version": "16.18.40"
-    },
-    "@types/numeral": {
-      "version": "2.0.2",
-      "dev": true
-    },
-    "@types/resolve": {
-      "version": "1.17.1",
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/semver": {
-      "version": "7.5.0",
-      "dev": true
-    },
-    "@types/through": {
-      "version": "0.0.30",
-      "dev": true,
-      "requires": {
-        "@types/node": "*"
-      }
-    },
-    "@types/trusted-types": {
-      "version": "2.0.3"
-    },
-    "@types/web-bluetooth": {
-      "version": "0.0.17"
-    },
-    "@typescript-eslint/eslint-plugin": {
-      "version": "5.62.0",
-      "dev": true,
-      "requires": {
-        "@eslint-community/regexpp": "^4.4.0",
-        "@typescript-eslint/scope-manager": "5.62.0",
-        "@typescript-eslint/type-utils": "5.62.0",
-        "@typescript-eslint/utils": "5.62.0",
-        "debug": "^4.3.4",
-        "graphemer": "^1.4.0",
-        "ignore": "^5.2.0",
-        "natural-compare-lite": "^1.4.0",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "semver": {
-          "version": "7.5.4",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "yallist": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
-    "@typescript-eslint/parser": {
-      "version": "5.62.0",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/scope-manager": "5.62.0",
-        "@typescript-eslint/types": "5.62.0",
-        "@typescript-eslint/typescript-estree": "5.62.0",
-        "debug": "^4.3.4"
-      }
-    },
-    "@typescript-eslint/scope-manager": {
-      "version": "5.62.0",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/types": "5.62.0",
-        "@typescript-eslint/visitor-keys": "5.62.0"
-      }
-    },
-    "@typescript-eslint/type-utils": {
-      "version": "5.62.0",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/typescript-estree": "5.62.0",
-        "@typescript-eslint/utils": "5.62.0",
-        "debug": "^4.3.4",
-        "tsutils": "^3.21.0"
-      }
-    },
-    "@typescript-eslint/types": {
-      "version": "5.62.0",
-      "dev": true
-    },
-    "@typescript-eslint/typescript-estree": {
-      "version": "5.62.0",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/types": "5.62.0",
-        "@typescript-eslint/visitor-keys": "5.62.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "semver": "^7.3.7",
-        "tsutils": "^3.21.0"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "semver": {
-          "version": "7.5.4",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "yallist": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
-    "@typescript-eslint/utils": {
-      "version": "5.62.0",
-      "dev": true,
-      "requires": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@types/json-schema": "^7.0.9",
-        "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.62.0",
-        "@typescript-eslint/types": "5.62.0",
-        "@typescript-eslint/typescript-estree": "5.62.0",
-        "eslint-scope": "^5.1.1",
-        "semver": "^7.3.7"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "semver": {
-          "version": "7.5.4",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "yallist": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
-    "@typescript-eslint/visitor-keys": {
-      "version": "5.62.0",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/types": "5.62.0",
-        "eslint-visitor-keys": "^3.3.0"
-      }
-    },
-    "@vant/use": {
-      "version": "1.5.2"
-    },
-    "@vicons/ionicons5": {
-      "version": "0.12.0"
-    },
-    "@vitejs/plugin-legacy": {
-      "version": "4.1.1",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.22.9",
-        "@babel/preset-env": "^7.22.9",
-        "browserslist": "^4.21.9",
-        "core-js": "^3.31.1",
-        "magic-string": "^0.30.1",
-        "regenerator-runtime": "^0.13.11",
-        "systemjs": "^6.14.1"
-      }
-    },
-    "@vitejs/plugin-vue": {
-      "version": "4.3.1",
-      "dev": true
-    },
-    "@vitejs/plugin-vue-jsx": {
-      "version": "3.0.2",
-      "dev": true,
-      "requires": {
-        "@babel/core": "^7.22.10",
-        "@babel/plugin-transform-typescript": "^7.22.10",
-        "@vue/babel-plugin-jsx": "^1.1.5"
-      }
-    },
-    "@volar/language-core": {
-      "version": "1.10.0",
-      "dev": true,
-      "requires": {
-        "@volar/source-map": "1.10.0"
-      }
-    },
-    "@volar/source-map": {
-      "version": "1.10.0",
-      "dev": true,
-      "requires": {
-        "muggle-string": "^0.3.1"
-      }
-    },
-    "@volar/typescript": {
-      "version": "1.10.0",
-      "dev": true,
-      "requires": {
-        "@volar/language-core": "1.10.0"
-      }
-    },
-    "@vue/babel-helper-vue-transform-on": {
-      "version": "1.1.5",
-      "dev": true
-    },
-    "@vue/babel-plugin-jsx": {
-      "version": "1.1.5",
-      "dev": true,
-      "requires": {
-        "@babel/helper-module-imports": "^7.22.5",
-        "@babel/plugin-syntax-jsx": "^7.22.5",
-        "@babel/template": "^7.22.5",
-        "@babel/traverse": "^7.22.5",
-        "@babel/types": "^7.22.5",
-        "@vue/babel-helper-vue-transform-on": "^1.1.5",
-        "camelcase": "^6.3.0",
-        "html-tags": "^3.3.1",
-        "svg-tags": "^1.0.0"
-      }
-    },
-    "@vue/compiler-core": {
-      "version": "3.3.4",
-      "requires": {
-        "@babel/parser": "^7.21.3",
-        "@vue/shared": "3.3.4",
-        "estree-walker": "^2.0.2",
-        "source-map-js": "^1.0.2"
-      }
-    },
-    "@vue/compiler-dom": {
-      "version": "3.3.4",
-      "requires": {
-        "@vue/compiler-core": "3.3.4",
-        "@vue/shared": "3.3.4"
-      }
-    },
-    "@vue/compiler-sfc": {
-      "version": "3.3.4",
-      "requires": {
-        "@babel/parser": "^7.20.15",
-        "@vue/compiler-core": "3.3.4",
-        "@vue/compiler-dom": "3.3.4",
-        "@vue/compiler-ssr": "3.3.4",
-        "@vue/reactivity-transform": "3.3.4",
-        "@vue/shared": "3.3.4",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.30.0",
-        "postcss": "^8.1.10",
-        "source-map-js": "^1.0.2"
-      }
-    },
-    "@vue/compiler-ssr": {
-      "version": "3.3.4",
-      "requires": {
-        "@vue/compiler-dom": "3.3.4",
-        "@vue/shared": "3.3.4"
-      }
-    },
-    "@vue/devtools-api": {
-      "version": "6.5.0"
-    },
-    "@vue/eslint-config-prettier": {
-      "version": "7.1.0",
-      "dev": true,
-      "requires": {
-        "eslint-config-prettier": "^8.3.0",
-        "eslint-plugin-prettier": "^4.0.0"
-      }
-    },
-    "@vue/eslint-config-typescript": {
-      "version": "11.0.3",
-      "dev": true,
-      "requires": {
-        "@typescript-eslint/eslint-plugin": "^5.59.1",
-        "@typescript-eslint/parser": "^5.59.1",
-        "vue-eslint-parser": "^9.1.1"
-      }
-    },
-    "@vue/language-core": {
-      "version": "1.8.8",
-      "dev": true,
-      "requires": {
-        "@volar/language-core": "~1.10.0",
-        "@volar/source-map": "~1.10.0",
-        "@vue/compiler-dom": "^3.3.0",
-        "@vue/reactivity": "^3.3.0",
-        "@vue/shared": "^3.3.0",
-        "minimatch": "^9.0.0",
-        "muggle-string": "^0.3.1",
-        "vue-template-compiler": "^2.7.14"
-      },
-      "dependencies": {
-        "brace-expansion": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "balanced-match": "^1.0.0"
-          }
-        },
-        "minimatch": {
-          "version": "9.0.3",
-          "dev": true,
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        }
-      }
-    },
-    "@vue/reactivity": {
-      "version": "3.3.4",
-      "requires": {
-        "@vue/shared": "3.3.4"
-      }
-    },
-    "@vue/reactivity-transform": {
-      "version": "3.3.4",
-      "requires": {
-        "@babel/parser": "^7.20.15",
-        "@vue/compiler-core": "3.3.4",
-        "@vue/shared": "3.3.4",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.30.0"
-      }
-    },
-    "@vue/runtime-core": {
-      "version": "3.3.4",
-      "requires": {
-        "@vue/reactivity": "3.3.4",
-        "@vue/shared": "3.3.4"
-      }
-    },
-    "@vue/runtime-dom": {
-      "version": "3.3.4",
-      "requires": {
-        "@vue/runtime-core": "3.3.4",
-        "@vue/shared": "3.3.4",
-        "csstype": "^3.1.1"
-      },
-      "dependencies": {
-        "csstype": {
-          "version": "3.1.2"
-        }
-      }
-    },
-    "@vue/server-renderer": {
-      "version": "3.3.4",
-      "requires": {
-        "@vue/compiler-ssr": "3.3.4",
-        "@vue/shared": "3.3.4"
-      }
-    },
-    "@vue/shared": {
-      "version": "3.3.4"
-    },
-    "@vue/typescript": {
-      "version": "1.8.8",
-      "dev": true,
-      "requires": {
-        "@volar/typescript": "~1.10.0",
-        "@vue/language-core": "1.8.8"
-      }
-    },
-    "@vuepic/vue-datepicker": {
-      "version": "5.4.0",
-      "requires": {
-        "date-fns": "^2.30.0",
-        "date-fns-tz": "^1.3.7"
-      }
-    },
-    "@vueuse/core": {
-      "version": "10.3.0",
-      "requires": {
-        "@types/web-bluetooth": "^0.0.17",
-        "@vueuse/metadata": "10.3.0",
-        "@vueuse/shared": "10.3.0",
-        "vue-demi": ">=0.14.5"
-      }
-    },
-    "@vueuse/metadata": {
-      "version": "10.3.0"
-    },
-    "@vueuse/shared": {
-      "version": "10.3.0",
-      "requires": {
-        "vue-demi": ">=0.14.5"
-      }
-    },
-    "@xmldom/xmldom": {
-      "version": "0.8.10",
-      "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
-      "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw=="
-    },
-    "acorn": {
-      "version": "8.10.0"
-    },
-    "acorn-jsx": {
-      "version": "5.3.2",
-      "dev": true
-    },
-    "aggregate-error": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "clean-stack": "^2.0.0",
-        "indent-string": "^4.0.0"
-      }
-    },
-    "ajv": {
-      "version": "6.12.6",
-      "dev": true,
-      "requires": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "animate.css": {
-      "version": "4.1.1"
-    },
-    "ansi-escapes": {
-      "version": "5.0.0",
-      "dev": true,
-      "requires": {
-        "type-fest": "^1.0.2"
-      }
-    },
-    "ansi-regex": {
-      "version": "5.0.1",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "3.2.1",
-      "requires": {
-        "color-convert": "^1.9.0"
-      }
-    },
-    "anymatch": {
-      "version": "3.1.3",
-      "dev": true,
-      "requires": {
-        "normalize-path": "^3.0.0",
-        "picomatch": "^2.0.4"
-      }
-    },
-    "argparse": {
-      "version": "2.0.1",
-      "dev": true
-    },
-    "array-buffer-byte-length": {
-      "version": "1.0.0",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "is-array-buffer": "^3.0.1"
-      }
-    },
-    "array-each": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "array-slice": {
-      "version": "1.1.0",
-      "dev": true
-    },
-    "array-union": {
-      "version": "2.1.0",
-      "dev": true
-    },
-    "arraybuffer.prototype.slice": {
-      "version": "1.0.1",
-      "requires": {
-        "array-buffer-byte-length": "^1.0.0",
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.2.0",
-        "get-intrinsic": "^1.2.1",
-        "is-array-buffer": "^3.0.2",
-        "is-shared-array-buffer": "^1.0.2"
-      }
-    },
-    "async": {
-      "version": "3.2.4"
-    },
-    "async-validator": {
-      "version": "4.2.5",
-      "dev": true
-    },
-    "asynckit": {
-      "version": "0.4.0"
-    },
-    "at-least-node": {
-      "version": "1.0.0"
-    },
-    "atob": {
-      "version": "2.1.2"
-    },
-    "autoprefixer": {
-      "version": "10.4.15",
-      "dev": true,
-      "requires": {
-        "browserslist": "^4.21.10",
-        "caniuse-lite": "^1.0.30001520",
-        "fraction.js": "^4.2.0",
-        "normalize-range": "^0.1.2",
-        "picocolors": "^1.0.0",
-        "postcss-value-parser": "^4.2.0"
-      }
-    },
-    "available-typed-arrays": {
-      "version": "1.0.5"
-    },
-    "axios": {
-      "version": "1.4.0",
-      "requires": {
-        "follow-redirects": "^1.15.0",
-        "form-data": "^4.0.0",
-        "proxy-from-env": "^1.1.0"
-      }
-    },
-    "babel-plugin-dynamic-import-node": {
-      "version": "2.3.3",
-      "dev": true,
-      "requires": {
-        "object.assign": "^4.1.0"
-      }
-    },
-    "babel-plugin-polyfill-corejs2": {
-      "version": "0.4.5",
-      "requires": {
-        "@babel/compat-data": "^7.22.6",
-        "@babel/helper-define-polyfill-provider": "^0.4.2",
-        "semver": "^6.3.1"
-      }
-    },
-    "babel-plugin-polyfill-corejs3": {
-      "version": "0.8.3",
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.4.2",
-        "core-js-compat": "^3.31.0"
-      }
-    },
-    "babel-plugin-polyfill-regenerator": {
-      "version": "0.5.2",
-      "requires": {
-        "@babel/helper-define-polyfill-provider": "^0.4.2"
-      }
-    },
-    "babel-runtime": {
-      "version": "6.26.0",
-      "requires": {
-        "core-js": "^2.4.0",
-        "regenerator-runtime": "^0.11.0"
-      },
-      "dependencies": {
-        "core-js": {
-          "version": "2.6.12"
-        },
-        "regenerator-runtime": {
-          "version": "0.11.1"
-        }
-      }
-    },
-    "balanced-match": {
-      "version": "1.0.2"
-    },
-    "base64-arraybuffer": {
-      "version": "1.0.2"
-    },
-    "base64-js": {
-      "version": "1.5.1",
-      "dev": true
-    },
-    "before-after-hook": {
-      "version": "2.2.3",
-      "dev": true
-    },
-    "big.js": {
-      "version": "5.2.2"
-    },
-    "binary-extensions": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "bl": {
-      "version": "5.1.0",
-      "dev": true,
-      "requires": {
-        "buffer": "^6.0.3",
-        "inherits": "^2.0.4",
-        "readable-stream": "^3.4.0"
-      }
-    },
-    "blueimp-md5": {
-      "version": "2.19.0"
-    },
-    "boolbase": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "braces": {
-      "version": "3.0.2",
-      "requires": {
-        "fill-range": "^7.0.1"
-      }
-    },
-    "browserslist": {
-      "version": "4.21.10",
-      "requires": {
-        "caniuse-lite": "^1.0.30001517",
-        "electron-to-chromium": "^1.4.477",
-        "node-releases": "^2.0.13",
-        "update-browserslist-db": "^1.0.11"
-      }
-    },
-    "buffer": {
-      "version": "6.0.3",
-      "dev": true,
-      "requires": {
-        "base64-js": "^1.3.1",
-        "ieee754": "^1.2.1"
-      }
-    },
-    "buffer-from": {
-      "version": "1.1.2"
-    },
-    "builtin-modules": {
-      "version": "3.3.0"
-    },
-    "call-bind": {
-      "version": "1.0.2",
-      "requires": {
-        "function-bind": "^1.1.1",
-        "get-intrinsic": "^1.0.2"
-      }
-    },
-    "callsites": {
-      "version": "3.1.0",
-      "dev": true
-    },
-    "camel-case": {
-      "version": "4.1.2",
-      "dev": true,
-      "requires": {
-        "pascal-case": "^3.1.2",
-        "tslib": "^2.0.3"
-      }
-    },
-    "camelcase": {
-      "version": "6.3.0",
-      "dev": true
-    },
-    "caniuse-lite": {
-      "version": "1.0.30001521"
-    },
-    "capital-case": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3",
-        "upper-case-first": "^2.0.2"
-      }
-    },
-    "chalk": {
-      "version": "2.4.2",
-      "requires": {
-        "ansi-styles": "^3.2.1",
-        "escape-string-regexp": "^1.0.5",
-        "supports-color": "^5.3.0"
-      }
-    },
-    "change-case": {
-      "version": "4.1.2",
-      "dev": true,
-      "requires": {
-        "camel-case": "^4.1.2",
-        "capital-case": "^1.0.4",
-        "constant-case": "^3.0.4",
-        "dot-case": "^3.0.4",
-        "header-case": "^2.0.4",
-        "no-case": "^3.0.4",
-        "param-case": "^3.0.4",
-        "pascal-case": "^3.1.2",
-        "path-case": "^3.0.4",
-        "sentence-case": "^3.0.4",
-        "snake-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "chardet": {
-      "version": "0.7.0",
-      "dev": true
-    },
-    "charenc": {
-      "version": "0.0.2"
-    },
-    "chokidar": {
-      "version": "3.5.3",
-      "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"
-      },
-      "dependencies": {
-        "glob-parent": {
-          "version": "5.1.2",
-          "dev": true,
-          "requires": {
-            "is-glob": "^4.0.1"
-          }
-        }
-      }
-    },
-    "ci-info": {
-      "version": "1.6.0",
-      "dev": true
-    },
-    "clean-deep": {
-      "version": "3.4.0",
-      "requires": {
-        "lodash.isempty": "^4.4.0",
-        "lodash.isplainobject": "^4.0.6",
-        "lodash.transform": "^4.6.0"
-      }
-    },
-    "clean-stack": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "cli-cursor": {
-      "version": "4.0.0",
-      "dev": true,
-      "requires": {
-        "restore-cursor": "^4.0.0"
-      }
-    },
-    "cli-spinners": {
-      "version": "2.9.0",
-      "dev": true
-    },
-    "cli-truncate": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "slice-ansi": "^5.0.0",
-        "string-width": "^5.0.0"
-      }
-    },
-    "cli-width": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "clone": {
-      "version": "1.0.4",
-      "dev": true
-    },
-    "color-convert": {
-      "version": "1.9.3",
-      "requires": {
-        "color-name": "1.1.3"
-      }
-    },
-    "color-name": {
-      "version": "1.1.3"
-    },
-    "colorette": {
-      "version": "2.0.20",
-      "dev": true
-    },
-    "combined-stream": {
-      "version": "1.0.8",
-      "requires": {
-        "delayed-stream": "~1.0.0"
-      }
-    },
-    "commander": {
-      "version": "11.0.0",
-      "dev": true
-    },
-    "common-tags": {
-      "version": "1.8.2"
-    },
-    "concat-map": {
-      "version": "0.0.1"
-    },
-    "constant-case": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3",
-        "upper-case": "^2.0.2"
-      }
-    },
-    "convert-source-map": {
-      "version": "1.9.0"
-    },
-    "copy-anything": {
-      "version": "2.0.6",
-      "dev": true,
-      "requires": {
-        "is-what": "^3.14.1"
-      }
-    },
-    "core-js": {
-      "version": "3.32.0"
-    },
-    "core-js-compat": {
-      "version": "3.32.0",
-      "requires": {
-        "browserslist": "^4.21.9"
-      }
-    },
-    "core-util-is": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
-    },
-    "cos-js-sdk-v5": {
-      "version": "1.4.20",
-      "resolved": "https://registry.npmmirror.com/cos-js-sdk-v5/-/cos-js-sdk-v5-1.4.20.tgz",
-      "integrity": "sha512-cGpmVoKN3iYBtWo8Lwp059fOrT4yyb/+I6fVS++Zyop/ZFJswDRkjnrASViwYd8N+hi3qWVAa6ruvvBsLutEwg==",
-      "requires": {
-        "@xmldom/xmldom": "^0.8.6"
-      }
-    },
-    "croact": {
-      "version": "1.0.4",
-      "requires": {
-        "@daybrush/utils": "^1.13.0",
-        "@egjs/list-differ": "^1.0.0"
-      }
-    },
-    "croact-css-styled": {
-      "version": "1.1.9",
-      "requires": {
-        "@daybrush/utils": "^1.13.0",
-        "css-styled": "~1.0.8",
-        "framework-utils": "^1.1.0"
-      }
-    },
-    "croact-moveable": {
-      "version": "0.5.1",
-      "requires": {
-        "@daybrush/utils": "^1.13.0",
-        "@egjs/agent": "^2.2.1",
-        "@egjs/children-differ": "^1.0.1",
-        "@egjs/list-differ": "^1.0.0",
-        "@scena/dragscroll": "^1.4.0",
-        "@scena/event-emitter": "^1.0.5",
-        "@scena/matrix": "^1.1.1",
-        "croact-css-styled": "^1.1.9",
-        "css-to-mat": "^1.1.1",
-        "framework-utils": "^1.1.0",
-        "gesto": "^1.19.0",
-        "overlap-area": "^1.1.0",
-        "react-css-styled": "^1.1.9",
-        "react-moveable": "~0.52.1"
-      }
-    },
-    "cropperjs": {
-      "version": "1.5.13"
-    },
-    "cross-spawn": {
-      "version": "7.0.3",
-      "dev": true,
-      "requires": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      }
-    },
-    "crypt": {
-      "version": "0.0.2"
-    },
-    "crypto-js": {
-      "version": "4.1.1",
-      "dev": true
-    },
-    "crypto-random-string": {
-      "version": "2.0.0"
-    },
-    "css": {
-      "version": "2.2.4",
-      "requires": {
-        "inherits": "^2.0.3",
-        "source-map": "^0.6.1",
-        "source-map-resolve": "^0.5.2",
-        "urix": "^0.1.0"
-      }
-    },
-    "css-line-break": {
-      "version": "2.1.0",
-      "requires": {
-        "utrie": "^1.0.2"
-      }
-    },
-    "css-render": {
-      "version": "0.15.12",
-      "dev": true,
-      "requires": {
-        "@emotion/hash": "~0.8.0",
-        "csstype": "~3.0.5"
-      }
-    },
-    "css-styled": {
-      "version": "1.0.8",
-      "requires": {
-        "@daybrush/utils": "^1.13.0"
-      }
-    },
-    "css-to-mat": {
-      "version": "1.1.1",
-      "requires": {
-        "@daybrush/utils": "^1.13.0",
-        "@scena/matrix": "^1.0.0"
-      }
-    },
-    "cssesc": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "csstype": {
-      "version": "3.0.11",
-      "dev": true
-    },
-    "custom-event-polyfill": {
-      "version": "1.0.7"
-    },
-    "date-fns": {
-      "version": "2.30.0",
-      "requires": {
-        "@babel/runtime": "^7.21.0"
-      }
-    },
-    "date-fns-tz": {
-      "version": "1.3.8"
-    },
-    "dayjs": {
-      "version": "1.11.9"
-    },
-    "de-indent": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "debug": {
-      "version": "4.3.4",
-      "requires": {
-        "ms": "2.1.2"
-      }
-    },
-    "decode-uri-component": {
-      "version": "0.4.1"
-    },
-    "decompress-response": {
-      "version": "6.0.0",
-      "requires": {
-        "mimic-response": "^3.1.0"
-      }
-    },
-    "deep-is": {
-      "version": "0.1.4",
-      "dev": true
-    },
-    "deepmerge": {
-      "version": "4.3.1"
-    },
-    "defaults": {
-      "version": "1.0.4",
-      "dev": true,
-      "requires": {
-        "clone": "^1.0.2"
-      }
-    },
-    "define-properties": {
-      "version": "1.2.0",
-      "requires": {
-        "has-property-descriptors": "^1.0.0",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "del": {
-      "version": "6.1.1",
-      "dev": true,
-      "requires": {
-        "globby": "^11.0.1",
-        "graceful-fs": "^4.2.4",
-        "is-glob": "^4.0.1",
-        "is-path-cwd": "^2.2.0",
-        "is-path-inside": "^3.0.2",
-        "p-map": "^4.0.0",
-        "rimraf": "^3.0.2",
-        "slash": "^3.0.0"
-      }
-    },
-    "delayed-stream": {
-      "version": "1.0.0"
-    },
-    "deprecation": {
-      "version": "2.3.1",
-      "dev": true
-    },
-    "detect-file": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "dir-glob": {
-      "version": "3.0.1",
-      "dev": true,
-      "requires": {
-        "path-type": "^4.0.0"
-      }
-    },
-    "doctrine": {
-      "version": "3.0.0",
-      "dev": true,
-      "requires": {
-        "esutils": "^2.0.2"
-      }
-    },
-    "dom-walk": {
-      "version": "0.1.2"
-    },
-    "dot-case": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "eastasianwidth": {
-      "version": "0.2.0",
-      "dev": true
-    },
-    "echarts": {
-      "version": "5.4.3",
-      "requires": {
-        "tslib": "2.3.0",
-        "zrender": "5.4.4"
-      }
-    },
-    "ejs": {
-      "version": "3.1.9",
-      "requires": {
-        "jake": "^10.8.5"
-      }
-    },
-    "electron-to-chromium": {
-      "version": "1.4.494"
-    },
-    "emoji-regex": {
-      "version": "9.2.2",
-      "dev": true
-    },
-    "emojis-list": {
-      "version": "3.0.0"
-    },
-    "encoding": {
-      "version": "0.1.13",
-      "requires": {
-        "iconv-lite": "^0.6.2"
-      }
-    },
-    "errno": {
-      "version": "0.1.8",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "prr": "~1.0.1"
-      }
-    },
-    "es-abstract": {
-      "version": "1.22.1",
-      "requires": {
-        "array-buffer-byte-length": "^1.0.0",
-        "arraybuffer.prototype.slice": "^1.0.1",
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "es-set-tostringtag": "^2.0.1",
-        "es-to-primitive": "^1.2.1",
-        "function.prototype.name": "^1.1.5",
-        "get-intrinsic": "^1.2.1",
-        "get-symbol-description": "^1.0.0",
-        "globalthis": "^1.0.3",
-        "gopd": "^1.0.1",
-        "has": "^1.0.3",
-        "has-property-descriptors": "^1.0.0",
-        "has-proto": "^1.0.1",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.5",
-        "is-array-buffer": "^3.0.2",
-        "is-callable": "^1.2.7",
-        "is-negative-zero": "^2.0.2",
-        "is-regex": "^1.1.4",
-        "is-shared-array-buffer": "^1.0.2",
-        "is-string": "^1.0.7",
-        "is-typed-array": "^1.1.10",
-        "is-weakref": "^1.0.2",
-        "object-inspect": "^1.12.3",
-        "object-keys": "^1.1.1",
-        "object.assign": "^4.1.4",
-        "regexp.prototype.flags": "^1.5.0",
-        "safe-array-concat": "^1.0.0",
-        "safe-regex-test": "^1.0.0",
-        "string.prototype.trim": "^1.2.7",
-        "string.prototype.trimend": "^1.0.6",
-        "string.prototype.trimstart": "^1.0.6",
-        "typed-array-buffer": "^1.0.0",
-        "typed-array-byte-length": "^1.0.0",
-        "typed-array-byte-offset": "^1.0.0",
-        "typed-array-length": "^1.0.4",
-        "unbox-primitive": "^1.0.2",
-        "which-typed-array": "^1.1.10"
-      }
-    },
-    "es-set-tostringtag": {
-      "version": "2.0.1",
-      "requires": {
-        "get-intrinsic": "^1.1.3",
-        "has": "^1.0.3",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "es-to-primitive": {
-      "version": "1.2.1",
-      "requires": {
-        "is-callable": "^1.1.4",
-        "is-date-object": "^1.0.1",
-        "is-symbol": "^1.0.2"
-      }
-    },
-    "es5-shim": {
-      "version": "4.6.7"
-    },
-    "esbuild": {
-      "version": "0.18.20",
-      "dev": true,
-      "requires": {
-        "@esbuild/android-arm": "0.18.20",
-        "@esbuild/android-arm64": "0.18.20",
-        "@esbuild/android-x64": "0.18.20",
-        "@esbuild/darwin-arm64": "0.18.20",
-        "@esbuild/darwin-x64": "0.18.20",
-        "@esbuild/freebsd-arm64": "0.18.20",
-        "@esbuild/freebsd-x64": "0.18.20",
-        "@esbuild/linux-arm": "0.18.20",
-        "@esbuild/linux-arm64": "0.18.20",
-        "@esbuild/linux-ia32": "0.18.20",
-        "@esbuild/linux-loong64": "0.18.20",
-        "@esbuild/linux-mips64el": "0.18.20",
-        "@esbuild/linux-ppc64": "0.18.20",
-        "@esbuild/linux-riscv64": "0.18.20",
-        "@esbuild/linux-s390x": "0.18.20",
-        "@esbuild/linux-x64": "0.18.20",
-        "@esbuild/netbsd-x64": "0.18.20",
-        "@esbuild/openbsd-x64": "0.18.20",
-        "@esbuild/sunos-x64": "0.18.20",
-        "@esbuild/win32-arm64": "0.18.20",
-        "@esbuild/win32-ia32": "0.18.20",
-        "@esbuild/win32-x64": "0.18.20"
-      }
-    },
-    "escalade": {
-      "version": "3.1.1"
-    },
-    "escape-string-regexp": {
-      "version": "1.0.5"
-    },
-    "eslint": {
-      "version": "8.47.0",
-      "dev": true,
-      "requires": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.6.1",
-        "@eslint/eslintrc": "^2.1.2",
-        "@eslint/js": "^8.47.0",
-        "@humanwhocodes/config-array": "^0.11.10",
-        "@humanwhocodes/module-importer": "^1.0.1",
-        "@nodelib/fs.walk": "^1.2.8",
-        "ajv": "^6.12.4",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.3.2",
-        "doctrine": "^3.0.0",
-        "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^7.2.2",
-        "eslint-visitor-keys": "^3.4.3",
-        "espree": "^9.6.1",
-        "esquery": "^1.4.2",
-        "esutils": "^2.0.2",
-        "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
-        "find-up": "^5.0.0",
-        "glob-parent": "^6.0.2",
-        "globals": "^13.19.0",
-        "graphemer": "^1.4.0",
-        "ignore": "^5.2.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
-        "js-yaml": "^4.1.0",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.1.2",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.3",
-        "strip-ansi": "^6.0.1",
-        "text-table": "^0.2.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "dev": true
-        },
-        "escape-string-regexp": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "eslint-scope": {
-          "version": "7.2.2",
-          "dev": true,
-          "requires": {
-            "esrecurse": "^4.3.0",
-            "estraverse": "^5.2.0"
-          }
-        },
-        "estraverse": {
-          "version": "5.3.0",
-          "dev": true
-        },
-        "globals": {
-          "version": "13.21.0",
-          "dev": true,
-          "requires": {
-            "type-fest": "^0.20.2"
-          }
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "type-fest": {
-          "version": "0.20.2",
-          "dev": true
-        }
-      }
-    },
-    "eslint-config-prettier": {
-      "version": "8.10.0",
-      "dev": true
-    },
-    "eslint-plugin-prettier": {
-      "version": "4.2.1",
-      "dev": true,
-      "requires": {
-        "prettier-linter-helpers": "^1.0.0"
-      }
-    },
-    "eslint-plugin-vue": {
-      "version": "9.17.0",
-      "dev": true,
-      "requires": {
-        "@eslint-community/eslint-utils": "^4.4.0",
-        "natural-compare": "^1.4.0",
-        "nth-check": "^2.1.1",
-        "postcss-selector-parser": "^6.0.13",
-        "semver": "^7.5.4",
-        "vue-eslint-parser": "^9.3.1",
-        "xml-name-validator": "^4.0.0"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "semver": {
-          "version": "7.5.4",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "yallist": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
-    "eslint-scope": {
-      "version": "5.1.1",
-      "dev": true,
-      "requires": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^4.1.1"
-      }
-    },
-    "eslint-visitor-keys": {
-      "version": "3.4.3",
-      "dev": true
-    },
-    "espree": {
-      "version": "9.6.1",
-      "dev": true,
-      "requires": {
-        "acorn": "^8.9.0",
-        "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^3.4.1"
-      }
-    },
-    "esquery": {
-      "version": "1.5.0",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.1.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.3.0",
-          "dev": true
-        }
-      }
-    },
-    "esrecurse": {
-      "version": "4.3.0",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.2.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.3.0",
-          "dev": true
-        }
-      }
-    },
-    "estraverse": {
-      "version": "4.3.0",
-      "dev": true
-    },
-    "estree-walker": {
-      "version": "2.0.2"
-    },
-    "esutils": {
-      "version": "2.0.3"
-    },
-    "eventemitter3": {
-      "version": "5.0.1"
-    },
-    "evtd": {
-      "version": "0.2.4",
-      "dev": true
-    },
-    "execa": {
-      "version": "7.2.0",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "^7.0.3",
-        "get-stream": "^6.0.1",
-        "human-signals": "^4.3.0",
-        "is-stream": "^3.0.0",
-        "merge-stream": "^2.0.0",
-        "npm-run-path": "^5.1.0",
-        "onetime": "^6.0.0",
-        "signal-exit": "^3.0.7",
-        "strip-final-newline": "^3.0.0"
-      }
-    },
-    "expand-tilde": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "homedir-polyfill": "^1.0.1"
-      }
-    },
-    "extend": {
-      "version": "3.0.2"
-    },
-    "external-editor": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "chardet": "^0.7.0",
-        "iconv-lite": "^0.4.24",
-        "tmp": "^0.0.33"
-      },
-      "dependencies": {
-        "iconv-lite": {
-          "version": "0.4.24",
-          "dev": true,
-          "requires": {
-            "safer-buffer": ">= 2.1.2 < 3"
-          }
-        }
-      }
-    },
-    "fast-deep-equal": {
-      "version": "3.1.3"
-    },
-    "fast-diff": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "fast-glob": {
-      "version": "3.3.1",
-      "requires": {
-        "@nodelib/fs.stat": "^2.0.2",
-        "@nodelib/fs.walk": "^1.2.3",
-        "glob-parent": "^5.1.2",
-        "merge2": "^1.3.0",
-        "micromatch": "^4.0.4"
-      },
-      "dependencies": {
-        "glob-parent": {
-          "version": "5.1.2",
-          "requires": {
-            "is-glob": "^4.0.1"
-          }
-        }
-      }
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.1.0"
-    },
-    "fast-levenshtein": {
-      "version": "2.0.6",
-      "dev": true
-    },
-    "fastq": {
-      "version": "1.15.0",
-      "requires": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "figures": {
-      "version": "3.2.0",
-      "dev": true,
-      "requires": {
-        "escape-string-regexp": "^1.0.5"
-      }
-    },
-    "file-entry-cache": {
-      "version": "6.0.1",
-      "dev": true,
-      "requires": {
-        "flat-cache": "^3.0.4"
-      }
-    },
-    "file-saver": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
-      "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
-    },
-    "filelist": {
-      "version": "1.0.4",
-      "requires": {
-        "minimatch": "^5.0.1"
-      },
-      "dependencies": {
-        "brace-expansion": {
-          "version": "2.0.1",
-          "requires": {
-            "balanced-match": "^1.0.0"
-          }
-        },
-        "minimatch": {
-          "version": "5.1.6",
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        }
-      }
-    },
-    "fill-range": {
-      "version": "7.0.1",
-      "requires": {
-        "to-regex-range": "^5.0.1"
-      }
-    },
-    "filter-obj": {
-      "version": "5.1.0"
-    },
-    "find-up": {
-      "version": "5.0.0",
-      "dev": true,
-      "requires": {
-        "locate-path": "^6.0.0",
-        "path-exists": "^4.0.0"
-      }
-    },
-    "findup-sync": {
-      "version": "5.0.0",
-      "dev": true,
-      "requires": {
-        "detect-file": "^1.0.0",
-        "is-glob": "^4.0.3",
-        "micromatch": "^4.0.4",
-        "resolve-dir": "^1.0.1"
-      }
-    },
-    "fined": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "expand-tilde": "^2.0.2",
-        "is-plain-object": "^5.0.0",
-        "object.defaults": "^1.1.0",
-        "object.pick": "^1.3.0",
-        "parse-filepath": "^1.0.2"
-      }
-    },
-    "flagged-respawn": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "flat-cache": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "flatted": "^3.1.0",
-        "rimraf": "^3.0.2"
-      }
-    },
-    "flatted": {
-      "version": "3.2.7",
-      "dev": true
-    },
-    "follow-redirects": {
-      "version": "1.15.2"
-    },
-    "for-each": {
-      "version": "0.3.3",
-      "requires": {
-        "is-callable": "^1.1.3"
-      }
-    },
-    "for-in": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "for-own": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "for-in": "^1.0.1"
-      }
-    },
-    "form-data": {
-      "version": "4.0.0",
-      "requires": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.8",
-        "mime-types": "^2.1.12"
-      }
-    },
-    "fraction.js": {
-      "version": "4.2.0",
-      "dev": true
-    },
-    "framework-utils": {
-      "version": "1.1.0"
-    },
-    "fs-extra": {
-      "version": "0.16.5",
-      "requires": {
-        "graceful-fs": "^3.0.5",
-        "jsonfile": "^2.0.0",
-        "rimraf": "^2.2.8"
-      },
-      "dependencies": {
-        "graceful-fs": {
-          "version": "3.0.12",
-          "requires": {
-            "natives": "^1.1.3"
-          }
-        },
-        "rimraf": {
-          "version": "2.7.1",
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        }
-      }
-    },
-    "fs.realpath": {
-      "version": "1.0.0"
-    },
-    "function-bind": {
-      "version": "1.1.1"
-    },
-    "function.prototype.name": {
-      "version": "1.1.5",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.3",
-        "es-abstract": "^1.19.0",
-        "functions-have-names": "^1.2.2"
-      }
-    },
-    "functions-have-names": {
-      "version": "1.2.3"
-    },
-    "gensync": {
-      "version": "1.0.0-beta.2"
-    },
-    "gesto": {
-      "version": "1.19.1",
-      "requires": {
-        "@daybrush/utils": "^1.13.0",
-        "@scena/event-emitter": "^1.0.2"
-      }
-    },
-    "get-intrinsic": {
-      "version": "1.2.1",
-      "requires": {
-        "function-bind": "^1.1.1",
-        "has": "^1.0.3",
-        "has-proto": "^1.0.1",
-        "has-symbols": "^1.0.3"
-      }
-    },
-    "get-own-enumerable-property-symbols": {
-      "version": "3.0.2"
-    },
-    "get-stream": {
-      "version": "6.0.1",
-      "dev": true
-    },
-    "get-symbol-description": {
-      "version": "1.0.0",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "glob": {
-      "version": "7.2.3",
-      "requires": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.1.1",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      }
-    },
-    "glob-parent": {
-      "version": "6.0.2",
-      "dev": true,
-      "requires": {
-        "is-glob": "^4.0.3"
-      }
-    },
-    "global": {
-      "version": "4.3.2",
-      "requires": {
-        "min-document": "^2.19.0",
-        "process": "~0.5.1"
-      }
-    },
-    "global-modules": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "global-prefix": "^1.0.1",
-        "is-windows": "^1.0.1",
-        "resolve-dir": "^1.0.0"
-      }
-    },
-    "global-prefix": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "expand-tilde": "^2.0.2",
-        "homedir-polyfill": "^1.0.1",
-        "ini": "^1.3.4",
-        "is-windows": "^1.0.1",
-        "which": "^1.2.14"
-      },
-      "dependencies": {
-        "which": {
-          "version": "1.3.1",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
-      }
-    },
-    "globals": {
-      "version": "11.12.0"
-    },
-    "globalthis": {
-      "version": "1.0.3",
-      "requires": {
-        "define-properties": "^1.1.3"
-      }
-    },
-    "globby": {
-      "version": "11.1.0",
-      "dev": true,
-      "requires": {
-        "array-union": "^2.1.0",
-        "dir-glob": "^3.0.1",
-        "fast-glob": "^3.2.9",
-        "ignore": "^5.2.0",
-        "merge2": "^1.4.1",
-        "slash": "^3.0.0"
-      }
-    },
-    "gopd": {
-      "version": "1.0.1",
-      "requires": {
-        "get-intrinsic": "^1.1.3"
-      }
-    },
-    "graceful-fs": {
-      "version": "4.2.11"
-    },
-    "graphemer": {
-      "version": "1.4.0",
-      "dev": true
-    },
-    "handlebars": {
-      "version": "4.7.8",
-      "dev": true,
-      "requires": {
-        "minimist": "^1.2.5",
-        "neo-async": "^2.6.2",
-        "source-map": "^0.6.1",
-        "uglify-js": "^3.1.4",
-        "wordwrap": "^1.0.0"
-      }
-    },
-    "has": {
-      "version": "1.0.3",
-      "requires": {
-        "function-bind": "^1.1.1"
-      }
-    },
-    "has-ansi": {
-      "version": "2.0.0",
-      "requires": {
-        "ansi-regex": "^2.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1"
-        }
-      }
-    },
-    "has-bigints": {
-      "version": "1.0.2"
-    },
-    "has-flag": {
-      "version": "3.0.0"
-    },
-    "has-property-descriptors": {
-      "version": "1.0.0",
-      "requires": {
-        "get-intrinsic": "^1.1.1"
-      }
-    },
-    "has-proto": {
-      "version": "1.0.1"
-    },
-    "has-symbols": {
-      "version": "1.0.3"
-    },
-    "has-tostringtag": {
-      "version": "1.0.0",
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "he": {
-      "version": "1.2.0",
-      "dev": true
-    },
-    "header-case": {
-      "version": "2.0.4",
-      "dev": true,
-      "requires": {
-        "capital-case": "^1.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "highlight.js": {
-      "version": "11.8.0",
-      "dev": true
-    },
-    "homedir-polyfill": {
-      "version": "1.0.3",
-      "dev": true,
-      "requires": {
-        "parse-passwd": "^1.0.0"
-      }
-    },
-    "html-tags": {
-      "version": "3.3.1",
-      "dev": true
-    },
-    "html2canvas": {
-      "version": "1.4.1",
-      "requires": {
-        "css-line-break": "^2.1.0",
-        "text-segmentation": "^1.0.3"
-      }
-    },
-    "human-signals": {
-      "version": "4.3.1",
-      "dev": true
-    },
-    "husky": {
-      "version": "8.0.3",
-      "dev": true
-    },
-    "iconv-lite": {
-      "version": "0.6.3",
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3.0.0"
-      }
-    },
-    "idb": {
-      "version": "7.1.1"
-    },
-    "ieee754": {
-      "version": "1.2.1",
-      "dev": true
-    },
-    "ignore": {
-      "version": "5.2.4",
-      "dev": true
-    },
-    "image-size": {
-      "version": "0.5.5",
-      "dev": true,
-      "optional": true
-    },
-    "immediate": {
-      "version": "3.0.6",
-      "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
-      "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
-    },
-    "import-fresh": {
-      "version": "3.3.0",
-      "dev": true,
-      "requires": {
-        "parent-module": "^1.0.0",
-        "resolve-from": "^4.0.0"
-      }
-    },
-    "imurmurhash": {
-      "version": "0.1.4",
-      "dev": true
-    },
-    "indent-string": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "individual": {
-      "version": "2.0.0"
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4"
-    },
-    "ini": {
-      "version": "1.3.8",
-      "dev": true
-    },
-    "inquirer": {
-      "version": "8.2.6",
-      "dev": true,
-      "requires": {
-        "ansi-escapes": "^4.2.1",
-        "chalk": "^4.1.1",
-        "cli-cursor": "^3.1.0",
-        "cli-width": "^3.0.0",
-        "external-editor": "^3.0.3",
-        "figures": "^3.0.0",
-        "lodash": "^4.17.21",
-        "mute-stream": "0.0.8",
-        "ora": "^5.4.1",
-        "run-async": "^2.4.0",
-        "rxjs": "^7.5.5",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0",
-        "through": "^2.3.6",
-        "wrap-ansi": "^6.0.1"
-      },
-      "dependencies": {
-        "ansi-escapes": {
-          "version": "4.3.2",
-          "dev": true,
-          "requires": {
-            "type-fest": "^0.21.3"
-          }
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "bl": {
-          "version": "4.1.0",
-          "dev": true,
-          "requires": {
-            "buffer": "^5.5.0",
-            "inherits": "^2.0.4",
-            "readable-stream": "^3.4.0"
-          }
-        },
-        "buffer": {
-          "version": "5.7.1",
-          "dev": true,
-          "requires": {
-            "base64-js": "^1.3.1",
-            "ieee754": "^1.1.13"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "cli-cursor": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "restore-cursor": "^3.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "dev": true
-        },
-        "emoji-regex": {
-          "version": "8.0.0",
-          "dev": true
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "dev": true
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "is-interactive": {
-          "version": "1.0.0",
-          "dev": true
-        },
-        "is-unicode-supported": {
-          "version": "0.1.0",
-          "dev": true
-        },
-        "log-symbols": {
-          "version": "4.1.0",
-          "dev": true,
-          "requires": {
-            "chalk": "^4.1.0",
-            "is-unicode-supported": "^0.1.0"
-          }
-        },
-        "mimic-fn": {
-          "version": "2.1.0",
-          "dev": true
-        },
-        "onetime": {
-          "version": "5.1.2",
-          "dev": true,
-          "requires": {
-            "mimic-fn": "^2.1.0"
-          }
-        },
-        "ora": {
-          "version": "5.4.1",
-          "dev": true,
-          "requires": {
-            "bl": "^4.1.0",
-            "chalk": "^4.1.0",
-            "cli-cursor": "^3.1.0",
-            "cli-spinners": "^2.5.0",
-            "is-interactive": "^1.0.0",
-            "is-unicode-supported": "^0.1.0",
-            "log-symbols": "^4.1.0",
-            "strip-ansi": "^6.0.0",
-            "wcwidth": "^1.0.1"
-          }
-        },
-        "restore-cursor": {
-          "version": "3.1.0",
-          "dev": true,
-          "requires": {
-            "onetime": "^5.1.0",
-            "signal-exit": "^3.0.2"
-          }
-        },
-        "string-width": {
-          "version": "4.2.3",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.1"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "type-fest": {
-          "version": "0.21.3",
-          "dev": true
-        },
-        "wrap-ansi": {
-          "version": "6.2.0",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.0.0",
-            "string-width": "^4.1.0",
-            "strip-ansi": "^6.0.0"
-          }
-        }
-      }
-    },
-    "internal-slot": {
-      "version": "1.0.5",
-      "requires": {
-        "get-intrinsic": "^1.2.0",
-        "has": "^1.0.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "interpret": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "is-absolute": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "is-relative": "^1.0.0",
-        "is-windows": "^1.0.1"
-      }
-    },
-    "is-array-buffer": {
-      "version": "3.0.2",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.2.0",
-        "is-typed-array": "^1.1.10"
-      }
-    },
-    "is-bigint": {
-      "version": "1.0.4",
-      "requires": {
-        "has-bigints": "^1.0.1"
-      }
-    },
-    "is-binary-path": {
-      "version": "2.1.0",
-      "dev": true,
-      "requires": {
-        "binary-extensions": "^2.0.0"
-      }
-    },
-    "is-boolean-object": {
-      "version": "1.1.2",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-buffer": {
-      "version": "1.1.6"
-    },
-    "is-callable": {
-      "version": "1.2.7"
-    },
-    "is-ci": {
-      "version": "1.2.1",
-      "dev": true,
-      "requires": {
-        "ci-info": "^1.5.0"
-      }
-    },
-    "is-core-module": {
-      "version": "2.13.0",
-      "requires": {
-        "has": "^1.0.3"
-      }
-    },
-    "is-date-object": {
-      "version": "1.0.5",
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-extglob": {
-      "version": "2.1.1"
-    },
-    "is-fullwidth-code-point": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "is-function": {
-      "version": "1.0.2"
-    },
-    "is-glob": {
-      "version": "4.0.3",
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-interactive": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "is-module": {
-      "version": "1.0.0"
-    },
-    "is-negative-zero": {
-      "version": "2.0.2"
-    },
-    "is-number": {
-      "version": "7.0.0"
-    },
-    "is-number-object": {
-      "version": "1.0.7",
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-obj": {
-      "version": "1.0.1"
-    },
-    "is-path-cwd": {
-      "version": "2.2.0",
-      "dev": true
-    },
-    "is-path-inside": {
-      "version": "3.0.3",
-      "dev": true
-    },
-    "is-plain-object": {
-      "version": "5.0.0",
-      "dev": true
-    },
-    "is-regex": {
-      "version": "1.1.4",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-regexp": {
-      "version": "1.0.0"
-    },
-    "is-relative": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "is-unc-path": "^1.0.0"
-      }
-    },
-    "is-shared-array-buffer": {
-      "version": "1.0.2",
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
-    "is-stream": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "is-string": {
-      "version": "1.0.7",
-      "requires": {
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "is-symbol": {
-      "version": "1.0.4",
-      "requires": {
-        "has-symbols": "^1.0.2"
-      }
-    },
-    "is-typed-array": {
-      "version": "1.1.12",
-      "requires": {
-        "which-typed-array": "^1.1.11"
-      }
-    },
-    "is-unc-path": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "unc-path-regex": "^0.1.2"
-      }
-    },
-    "is-unicode-supported": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "is-weakref": {
-      "version": "1.0.2",
-      "requires": {
-        "call-bind": "^1.0.2"
-      }
-    },
-    "is-what": {
-      "version": "3.14.1",
-      "dev": true
-    },
-    "is-windows": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "isarray": {
-      "version": "2.0.5"
-    },
-    "isbinaryfile": {
-      "version": "4.0.10",
-      "dev": true
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "isobject": {
-      "version": "3.0.1",
-      "dev": true
-    },
-    "isomorphic-fetch": {
-      "version": "2.2.1",
-      "requires": {
-        "node-fetch": "^1.0.1",
-        "whatwg-fetch": ">=0.10.0"
-      }
-    },
-    "jake": {
-      "version": "10.8.7",
-      "requires": {
-        "async": "^3.2.3",
-        "chalk": "^4.0.2",
-        "filelist": "^1.0.4",
-        "minimatch": "^3.1.2"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "4.3.0",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4"
-        },
-        "has-flag": {
-          "version": "4.0.0"
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "jest-worker": {
-      "version": "26.6.2",
-      "requires": {
-        "@types/node": "*",
-        "merge-stream": "^2.0.0",
-        "supports-color": "^7.0.0"
-      },
-      "dependencies": {
-        "has-flag": {
-          "version": "4.0.0"
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        }
-      }
-    },
-    "js-base64": {
-      "version": "2.6.4"
-    },
-    "js-binary-schema-parser": {
-      "version": "2.0.3"
-    },
-    "js-tokens": {
-      "version": "4.0.0"
-    },
-    "js-yaml": {
-      "version": "4.1.0",
-      "dev": true,
-      "requires": {
-        "argparse": "^2.0.1"
-      }
-    },
-    "jsencrypt": {
-      "version": "3.3.2"
-    },
-    "jsesc": {
-      "version": "2.5.2"
-    },
-    "json-schema": {
-      "version": "0.4.0"
-    },
-    "json-schema-traverse": {
-      "version": "0.4.1",
-      "dev": true
-    },
-    "json-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "json5": {
-      "version": "2.2.3"
-    },
-    "jsonfile": {
-      "version": "2.4.0",
-      "requires": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "jsonpointer": {
-      "version": "5.0.1"
-    },
-    "jszip": {
-      "version": "3.10.1",
-      "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
-      "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
-      "requires": {
-        "lie": "~3.3.0",
-        "pako": "~1.0.2",
-        "readable-stream": "~2.3.6",
-        "setimmediate": "^1.0.5"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
-          "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
-        },
-        "readable-stream": {
-          "version": "2.3.8",
-          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
-          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.3",
-            "isarray": "~1.0.0",
-            "process-nextick-args": "~2.0.0",
-            "safe-buffer": "~5.1.1",
-            "string_decoder": "~1.1.1",
-            "util-deprecate": "~1.0.1"
-          }
-        },
-        "safe-buffer": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
-          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-        },
-        "string_decoder": {
-          "version": "1.1.1",
-          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
-          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-          "requires": {
-            "safe-buffer": "~5.1.0"
-          }
-        }
-      }
-    },
-    "keycode": {
-      "version": "2.2.1"
-    },
-    "keycon": {
-      "version": "1.4.0",
-      "requires": {
-        "@cfcs/core": "^0.0.6",
-        "@daybrush/utils": "^1.7.1",
-        "@scena/event-emitter": "^1.0.2",
-        "keycode": "^2.2.0"
-      }
-    },
-    "kind-of": {
-      "version": "6.0.3",
-      "dev": true
-    },
-    "less": {
-      "version": "4.2.0",
-      "dev": true,
-      "requires": {
-        "copy-anything": "^2.0.1",
-        "errno": "^0.1.1",
-        "graceful-fs": "^4.1.2",
-        "image-size": "~0.5.0",
-        "make-dir": "^2.1.0",
-        "mime": "^1.4.1",
-        "needle": "^3.1.0",
-        "parse-node-version": "^1.0.1",
-        "source-map": "~0.6.0",
-        "tslib": "^2.3.0"
-      }
-    },
-    "leven": {
-      "version": "3.1.0"
-    },
-    "levn": {
-      "version": "0.4.1",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "^1.2.1",
-        "type-check": "~0.4.0"
-      }
-    },
-    "lib-flexible": {
-      "version": "0.3.2"
-    },
-    "lie": {
-      "version": "3.3.0",
-      "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz",
-      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
-      "requires": {
-        "immediate": "~3.0.5"
-      }
-    },
-    "liftoff": {
-      "version": "4.0.0",
-      "dev": true,
-      "requires": {
-        "extend": "^3.0.2",
-        "findup-sync": "^5.0.0",
-        "fined": "^2.0.0",
-        "flagged-respawn": "^2.0.0",
-        "is-plain-object": "^5.0.0",
-        "object.map": "^1.0.1",
-        "rechoir": "^0.8.0",
-        "resolve": "^1.20.0"
-      }
-    },
-    "lilconfig": {
-      "version": "2.1.0",
-      "dev": true
-    },
-    "lint-staged": {
-      "version": "13.3.0",
-      "dev": true,
-      "requires": {
-        "chalk": "5.3.0",
-        "commander": "11.0.0",
-        "debug": "4.3.4",
-        "execa": "7.2.0",
-        "lilconfig": "2.1.0",
-        "listr2": "6.6.1",
-        "micromatch": "4.0.5",
-        "pidtree": "0.6.0",
-        "string-argv": "0.3.2",
-        "yaml": "2.3.1"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "5.3.0",
-          "dev": true
-        }
-      }
-    },
-    "listr2": {
-      "version": "6.6.1",
-      "dev": true,
-      "requires": {
-        "cli-truncate": "^3.1.0",
-        "colorette": "^2.0.20",
-        "eventemitter3": "^5.0.1",
-        "log-update": "^5.0.1",
-        "rfdc": "^1.3.0",
-        "wrap-ansi": "^8.1.0"
-      }
-    },
-    "loader-utils": {
-      "version": "1.4.2",
-      "requires": {
-        "big.js": "^5.2.2",
-        "emojis-list": "^3.0.0",
-        "json5": "^1.0.1"
-      },
-      "dependencies": {
-        "json5": {
-          "version": "1.0.2",
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        }
-      }
-    },
-    "loadjs": {
-      "version": "4.2.0"
-    },
-    "local-pkg": {
-      "version": "0.4.3",
-      "dev": true
-    },
-    "locate-path": {
-      "version": "6.0.0",
-      "dev": true,
-      "requires": {
-        "p-locate": "^5.0.0"
-      }
-    },
-    "lodash": {
-      "version": "4.17.21"
-    },
-    "lodash-es": {
-      "version": "4.17.21"
-    },
-    "lodash.debounce": {
-      "version": "4.0.8"
-    },
-    "lodash.get": {
-      "version": "4.4.2",
-      "dev": true
-    },
-    "lodash.isempty": {
-      "version": "4.4.0"
-    },
-    "lodash.isplainobject": {
-      "version": "4.0.6"
-    },
-    "lodash.merge": {
-      "version": "4.6.2",
-      "dev": true
-    },
-    "lodash.sortby": {
-      "version": "4.7.0"
-    },
-    "lodash.transform": {
-      "version": "4.6.0"
-    },
-    "log-symbols": {
-      "version": "5.1.0",
-      "dev": true,
-      "requires": {
-        "chalk": "^5.0.0",
-        "is-unicode-supported": "^1.1.0"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "5.3.0",
-          "dev": true
-        }
-      }
-    },
-    "log-update": {
-      "version": "5.0.1",
-      "dev": true,
-      "requires": {
-        "ansi-escapes": "^5.0.0",
-        "cli-cursor": "^4.0.0",
-        "slice-ansi": "^5.0.0",
-        "strip-ansi": "^7.0.1",
-        "wrap-ansi": "^8.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "6.0.1",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
-      }
-    },
-    "lottie-web": {
-      "version": "5.12.2"
-    },
-    "lower-case": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "tslib": "^2.0.3"
-      }
-    },
-    "lru-cache": {
-      "version": "5.1.1",
-      "requires": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "magic-string": {
-      "version": "0.30.2",
-      "requires": {
-        "@jridgewell/sourcemap-codec": "^1.4.15"
-      }
-    },
-    "make-dir": {
-      "version": "2.1.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "pify": "^4.0.1",
-        "semver": "^5.6.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.2",
-          "dev": true,
-          "optional": true
-        }
-      }
-    },
-    "make-iterator": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "kind-of": "^6.0.2"
-      }
-    },
-    "map-cache": {
-      "version": "0.2.2",
-      "dev": true
-    },
-    "md5": {
-      "version": "2.3.0",
-      "requires": {
-        "charenc": "0.0.2",
-        "crypt": "0.0.2",
-        "is-buffer": "~1.1.6"
-      }
-    },
-    "merge-stream": {
-      "version": "2.0.0"
-    },
-    "merge2": {
-      "version": "1.4.1"
-    },
-    "micromatch": {
-      "version": "4.0.5",
-      "requires": {
-        "braces": "^3.0.2",
-        "picomatch": "^2.3.1"
-      }
-    },
-    "mime": {
-      "version": "1.6.0",
-      "dev": true,
-      "optional": true
-    },
-    "mime-db": {
-      "version": "1.52.0"
-    },
-    "mime-types": {
-      "version": "2.1.35",
-      "requires": {
-        "mime-db": "1.52.0"
-      }
-    },
-    "mimic-fn": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "mimic-response": {
-      "version": "3.1.0"
-    },
-    "min-document": {
-      "version": "2.19.0",
-      "requires": {
-        "dom-walk": "^0.1.0"
-      }
-    },
-    "minimatch": {
-      "version": "3.1.2",
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "minimist": {
-      "version": "1.2.8"
-    },
-    "mkdirp": {
-      "version": "1.0.4",
-      "dev": true
-    },
-    "moveable": {
-      "version": "0.49.1",
-      "requires": {
-        "@daybrush/utils": "^1.13.0",
-        "@scena/event-emitter": "^1.0.5",
-        "croact": "^1.0.4",
-        "croact-moveable": "~0.5.1",
-        "react-moveable": "~0.52.1"
-      }
-    },
-    "ms": {
-      "version": "2.1.2"
-    },
-    "muggle-string": {
-      "version": "0.3.1",
-      "dev": true
-    },
-    "mute-stream": {
-      "version": "0.0.8",
-      "dev": true
-    },
-    "naive-ui": {
-      "version": "2.34.4",
-      "dev": true,
-      "requires": {
-        "@css-render/plugin-bem": "^0.15.10",
-        "@css-render/vue3-ssr": "^0.15.10",
-        "@types/katex": "^0.14.0",
-        "@types/lodash": "^4.14.181",
-        "@types/lodash-es": "^4.17.6",
-        "async-validator": "^4.0.7",
-        "css-render": "^0.15.10",
-        "date-fns": "^2.28.0",
-        "date-fns-tz": "^1.3.3",
-        "evtd": "^0.2.4",
-        "highlight.js": "^11.5.0",
-        "lodash": "^4.17.21",
-        "lodash-es": "^4.17.21",
-        "seemly": "^0.3.6",
-        "treemate": "^0.3.11",
-        "vdirs": "^0.1.8",
-        "vooks": "^0.2.12",
-        "vueuc": "^0.4.51"
-      }
-    },
-    "nanoid": {
-      "version": "3.3.6"
-    },
-    "natives": {
-      "version": "1.1.6"
-    },
-    "natural-compare": {
-      "version": "1.4.0",
-      "dev": true
-    },
-    "natural-compare-lite": {
-      "version": "1.4.0",
-      "dev": true
-    },
-    "needle": {
-      "version": "3.2.0",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "debug": "^3.2.6",
-        "iconv-lite": "^0.6.3",
-        "sax": "^1.2.4"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        }
-      }
-    },
-    "neo-async": {
-      "version": "2.6.2",
-      "dev": true
-    },
-    "no-case": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "lower-case": "^2.0.2",
-        "tslib": "^2.0.3"
-      }
-    },
-    "node-fetch": {
-      "version": "1.7.3",
-      "requires": {
-        "encoding": "^0.1.11",
-        "is-stream": "^1.0.1"
-      },
-      "dependencies": {
-        "is-stream": {
-          "version": "1.1.0"
-        }
-      }
-    },
-    "node-plop": {
-      "version": "0.31.1",
-      "dev": true,
-      "requires": {
-        "@types/inquirer": "^8.2.1",
-        "change-case": "^4.1.2",
-        "del": "^6.0.0",
-        "globby": "^13.1.1",
-        "handlebars": "^4.4.3",
-        "inquirer": "^8.2.2",
-        "isbinaryfile": "^4.0.8",
-        "lodash.get": "^4.4.2",
-        "lower-case": "^2.0.2",
-        "mkdirp": "^1.0.4",
-        "resolve": "^1.20.0",
-        "title-case": "^3.0.3",
-        "upper-case": "^2.0.2"
-      },
-      "dependencies": {
-        "globby": {
-          "version": "13.2.2",
-          "dev": true,
-          "requires": {
-            "dir-glob": "^3.0.1",
-            "fast-glob": "^3.3.0",
-            "ignore": "^5.2.4",
-            "merge2": "^1.4.1",
-            "slash": "^4.0.0"
-          }
-        },
-        "slash": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
-    "node-releases": {
-      "version": "2.0.13"
-    },
-    "normalize-path": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "normalize-range": {
-      "version": "0.1.2",
-      "dev": true
-    },
-    "npm-run-path": {
-      "version": "5.1.0",
-      "dev": true,
-      "requires": {
-        "path-key": "^4.0.0"
-      },
-      "dependencies": {
-        "path-key": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
-    "nth-check": {
-      "version": "2.1.1",
-      "dev": true,
-      "requires": {
-        "boolbase": "^1.0.0"
-      }
-    },
-    "numeral": {
-      "version": "2.0.6"
-    },
-    "object-assign": {
-      "version": "4.1.1"
-    },
-    "object-inspect": {
-      "version": "1.12.3"
-    },
-    "object-keys": {
-      "version": "1.1.1"
-    },
-    "object.assign": {
-      "version": "4.1.4",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "has-symbols": "^1.0.3",
-        "object-keys": "^1.1.1"
-      }
-    },
-    "object.defaults": {
-      "version": "1.1.0",
-      "dev": true,
-      "requires": {
-        "array-each": "^1.0.1",
-        "array-slice": "^1.0.0",
-        "for-own": "^1.0.0",
-        "isobject": "^3.0.0"
-      }
-    },
-    "object.map": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "for-own": "^1.0.0",
-        "make-iterator": "^1.0.0"
-      }
-    },
-    "object.pick": {
-      "version": "1.3.0",
-      "dev": true,
-      "requires": {
-        "isobject": "^3.0.1"
-      }
-    },
-    "once": {
-      "version": "1.4.0",
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "onetime": {
-      "version": "6.0.0",
-      "dev": true,
-      "requires": {
-        "mimic-fn": "^4.0.0"
-      }
-    },
-    "optionator": {
-      "version": "0.9.3",
-      "dev": true,
-      "requires": {
-        "@aashutoshrathi/word-wrap": "^1.2.3",
-        "deep-is": "^0.1.3",
-        "fast-levenshtein": "^2.0.6",
-        "levn": "^0.4.1",
-        "prelude-ls": "^1.2.1",
-        "type-check": "^0.4.0"
-      }
-    },
-    "ora": {
-      "version": "6.3.1",
-      "dev": true,
-      "requires": {
-        "chalk": "^5.0.0",
-        "cli-cursor": "^4.0.0",
-        "cli-spinners": "^2.6.1",
-        "is-interactive": "^2.0.0",
-        "is-unicode-supported": "^1.1.0",
-        "log-symbols": "^5.1.0",
-        "stdin-discarder": "^0.1.0",
-        "strip-ansi": "^7.0.1",
-        "wcwidth": "^1.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "6.0.1",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.3.0",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
-      }
-    },
-    "os-tmpdir": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "overlap-area": {
-      "version": "1.1.0",
-      "requires": {
-        "@daybrush/utils": "^1.7.1"
-      }
-    },
-    "p-finally": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "p-limit": {
-      "version": "3.1.0",
-      "dev": true,
-      "requires": {
-        "yocto-queue": "^0.1.0"
-      }
-    },
-    "p-locate": {
-      "version": "5.0.0",
-      "dev": true,
-      "requires": {
-        "p-limit": "^3.0.2"
-      }
-    },
-    "p-map": {
-      "version": "4.0.0",
-      "dev": true,
-      "requires": {
-        "aggregate-error": "^3.0.0"
-      }
-    },
-    "pako": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
-      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
-    },
-    "param-case": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "dot-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "parent-module": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "callsites": "^3.0.0"
-      }
-    },
-    "parenthesis": {
-      "version": "3.1.8"
-    },
-    "parse-filepath": {
-      "version": "1.0.2",
-      "dev": true,
-      "requires": {
-        "is-absolute": "^1.0.0",
-        "map-cache": "^0.2.0",
-        "path-root": "^0.1.1"
-      }
-    },
-    "parse-headers": {
-      "version": "2.0.5"
-    },
-    "parse-node-version": {
-      "version": "1.0.1",
-      "dev": true
-    },
-    "parse-passwd": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "pascal-case": {
-      "version": "3.1.2",
-      "dev": true,
-      "requires": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "path-case": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "dot-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "path-exists": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "path-is-absolute": {
-      "version": "1.0.1"
-    },
-    "path-key": {
-      "version": "3.1.1",
-      "dev": true
-    },
-    "path-parse": {
-      "version": "1.0.7"
-    },
-    "path-root": {
-      "version": "0.1.1",
-      "dev": true,
-      "requires": {
-        "path-root-regex": "^0.1.0"
-      }
-    },
-    "path-root-regex": {
-      "version": "0.1.2",
-      "dev": true
-    },
-    "path-type": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "picocolors": {
-      "version": "1.0.0"
-    },
-    "picomatch": {
-      "version": "2.3.1"
-    },
-    "pidtree": {
-      "version": "0.6.0",
-      "dev": true
-    },
-    "pify": {
-      "version": "4.0.1",
-      "dev": true,
-      "optional": true
-    },
-    "pinia": {
-      "version": "2.1.6",
-      "requires": {
-        "@vue/devtools-api": "^6.5.0",
-        "vue-demi": ">=0.14.5"
-      }
-    },
-    "plop": {
-      "version": "3.1.2",
-      "dev": true,
-      "requires": {
-        "@types/liftoff": "^4.0.0",
-        "chalk": "^5.0.1",
-        "interpret": "^2.2.0",
-        "liftoff": "^4.0.0",
-        "minimist": "^1.2.6",
-        "node-plop": "^0.31.1",
-        "ora": "^6.0.1",
-        "v8flags": "^4.0.0"
-      },
-      "dependencies": {
-        "chalk": {
-          "version": "5.3.0",
-          "dev": true
-        }
-      }
-    },
-    "plyr": {
-      "version": "3.7.8",
-      "requires": {
-        "core-js": "^3.26.1",
-        "custom-event-polyfill": "^1.0.7",
-        "loadjs": "^4.2.0",
-        "rangetouch": "^2.0.1",
-        "url-polyfill": "^1.1.12"
-      }
-    },
-    "postcss": {
-      "version": "8.4.28",
-      "requires": {
-        "nanoid": "^3.3.6",
-        "picocolors": "^1.0.0",
-        "source-map-js": "^1.0.2"
-      }
-    },
-    "postcss-px-to-viewport": {
-      "version": "1.1.1",
-      "dev": true,
-      "requires": {
-        "object-assign": ">=4.0.1",
-        "postcss": ">=5.0.2"
-      }
-    },
-    "postcss-px2rem": {
-      "version": "0.3.0",
-      "requires": {
-        "postcss": "^5.0.0",
-        "px2rem": "~0.5.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1"
-        },
-        "ansi-styles": {
-          "version": "2.2.1"
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          },
-          "dependencies": {
-            "supports-color": {
-              "version": "2.0.0"
-            }
-          }
-        },
-        "has-flag": {
-          "version": "1.0.0"
-        },
-        "postcss": {
-          "version": "5.2.18",
-          "requires": {
-            "chalk": "^1.1.3",
-            "js-base64": "^2.1.9",
-            "source-map": "^0.5.6",
-            "supports-color": "^3.2.3"
-          }
-        },
-        "source-map": {
-          "version": "0.5.7"
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "3.2.3",
-          "requires": {
-            "has-flag": "^1.0.0"
-          }
-        }
-      }
-    },
-    "postcss-selector-parser": {
-      "version": "6.0.13",
-      "dev": true,
-      "requires": {
-        "cssesc": "^3.0.0",
-        "util-deprecate": "^1.0.2"
-      }
-    },
-    "postcss-value-parser": {
-      "version": "4.2.0",
-      "dev": true
-    },
-    "prelude-ls": {
-      "version": "1.2.1",
-      "dev": true
-    },
-    "prettier": {
-      "version": "2.8.8",
-      "dev": true
-    },
-    "prettier-linter-helpers": {
-      "version": "1.0.0",
-      "dev": true,
-      "requires": {
-        "fast-diff": "^1.1.2"
-      }
-    },
-    "pretty-bytes": {
-      "version": "6.1.1"
-    },
-    "process": {
-      "version": "0.5.2"
-    },
-    "process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
-    },
-    "proxy-from-env": {
-      "version": "1.1.0"
-    },
-    "prr": {
-      "version": "1.0.1",
-      "dev": true,
-      "optional": true
-    },
-    "pseudomap": {
-      "version": "1.0.2",
-      "dev": true
-    },
-    "punycode": {
-      "version": "2.3.0"
-    },
-    "px2rem": {
-      "version": "0.5.0",
-      "requires": {
-        "chalk": "~0.5.1",
-        "commander": "~2.6.0",
-        "css": "~2.2.0",
-        "extend": "~3.0.0",
-        "fs-extra": "~0.16.3"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "0.2.1"
-        },
-        "ansi-styles": {
-          "version": "1.1.0"
-        },
-        "chalk": {
-          "version": "0.5.1",
-          "requires": {
-            "ansi-styles": "^1.1.0",
-            "escape-string-regexp": "^1.0.0",
-            "has-ansi": "^0.1.0",
-            "strip-ansi": "^0.3.0",
-            "supports-color": "^0.2.0"
-          }
-        },
-        "commander": {
-          "version": "2.6.0"
-        },
-        "has-ansi": {
-          "version": "0.1.0",
-          "requires": {
-            "ansi-regex": "^0.2.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "0.3.0",
-          "requires": {
-            "ansi-regex": "^0.2.1"
-          }
-        },
-        "supports-color": {
-          "version": "0.2.0"
-        }
-      }
-    },
-    "px2rem-loader": {
-      "version": "0.1.9",
-      "requires": {
-        "loader-utils": "^1.1.0",
-        "px2rem": "^0.5.0"
-      }
-    },
-    "qs": {
-      "version": "6.11.2",
-      "requires": {
-        "side-channel": "^1.0.4"
-      }
-    },
-    "query-string": {
-      "version": "8.1.0",
-      "requires": {
-        "decode-uri-component": "^0.4.1",
-        "filter-obj": "^5.1.0",
-        "split-on-first": "^3.0.0"
-      }
-    },
-    "queue-microtask": {
-      "version": "1.2.3"
-    },
-    "randombytes": {
-      "version": "2.1.0",
-      "requires": {
-        "safe-buffer": "^5.1.0"
-      }
-    },
-    "rangetouch": {
-      "version": "2.0.1"
-    },
-    "react-css-styled": {
-      "version": "1.1.9",
-      "requires": {
-        "css-styled": "~1.0.8",
-        "framework-utils": "^1.1.0"
-      }
-    },
-    "react-moveable": {
-      "version": "0.52.1",
-      "requires": {
-        "@daybrush/utils": "^1.13.0",
-        "@egjs/agent": "^2.2.1",
-        "@egjs/children-differ": "^1.0.1",
-        "@egjs/list-differ": "^1.0.0",
-        "@scena/dragscroll": "^1.4.0",
-        "@scena/event-emitter": "^1.0.5",
-        "@scena/matrix": "^1.1.1",
-        "css-to-mat": "^1.1.1",
-        "framework-utils": "^1.1.0",
-        "gesto": "^1.19.0",
-        "overlap-area": "^1.1.0",
-        "react-css-styled": "^1.1.9",
-        "react-selecto": "^1.25.0"
-      }
-    },
-    "react-selecto": {
-      "version": "1.26.0",
-      "requires": {
-        "selecto": "~1.26.0"
-      }
-    },
-    "readable-stream": {
-      "version": "3.6.2",
-      "dev": true,
-      "requires": {
-        "inherits": "^2.0.3",
-        "string_decoder": "^1.1.1",
-        "util-deprecate": "^1.0.1"
-      }
-    },
-    "readdirp": {
-      "version": "3.6.0",
-      "dev": true,
-      "requires": {
-        "picomatch": "^2.2.1"
-      }
-    },
-    "rechoir": {
-      "version": "0.8.0",
-      "dev": true,
-      "requires": {
-        "resolve": "^1.20.0"
-      }
-    },
-    "regenerate": {
-      "version": "1.4.2"
-    },
-    "regenerate-unicode-properties": {
-      "version": "10.1.0",
-      "requires": {
-        "regenerate": "^1.4.2"
-      }
-    },
-    "regenerator-runtime": {
-      "version": "0.13.11",
-      "dev": true
-    },
-    "regenerator-transform": {
-      "version": "0.15.2",
-      "requires": {
-        "@babel/runtime": "^7.8.4"
-      }
-    },
-    "regexp.prototype.flags": {
-      "version": "1.5.0",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.2.0",
-        "functions-have-names": "^1.2.3"
-      }
-    },
-    "regexpu-core": {
-      "version": "5.3.2",
-      "requires": {
-        "@babel/regjsgen": "^0.8.0",
-        "regenerate": "^1.4.2",
-        "regenerate-unicode-properties": "^10.1.0",
-        "regjsparser": "^0.9.1",
-        "unicode-match-property-ecmascript": "^2.0.0",
-        "unicode-match-property-value-ecmascript": "^2.1.0"
-      }
-    },
-    "regjsparser": {
-      "version": "0.9.1",
-      "requires": {
-        "jsesc": "~0.5.0"
-      },
-      "dependencies": {
-        "jsesc": {
-          "version": "0.5.0"
-        }
-      }
-    },
-    "require-from-string": {
-      "version": "2.0.2"
-    },
-    "resolve": {
-      "version": "1.22.4",
-      "requires": {
-        "is-core-module": "^2.13.0",
-        "path-parse": "^1.0.7",
-        "supports-preserve-symlinks-flag": "^1.0.0"
-      }
-    },
-    "resolve-dir": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "expand-tilde": "^2.0.0",
-        "global-modules": "^1.0.0"
-      }
-    },
-    "resolve-from": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "resolve-url": {
-      "version": "0.2.1"
-    },
-    "restore-cursor": {
-      "version": "4.0.0",
-      "dev": true,
-      "requires": {
-        "onetime": "^5.1.0",
-        "signal-exit": "^3.0.2"
-      },
-      "dependencies": {
-        "mimic-fn": {
-          "version": "2.1.0",
-          "dev": true
-        },
-        "onetime": {
-          "version": "5.1.2",
-          "dev": true,
-          "requires": {
-            "mimic-fn": "^2.1.0"
-          }
-        }
-      }
-    },
-    "reusify": {
-      "version": "1.0.4"
-    },
-    "rfdc": {
-      "version": "1.3.0",
-      "dev": true
-    },
-    "rimraf": {
-      "version": "3.0.2",
-      "dev": true,
-      "requires": {
-        "glob": "^7.1.3"
-      }
-    },
-    "rollup": {
-      "version": "3.28.0",
-      "dev": true,
-      "requires": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "rollup-plugin-terser": {
-      "version": "7.0.2",
-      "requires": {
-        "@babel/code-frame": "^7.10.4",
-        "jest-worker": "^26.2.1",
-        "serialize-javascript": "^4.0.0",
-        "terser": "^5.0.0"
-      }
-    },
-    "run-async": {
-      "version": "2.4.1",
-      "dev": true
-    },
-    "run-parallel": {
-      "version": "1.2.0",
-      "requires": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "rust-result": {
-      "version": "1.0.0",
-      "requires": {
-        "individual": "^2.0.0"
-      }
-    },
-    "rxjs": {
-      "version": "7.8.1",
-      "dev": true,
-      "requires": {
-        "tslib": "^2.1.0"
-      }
-    },
-    "safe-array-concat": {
-      "version": "1.0.0",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.2.0",
-        "has-symbols": "^1.0.3",
-        "isarray": "^2.0.5"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.2.1"
-    },
-    "safe-json-parse": {
-      "version": "4.0.0",
-      "requires": {
-        "rust-result": "^1.0.0"
-      }
-    },
-    "safe-regex-test": {
-      "version": "1.0.0",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.1.3",
-        "is-regex": "^1.1.4"
-      }
-    },
-    "safer-buffer": {
-      "version": "2.1.2"
-    },
-    "sax": {
-      "version": "1.2.4",
-      "dev": true,
-      "optional": true
-    },
-    "seemly": {
-      "version": "0.3.6",
-      "dev": true
-    },
-    "selecto": {
-      "version": "1.26.0",
-      "requires": {
-        "@daybrush/utils": "^1.13.0",
-        "@egjs/children-differ": "^1.0.1",
-        "@scena/dragscroll": "^1.4.0",
-        "@scena/event-emitter": "^1.0.5",
-        "css-styled": "^1.0.8",
-        "css-to-mat": "^1.1.1",
-        "framework-utils": "^1.1.0",
-        "gesto": "^1.19.1",
-        "keycon": "^1.2.0",
-        "overlap-area": "^1.1.0"
-      }
-    },
-    "semver": {
-      "version": "6.3.1"
-    },
-    "sentence-case": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "no-case": "^3.0.4",
-        "tslib": "^2.0.3",
-        "upper-case-first": "^2.0.2"
-      }
-    },
-    "serialize-javascript": {
-      "version": "4.0.0",
-      "requires": {
-        "randombytes": "^2.1.0"
-      }
-    },
-    "setimmediate": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
-      "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
-    },
-    "shebang-command": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "^3.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "side-channel": {
-      "version": "1.0.4",
-      "requires": {
-        "call-bind": "^1.0.0",
-        "get-intrinsic": "^1.0.2",
-        "object-inspect": "^1.9.0"
-      }
-    },
-    "signal-exit": {
-      "version": "3.0.7",
-      "dev": true
-    },
-    "simple-concat": {
-      "version": "1.0.1"
-    },
-    "simple-get": {
-      "version": "4.0.1",
-      "requires": {
-        "decompress-response": "^6.0.0",
-        "once": "^1.3.1",
-        "simple-concat": "^1.0.0"
-      }
-    },
-    "slash": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "slice-ansi": {
-      "version": "5.0.0",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^6.0.0",
-        "is-fullwidth-code-point": "^4.0.0"
-      },
-      "dependencies": {
-        "ansi-styles": {
-          "version": "6.2.1",
-          "dev": true
-        }
-      }
-    },
-    "snake-case": {
-      "version": "3.0.4",
-      "dev": true,
-      "requires": {
-        "dot-case": "^3.0.4",
-        "tslib": "^2.0.3"
-      }
-    },
-    "sortablejs": {
-      "version": "1.14.0"
-    },
-    "source-map": {
-      "version": "0.6.1"
-    },
-    "source-map-js": {
-      "version": "1.0.2"
-    },
-    "source-map-resolve": {
-      "version": "0.5.3",
-      "requires": {
-        "atob": "^2.1.2",
-        "decode-uri-component": "^0.2.0",
-        "resolve-url": "^0.2.1",
-        "source-map-url": "^0.4.0",
-        "urix": "^0.1.0"
-      },
-      "dependencies": {
-        "decode-uri-component": {
-          "version": "0.2.2"
-        }
-      }
-    },
-    "source-map-support": {
-      "version": "0.5.21",
-      "requires": {
-        "buffer-from": "^1.0.0",
-        "source-map": "^0.6.0"
-      }
-    },
-    "source-map-url": {
-      "version": "0.4.1"
-    },
-    "sourcemap-codec": {
-      "version": "1.4.8"
-    },
-    "split-on-first": {
-      "version": "3.0.0"
-    },
-    "stdin-discarder": {
-      "version": "0.1.0",
-      "dev": true,
-      "requires": {
-        "bl": "^5.0.0"
-      }
-    },
-    "store": {
-      "version": "2.0.12"
-    },
-    "store2": {
-      "version": "2.14.2"
-    },
-    "strict-uri-encode": {
-      "version": "1.1.0"
-    },
-    "string_decoder": {
-      "version": "1.3.0",
-      "dev": true,
-      "requires": {
-        "safe-buffer": "~5.2.0"
-      }
-    },
-    "string-argv": {
-      "version": "0.3.2",
-      "dev": true
-    },
-    "string-split-by": {
-      "version": "1.0.0",
-      "requires": {
-        "parenthesis": "^3.1.5"
-      }
-    },
-    "string-width": {
-      "version": "5.1.2",
-      "dev": true,
-      "requires": {
-        "eastasianwidth": "^0.2.0",
-        "emoji-regex": "^9.2.2",
-        "strip-ansi": "^7.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "6.0.1",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
-      }
-    },
-    "string.prototype.matchall": {
-      "version": "4.0.8",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4",
-        "get-intrinsic": "^1.1.3",
-        "has-symbols": "^1.0.3",
-        "internal-slot": "^1.0.3",
-        "regexp.prototype.flags": "^1.4.3",
-        "side-channel": "^1.0.4"
-      }
-    },
-    "string.prototype.trim": {
-      "version": "1.2.7",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "string.prototype.trimend": {
-      "version": "1.0.6",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "string.prototype.trimstart": {
-      "version": "1.0.6",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "define-properties": "^1.1.4",
-        "es-abstract": "^1.20.4"
-      }
-    },
-    "stringify-object": {
-      "version": "3.3.0",
-      "requires": {
-        "get-own-enumerable-property-symbols": "^3.0.0",
-        "is-obj": "^1.0.1",
-        "is-regexp": "^1.0.0"
-      }
-    },
-    "strip-ansi": {
-      "version": "6.0.1",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^5.0.1"
-      }
-    },
-    "strip-comments": {
-      "version": "2.0.1"
-    },
-    "strip-eof": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "strip-final-newline": {
-      "version": "3.0.0",
-      "dev": true
-    },
-    "strip-indent": {
-      "version": "2.0.0",
-      "dev": true
-    },
-    "strip-json-comments": {
-      "version": "3.1.1",
-      "dev": true
-    },
-    "supports-color": {
-      "version": "5.5.0",
-      "requires": {
-        "has-flag": "^3.0.0"
-      }
-    },
-    "supports-preserve-symlinks-flag": {
-      "version": "1.0.0"
-    },
-    "svg-tags": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "systemjs": {
-      "version": "6.14.2",
-      "dev": true
-    },
-    "tcplayer.js": {
-      "version": "4.8.0",
-      "requires": {
-        "babel-runtime": "^6.9.2",
-        "blueimp-md5": "^2.10.0",
-        "global": "4.3.2",
-        "jsencrypt": "^3.2.0",
-        "md5": "^2.3.0",
-        "query-string": "^5.0.1",
-        "safe-json-parse": "4.0.0",
-        "store": "^2.0.12",
-        "store2": "^2.7.1",
-        "tsml": "1.0.1",
-        "videojs-font": "2.1.0",
-        "videojs-ie8": "1.1.2",
-        "videojs-vtt.js": "0.12.4",
-        "xhr": "2.4.0"
-      },
-      "dependencies": {
-        "decode-uri-component": {
-          "version": "0.2.2"
-        },
-        "query-string": {
-          "version": "5.1.1",
-          "requires": {
-            "decode-uri-component": "^0.2.0",
-            "object-assign": "^4.1.0",
-            "strict-uri-encode": "^1.0.0"
-          }
-        }
-      }
-    },
-    "temp-dir": {
-      "version": "2.0.0"
-    },
-    "tempy": {
-      "version": "0.6.0",
-      "requires": {
-        "is-stream": "^2.0.0",
-        "temp-dir": "^2.0.0",
-        "type-fest": "^0.16.0",
-        "unique-string": "^2.0.0"
-      },
-      "dependencies": {
-        "is-stream": {
-          "version": "2.0.1"
-        },
-        "type-fest": {
-          "version": "0.16.0"
-        }
-      }
-    },
-    "terser": {
-      "version": "5.19.2",
-      "requires": {
-        "@jridgewell/source-map": "^0.3.3",
-        "acorn": "^8.8.2",
-        "commander": "^2.20.0",
-        "source-map-support": "~0.5.20"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.20.3"
-        }
-      }
-    },
-    "text-segmentation": {
-      "version": "1.0.3",
-      "requires": {
-        "utrie": "^1.0.2"
-      }
-    },
-    "text-table": {
-      "version": "0.2.0",
-      "dev": true
-    },
-    "through": {
-      "version": "2.3.8",
-      "dev": true
-    },
-    "title-case": {
-      "version": "3.0.3",
-      "dev": true,
-      "requires": {
-        "tslib": "^2.0.3"
-      }
-    },
-    "tmp": {
-      "version": "0.0.33",
-      "dev": true,
-      "requires": {
-        "os-tmpdir": "~1.0.2"
-      }
-    },
-    "to-fast-properties": {
-      "version": "2.0.0"
-    },
-    "to-regex-range": {
-      "version": "5.0.1",
-      "requires": {
-        "is-number": "^7.0.0"
-      }
-    },
-    "tr46": {
-      "version": "0.0.3",
-      "dev": true
-    },
-    "treemate": {
-      "version": "0.3.11",
-      "dev": true
-    },
-    "tslib": {
-      "version": "2.3.0"
-    },
-    "tsml": {
-      "version": "1.0.1"
-    },
-    "tsutils": {
-      "version": "3.21.0",
-      "dev": true,
-      "requires": {
-        "tslib": "^1.8.1"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "1.14.1",
-          "dev": true
-        }
-      }
-    },
-    "type-check": {
-      "version": "0.4.0",
-      "dev": true,
-      "requires": {
-        "prelude-ls": "^1.2.1"
-      }
-    },
-    "type-fest": {
-      "version": "1.4.0",
-      "dev": true
-    },
-    "typed-array-buffer": {
-      "version": "1.0.0",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "get-intrinsic": "^1.2.1",
-        "is-typed-array": "^1.1.10"
-      }
-    },
-    "typed-array-byte-length": {
-      "version": "1.0.0",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "has-proto": "^1.0.1",
-        "is-typed-array": "^1.1.10"
-      }
-    },
-    "typed-array-byte-offset": {
-      "version": "1.0.0",
-      "requires": {
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "has-proto": "^1.0.1",
-        "is-typed-array": "^1.1.10"
-      }
-    },
-    "typed-array-length": {
-      "version": "1.0.4",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "is-typed-array": "^1.1.9"
-      }
-    },
-    "typescript": {
-      "version": "5.1.6",
-      "dev": true
-    },
-    "uglify-js": {
-      "version": "3.17.4",
-      "dev": true,
-      "optional": true
-    },
-    "umi-request": {
-      "version": "1.4.0",
-      "requires": {
-        "isomorphic-fetch": "^2.2.1",
-        "qs": "^6.9.1"
-      }
-    },
-    "unbox-primitive": {
-      "version": "1.0.2",
-      "requires": {
-        "call-bind": "^1.0.2",
-        "has-bigints": "^1.0.2",
-        "has-symbols": "^1.0.3",
-        "which-boxed-primitive": "^1.0.2"
-      }
-    },
-    "unc-path-regex": {
-      "version": "0.1.2",
-      "dev": true
-    },
-    "unicode-canonical-property-names-ecmascript": {
-      "version": "2.0.0"
-    },
-    "unicode-match-property-ecmascript": {
-      "version": "2.0.0",
-      "requires": {
-        "unicode-canonical-property-names-ecmascript": "^2.0.0",
-        "unicode-property-aliases-ecmascript": "^2.0.0"
-      }
-    },
-    "unicode-match-property-value-ecmascript": {
-      "version": "2.1.0"
-    },
-    "unicode-property-aliases-ecmascript": {
-      "version": "2.1.0"
-    },
-    "unique-string": {
-      "version": "2.0.0",
-      "requires": {
-        "crypto-random-string": "^2.0.0"
-      }
-    },
-    "universal-user-agent": {
-      "version": "6.0.0",
-      "dev": true
-    },
-    "universalify": {
-      "version": "2.0.0"
-    },
-    "unplugin": {
-      "version": "1.4.0",
-      "dev": true,
-      "requires": {
-        "acorn": "^8.9.0",
-        "chokidar": "^3.5.3",
-        "webpack-sources": "^3.2.3",
-        "webpack-virtual-modules": "^0.5.0"
-      }
-    },
-    "unplugin-vue-components": {
-      "version": "0.24.1",
-      "dev": true,
-      "requires": {
-        "@antfu/utils": "^0.7.2",
-        "@rollup/pluginutils": "^5.0.2",
-        "chokidar": "^3.5.3",
-        "debug": "^4.3.4",
-        "fast-glob": "^3.2.12",
-        "local-pkg": "^0.4.3",
-        "magic-string": "^0.30.0",
-        "minimatch": "^7.4.2",
-        "resolve": "^1.22.1",
-        "unplugin": "^1.1.0"
-      },
-      "dependencies": {
-        "brace-expansion": {
-          "version": "2.0.1",
-          "dev": true,
-          "requires": {
-            "balanced-match": "^1.0.0"
-          }
-        },
-        "minimatch": {
-          "version": "7.4.6",
-          "dev": true,
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        }
-      }
-    },
-    "upath": {
-      "version": "1.2.0"
-    },
-    "update-browserslist-db": {
-      "version": "1.0.11",
-      "requires": {
-        "escalade": "^3.1.1",
-        "picocolors": "^1.0.0"
-      }
-    },
-    "upper-case": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "tslib": "^2.0.3"
-      }
-    },
-    "upper-case-first": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "tslib": "^2.0.3"
-      }
-    },
-    "uri-js": {
-      "version": "4.4.1",
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "urix": {
-      "version": "0.1.0"
-    },
-    "url-polyfill": {
-      "version": "1.1.12"
-    },
-    "util-deprecate": {
-      "version": "1.0.2"
-    },
-    "utrie": {
-      "version": "1.0.2",
-      "requires": {
-        "base64-arraybuffer": "^1.0.2"
-      }
-    },
-    "v8flags": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "vdirs": {
-      "version": "0.1.8",
-      "dev": true,
-      "requires": {
-        "evtd": "^0.2.2"
-      }
-    },
-    "videojs-font": {
-      "version": "2.1.0"
-    },
-    "videojs-ie8": {
-      "version": "1.1.2",
-      "requires": {
-        "es5-shim": "^4.5.1"
-      }
-    },
-    "videojs-vtt.js": {
-      "version": "0.12.4",
-      "requires": {
-        "global": "^4.3.1"
-      }
-    },
-    "vite": {
-      "version": "4.4.9",
-      "dev": true,
-      "requires": {
-        "esbuild": "^0.18.10",
-        "fsevents": "~2.3.2",
-        "postcss": "^8.4.27",
-        "rollup": "^3.27.1"
-      }
-    },
-    "vite-plugin-eslint": {
-      "version": "1.8.1",
-      "dev": true,
-      "requires": {
-        "@rollup/pluginutils": "^4.2.1",
-        "@types/eslint": "^8.4.5",
-        "rollup": "^2.77.2"
-      },
-      "dependencies": {
-        "@rollup/pluginutils": {
-          "version": "4.2.1",
-          "dev": true,
-          "requires": {
-            "estree-walker": "^2.0.1",
-            "picomatch": "^2.2.2"
-          }
-        },
-        "rollup": {
-          "version": "2.79.1",
-          "dev": true,
-          "requires": {
-            "fsevents": "~2.3.2"
-          }
-        }
-      }
-    },
-    "vite-plugin-mkcert": {
-      "version": "1.16.0",
-      "dev": true,
-      "requires": {
-        "@octokit/rest": "^19.0.5",
-        "axios": "^1.2.2",
-        "debug": "^4.3.4",
-        "picocolors": "^1.0.0"
-      }
-    },
-    "vite-plugin-pwa": {
-      "version": "0.16.4",
-      "requires": {
-        "debug": "^4.3.4",
-        "fast-glob": "^3.2.12",
-        "pretty-bytes": "^6.0.0",
-        "workbox-build": "^7.0.0",
-        "workbox-window": "^7.0.0"
-      }
-    },
-    "vooks": {
-      "version": "0.2.12",
-      "dev": true,
-      "requires": {
-        "evtd": "^0.2.2"
-      }
-    },
-    "vudio.js": {
-      "version": "1.0.3"
-    },
-    "vue": {
-      "version": "3.3.4",
-      "requires": {
-        "@vue/compiler-dom": "3.3.4",
-        "@vue/compiler-sfc": "3.3.4",
-        "@vue/runtime-dom": "3.3.4",
-        "@vue/server-renderer": "3.3.4",
-        "@vue/shared": "3.3.4"
-      }
-    },
-    "vue-demi": {
-      "version": "0.14.5"
-    },
-    "vue-eslint-parser": {
-      "version": "9.3.1",
-      "dev": true,
-      "requires": {
-        "debug": "^4.3.4",
-        "eslint-scope": "^7.1.1",
-        "eslint-visitor-keys": "^3.3.0",
-        "espree": "^9.3.1",
-        "esquery": "^1.4.0",
-        "lodash": "^4.17.21",
-        "semver": "^7.3.6"
-      },
-      "dependencies": {
-        "eslint-scope": {
-          "version": "7.2.2",
-          "dev": true,
-          "requires": {
-            "esrecurse": "^4.3.0",
-            "estraverse": "^5.2.0"
-          }
-        },
-        "estraverse": {
-          "version": "5.3.0",
-          "dev": true
-        },
-        "lru-cache": {
-          "version": "6.0.0",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "semver": {
-          "version": "7.5.4",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "yallist": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
-    "vue-i18n": {
-      "version": "9.2.2",
-      "requires": {
-        "@intlify/core-base": "9.2.2",
-        "@intlify/shared": "9.2.2",
-        "@intlify/vue-devtools": "9.2.2",
-        "@vue/devtools-api": "^6.2.1"
-      }
-    },
-    "vue-qr": {
-      "version": "4.0.9",
-      "requires": {
-        "glob": "^8.0.1",
-        "js-binary-schema-parser": "^2.0.2",
-        "simple-get": "^4.0.1",
-        "string-split-by": "^1.0.0"
-      },
-      "dependencies": {
-        "brace-expansion": {
-          "version": "2.0.1",
-          "requires": {
-            "balanced-match": "^1.0.0"
-          }
-        },
-        "glob": {
-          "version": "8.1.0",
-          "requires": {
-            "fs.realpath": "^1.0.0",
-            "inflight": "^1.0.4",
-            "inherits": "2",
-            "minimatch": "^5.0.1",
-            "once": "^1.3.0"
-          }
-        },
-        "minimatch": {
-          "version": "5.1.6",
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        }
-      }
-    },
-    "vue-router": {
-      "version": "4.2.4",
-      "requires": {
-        "@vue/devtools-api": "^6.5.0"
-      }
-    },
-    "vue-template-compiler": {
-      "version": "2.7.14",
-      "dev": true,
-      "requires": {
-        "de-indent": "^1.0.2",
-        "he": "^1.2.0"
-      }
-    },
-    "vue-tsc": {
-      "version": "1.8.8",
-      "dev": true,
-      "requires": {
-        "@vue/language-core": "1.8.8",
-        "@vue/typescript": "1.8.8",
-        "semver": "^7.3.8"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "semver": {
-          "version": "7.5.4",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "yallist": {
-          "version": "4.0.0",
-          "dev": true
-        }
-      }
-    },
-    "vue3-lottie": {
-      "version": "2.7.4",
-      "requires": {
-        "lodash-es": "^4.17.21",
-        "lottie-web": "5.12.2"
-      }
-    },
-    "vuedraggable": {
-      "version": "4.1.0",
-      "requires": {
-        "sortablejs": "1.14.0"
-      }
-    },
-    "vueuc": {
-      "version": "0.4.51",
-      "dev": true,
-      "requires": {
-        "@css-render/vue3-ssr": "^0.15.10",
-        "@juggle/resize-observer": "^3.3.1",
-        "css-render": "^0.15.10",
-        "evtd": "^0.2.4",
-        "seemly": "^0.3.6",
-        "vdirs": "^0.1.4",
-        "vooks": "^0.2.4"
-      }
-    },
-    "vuex": {
-      "version": "4.1.0",
-      "requires": {
-        "@vue/devtools-api": "^6.0.0-beta.11"
-      }
-    },
-    "wavesurfer.js": {
-      "version": "7.1.4"
-    },
-    "wcwidth": {
-      "version": "1.0.1",
-      "dev": true,
-      "requires": {
-        "defaults": "^1.0.3"
-      }
-    },
-    "webidl-conversions": {
-      "version": "3.0.1",
-      "dev": true
-    },
-    "webpack-sources": {
-      "version": "3.2.3",
-      "dev": true
-    },
-    "webpack-virtual-modules": {
-      "version": "0.5.0",
-      "dev": true
-    },
-    "whatwg-fetch": {
-      "version": "3.6.17"
-    },
-    "whatwg-url": {
-      "version": "5.0.0",
-      "dev": true,
-      "requires": {
-        "tr46": "~0.0.3",
-        "webidl-conversions": "^3.0.0"
-      }
-    },
-    "which": {
-      "version": "2.0.2",
-      "dev": true,
-      "requires": {
-        "isexe": "^2.0.0"
-      }
-    },
-    "which-boxed-primitive": {
-      "version": "1.0.2",
-      "requires": {
-        "is-bigint": "^1.0.1",
-        "is-boolean-object": "^1.1.0",
-        "is-number-object": "^1.0.4",
-        "is-string": "^1.0.5",
-        "is-symbol": "^1.0.3"
-      }
-    },
-    "which-typed-array": {
-      "version": "1.1.11",
-      "requires": {
-        "available-typed-arrays": "^1.0.5",
-        "call-bind": "^1.0.2",
-        "for-each": "^0.3.3",
-        "gopd": "^1.0.1",
-        "has-tostringtag": "^1.0.0"
-      }
-    },
-    "wordwrap": {
-      "version": "1.0.0",
-      "dev": true
-    },
-    "workbox-background-sync": {
-      "version": "7.0.0",
-      "requires": {
-        "idb": "^7.0.1",
-        "workbox-core": "7.0.0"
-      }
-    },
-    "workbox-broadcast-update": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-core": "7.0.0"
-      }
-    },
-    "workbox-build": {
-      "version": "7.0.0",
-      "requires": {
-        "@apideck/better-ajv-errors": "^0.3.1",
-        "@babel/core": "^7.11.1",
-        "@babel/preset-env": "^7.11.0",
-        "@babel/runtime": "^7.11.2",
-        "@rollup/plugin-babel": "^5.2.0",
-        "@rollup/plugin-node-resolve": "^11.2.1",
-        "@rollup/plugin-replace": "^2.4.1",
-        "@surma/rollup-plugin-off-main-thread": "^2.2.3",
-        "ajv": "^8.6.0",
-        "common-tags": "^1.8.0",
-        "fast-json-stable-stringify": "^2.1.0",
-        "fs-extra": "^9.0.1",
-        "glob": "^7.1.6",
-        "lodash": "^4.17.20",
-        "pretty-bytes": "^5.3.0",
-        "rollup": "^2.43.1",
-        "rollup-plugin-terser": "^7.0.0",
-        "source-map": "^0.8.0-beta.0",
-        "stringify-object": "^3.3.0",
-        "strip-comments": "^2.0.1",
-        "tempy": "^0.6.0",
-        "upath": "^1.2.0",
-        "workbox-background-sync": "7.0.0",
-        "workbox-broadcast-update": "7.0.0",
-        "workbox-cacheable-response": "7.0.0",
-        "workbox-core": "7.0.0",
-        "workbox-expiration": "7.0.0",
-        "workbox-google-analytics": "7.0.0",
-        "workbox-navigation-preload": "7.0.0",
-        "workbox-precaching": "7.0.0",
-        "workbox-range-requests": "7.0.0",
-        "workbox-recipes": "7.0.0",
-        "workbox-routing": "7.0.0",
-        "workbox-strategies": "7.0.0",
-        "workbox-streams": "7.0.0",
-        "workbox-sw": "7.0.0",
-        "workbox-window": "7.0.0"
-      },
-      "dependencies": {
-        "ajv": {
-          "version": "8.12.0",
-          "requires": {
-            "fast-deep-equal": "^3.1.1",
-            "json-schema-traverse": "^1.0.0",
-            "require-from-string": "^2.0.2",
-            "uri-js": "^4.2.2"
-          }
-        },
-        "fs-extra": {
-          "version": "9.1.0",
-          "requires": {
-            "at-least-node": "^1.0.0",
-            "graceful-fs": "^4.2.0",
-            "jsonfile": "^6.0.1",
-            "universalify": "^2.0.0"
-          }
-        },
-        "json-schema-traverse": {
-          "version": "1.0.0"
-        },
-        "jsonfile": {
-          "version": "6.1.0",
-          "requires": {
-            "graceful-fs": "^4.1.6",
-            "universalify": "^2.0.0"
-          }
-        },
-        "pretty-bytes": {
-          "version": "5.6.0"
-        },
-        "rollup": {
-          "version": "2.79.1",
-          "requires": {
-            "fsevents": "~2.3.2"
-          }
-        },
-        "source-map": {
-          "version": "0.8.0-beta.0",
-          "requires": {
-            "whatwg-url": "^7.0.0"
-          }
-        },
-        "tr46": {
-          "version": "1.0.1",
-          "requires": {
-            "punycode": "^2.1.0"
-          }
-        },
-        "webidl-conversions": {
-          "version": "4.0.2"
-        },
-        "whatwg-url": {
-          "version": "7.1.0",
-          "requires": {
-            "lodash.sortby": "^4.7.0",
-            "tr46": "^1.0.1",
-            "webidl-conversions": "^4.0.2"
-          }
-        }
-      }
-    },
-    "workbox-cacheable-response": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-core": "7.0.0"
-      }
-    },
-    "workbox-core": {
-      "version": "7.0.0"
-    },
-    "workbox-expiration": {
-      "version": "7.0.0",
-      "requires": {
-        "idb": "^7.0.1",
-        "workbox-core": "7.0.0"
-      }
-    },
-    "workbox-google-analytics": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-background-sync": "7.0.0",
-        "workbox-core": "7.0.0",
-        "workbox-routing": "7.0.0",
-        "workbox-strategies": "7.0.0"
-      }
-    },
-    "workbox-navigation-preload": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-core": "7.0.0"
-      }
-    },
-    "workbox-precaching": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-core": "7.0.0",
-        "workbox-routing": "7.0.0",
-        "workbox-strategies": "7.0.0"
-      }
-    },
-    "workbox-range-requests": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-core": "7.0.0"
-      }
-    },
-    "workbox-recipes": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-cacheable-response": "7.0.0",
-        "workbox-core": "7.0.0",
-        "workbox-expiration": "7.0.0",
-        "workbox-precaching": "7.0.0",
-        "workbox-routing": "7.0.0",
-        "workbox-strategies": "7.0.0"
-      }
-    },
-    "workbox-routing": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-core": "7.0.0"
-      }
-    },
-    "workbox-strategies": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-core": "7.0.0"
-      }
-    },
-    "workbox-streams": {
-      "version": "7.0.0",
-      "requires": {
-        "workbox-core": "7.0.0",
-        "workbox-routing": "7.0.0"
-      }
-    },
-    "workbox-sw": {
-      "version": "7.0.0"
-    },
-    "workbox-window": {
-      "version": "7.0.0",
-      "requires": {
-        "@types/trusted-types": "^2.0.2",
-        "workbox-core": "7.0.0"
-      }
-    },
-    "wrap-ansi": {
-      "version": "8.1.0",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^6.1.0",
-        "string-width": "^5.0.1",
-        "strip-ansi": "^7.0.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "6.0.1",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "6.2.1",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
-      }
-    },
-    "wrappy": {
-      "version": "1.0.2"
-    },
-    "xhr": {
-      "version": "2.4.0",
-      "requires": {
-        "global": "~4.3.0",
-        "is-function": "^1.0.1",
-        "parse-headers": "^2.0.0",
-        "xtend": "^4.0.0"
-      }
-    },
-    "xml-name-validator": {
-      "version": "4.0.0",
-      "dev": true
-    },
-    "xtend": {
-      "version": "4.0.2"
-    },
-    "yallist": {
-      "version": "3.1.1"
-    },
-    "yaml": {
-      "version": "2.3.1",
-      "dev": true
-    },
-    "yocto-queue": {
-      "version": "0.1.0",
-      "dev": true
-    },
-    "yorkie": {
-      "version": "2.0.0",
-      "dev": true,
-      "requires": {
-        "execa": "^0.8.0",
-        "is-ci": "^1.0.10",
-        "normalize-path": "^1.0.0",
-        "strip-indent": "^2.0.0"
-      },
-      "dependencies": {
-        "cross-spawn": {
-          "version": "5.1.0",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^4.0.1",
-            "shebang-command": "^1.2.0",
-            "which": "^1.2.9"
-          }
-        },
-        "execa": {
-          "version": "0.8.0",
-          "dev": true,
-          "requires": {
-            "cross-spawn": "^5.0.1",
-            "get-stream": "^3.0.0",
-            "is-stream": "^1.1.0",
-            "npm-run-path": "^2.0.0",
-            "p-finally": "^1.0.0",
-            "signal-exit": "^3.0.0",
-            "strip-eof": "^1.0.0"
-          }
-        },
-        "get-stream": {
-          "version": "3.0.0",
-          "dev": true
-        },
-        "is-stream": {
-          "version": "1.1.0",
-          "dev": true
-        },
-        "lru-cache": {
-          "version": "4.1.5",
-          "dev": true,
-          "requires": {
-            "pseudomap": "^1.0.2",
-            "yallist": "^2.1.2"
-          }
-        },
-        "normalize-path": {
-          "version": "1.0.0",
-          "dev": true
-        },
-        "npm-run-path": {
-          "version": "2.0.2",
-          "dev": true,
-          "requires": {
-            "path-key": "^2.0.0"
-          }
-        },
-        "path-key": {
-          "version": "2.0.1",
-          "dev": true
-        },
-        "shebang-command": {
-          "version": "1.2.0",
-          "dev": true,
-          "requires": {
-            "shebang-regex": "^1.0.0"
-          }
-        },
-        "shebang-regex": {
-          "version": "1.0.0",
-          "dev": true
-        },
-        "which": {
-          "version": "1.3.1",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        },
-        "yallist": {
-          "version": "2.1.2",
-          "dev": true
-        }
-      }
-    },
-    "zrender": {
-      "version": "5.4.4",
-      "requires": {
-        "tslib": "2.3.0"
-      }
-    }
-=======
->>>>>>> feature-3.20
   }
 }

+ 7 - 21
public/roll-call/css/index.css

@@ -7,7 +7,6 @@ body {
   margin: 0;
   box-sizing: border-box;
 }
-
 body {
   background-color: #000000;
   margin: 0;
@@ -61,7 +60,7 @@ a {
 
 #menu {
   position: absolute;
-  bottom: 20px;
+  bottom: 50px;
   width: 100%;
   text-align: center;
 }
@@ -88,20 +87,16 @@ a {
   align-items: center;
   justify-content: center;
   flex-direction: column;
+  transition: all 0.2s ease;
 }
+
 .element.hide {
   visibility: hidden;
   opacity: 0;
+  transition: all 0.2s ease;
 }
+
 .element .symbolBox {
-  position: absolute;
-  top: 20px;
-  left: 27px;
-  right: 0px;
-  /* font-size: 60px;
-        font-weight: bold;
-        color: rgba(255,255,255,0.75);  */
-  /* text-shadow: 0 0 10px rgba(0,255,255,0.95); */
   display: block;
   width: 98px;
   height: 98px;
@@ -110,29 +105,20 @@ a {
   border: 3px solid #4daaff;
 }
 .element .symbolBox img {
+  width: 100%;
   height: 100%;
-  position: absolute;
-  left: 50%;
-  transform: translateX(-50%);
 }
 
 .element .details {
-  position: absolute;
-  bottom: 12px;
-  right: 0px;
   padding-top: 15px;
   font-size: 22px;
-  display: block;
   color: #374693;
   font-weight: 500;
   max-width: 100px;
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
-  left: 50%;
-  margin-left: -50px;
 }
-
 #table {
   width: 171px;
   height: 69px;
@@ -227,7 +213,7 @@ a {
   position: absolute;
   width: 100%;
   height: 100%;
-  background: rgba(0, 0, 0, 0.8);
+  background: rgba(0, 0, 0, 0.9);
 }
 .closeBtn {
   position: absolute;

+ 27 - 71
public/roll-call/index.html

@@ -44,7 +44,7 @@
 
 </html>
 <script>
-  var table = getData()
+  var table = getData();
   var tableLens = table.length;
   var camera, scene, renderer;
   var controls;
@@ -72,7 +72,7 @@
       var symbol = document.createElement('img');
       symbolBox.className = 'symbolBox';
       symbol.className = 'symbol';
-      symbol.src = table[i].img + '?imageMogr2/strip/format/png/size-limit/50k!';
+      symbol.src = table[i].img;
       symbolBox.appendChild(symbol);
       element.appendChild(symbolBox);
       // 姓名
@@ -92,34 +92,26 @@
       var object = new THREE.Object3D();
       var ix = (i) % 8;
       object.position.y = 300;
-      switch (table.length) {
-        case 1:
-          object.position.x = 0;
-          break;
-        case 2:
-          object.position.x = (ix * 172) - (172 * 1 / 2);
-          break;
-        case 3:
-          object.position.x = (ix * 172) - (172 * 2 / 2);
-          break;
-        case 4:
-          object.position.x = (ix * 172) - (172 * 3 / 2);
-          break;
-        case 5:
-          object.position.x = (ix * 172) - (172 * 4 / 2);
-          break;
-        case 6:
-          object.position.x = (ix * 172) - (172 * 5 / 2);
-          break;
-        case 7:
-          object.position.x = (ix * 172) - (172 * 6 / 2);
-          break;
-        default:
-          var iy = Math.floor((i) / 8);
-          object.position.x = (ix * 172) - 600;
-          object.position.y = - (iy * 192) + 300;
-          break;
+      if (table.length === 1) {
+        object.position.x = 0;
+      } else if (table.length === 2) {
+        object.position.x = (ix * 172) - (172 * 1 / 2);
+      } else if (table.length === 3) {
+        object.position.x = (ix * 172) - (172 * 2 / 2);
+      } else if (table.length === 4) {
+        object.position.x = (ix * 172) - (172 * 3 / 2);
+      } else if (table.length === 5) {
+        object.position.x = (ix * 172) - (172 * 4 / 2);
+      } else if (table.length === 6) {
+        object.position.x = (ix * 172) - (172 * 5 / 2);
+      } else if (table.length === 7) {
+        object.position.x = (ix * 172) - (172 * 6 / 2);
+      } else {
+        var iy = Math.floor((i) / 8);
+        object.position.x = (ix * 172) - 600;
+        object.position.y = - (iy * 192) + 300;
       }
+
       targets.table.push(object);
     }
 
@@ -134,7 +126,7 @@
     symbol.setAttribute("id", "changeImg");
     symbolBox.className = 'symbolBox2';
     symbol.className = 'symbol2';
-    symbol.src = table[0].img + '?imageMogr2/strip/format/png/size-limit/50k!';
+    symbol.src = table[0].img;
     symbolBox.appendChild(symbol);
     elements.appendChild(symbolBox);
 
@@ -194,7 +186,7 @@
     controls.maxDistance = 6000;
     controls.addEventListener('change', render);
     // 初始化
-    transform(targets.table, 800);
+    transform(targets.table, 500);
     window.addEventListener('resize', onWindowResize, false);
     cpx = camera.position.x;
     cpy = camera.position.y;
@@ -231,10 +223,8 @@
 
     // console.log(document.querySelectorAll('.element'), '1212')
     setTimeout(() => {
-      console.log(moving, type)
       if (moving || type === 2) {
         const elements = document.querySelectorAll('.element')
-        console.log(elements, 'eee')
         if (elements.length > 0) {
           elements.forEach((e, index) => {
             if (type === 2) {
@@ -296,7 +286,7 @@
     if (numsss == tableLens) {
       numsss = tableLens - 1;
     }
-    srcss = table[numsss].img + '?imageMogr2/strip/format/png/size-limit/50k!';
+    srcss = table[numsss].img;
     txtsss = table[numsss].name;
     changeImg.src = srcss;
     detailss.innerHTML = txtsss;
@@ -329,32 +319,10 @@
     vm.tableIndex = tableLens
     init();
     animate();
-  }
 
-  function preloadImages(imageUrls, callback) {
-    let images = {};
-    let loadedImages = 0;
-    let numImages = imageUrls.length;
-
-    // 创建一个Image对象,并设置src属性来开始加载图片
-    imageUrls.forEach((url) => {
-      images[url] = new Image();
-      images[url].onload = function () {
-        // 当图片加载完成时,更新计数器
-        loadedImages++;
-        if (loadedImages === numImages && callback) {
-          callback(images); // 所有图片都加载完毕,调用回调函数
-        }
-      };
-      images[url].onerror = function () {
-        console.error('Could not load image at ' + url);
-        loadedImages++;
-      };
-      images[url].src = url;
-    });
+    console.log(vm.tableIndex, 'renderData')
   }
 
-
   //点击事件及部分判断
   var vm = new Vue({
     el: '#vueBoxs',
@@ -412,6 +380,8 @@
         objectsss.scale.set(1, 1, 1);
         // 星空背景图重置
         transform(targets.table, 400, 2);
+        // music.pause();
+        // this.ckPrice();
       },
       onBack() {
         // 返回时先结束
@@ -432,20 +402,6 @@
       // init();
       // animate();
 
-      // const imageUrls = table.map(value => value.img + '?imageMogr2/strip/format/png/size-limit/50k!')
-      // console.log(imageUrls.length, 'length')
-      // console.log(imageUrls, 'imageUrls')
-      // preloadImages(imageUrls, function (images) {
-      //   // console.log('All images loaded.');
-      //   //   // 这里可以访问images对象,它是一个包含预加载图片的对象,
-      //   //   // 其中键是图片的URL,值是Image对象。
-      //   init();
-      //   animate();
-      //   setTimeout(() => {
-      //     animate();
-      //   }, 100);
-      // });
-
       // getStar();
       // this.ckPrice();
       this.handleUrlParmas()

+ 1 - 5
public/version.json

@@ -1,5 +1 @@
-<<<<<<< HEAD
-{"version":1714446876368}
-=======
-{"version":1714457803294}
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29
+{"version":1714457803294}

+ 1 - 9
src/components/layout/layoutTop.tsx

@@ -262,11 +262,7 @@ export default defineComponent({
                 ),
                 default: '邀请学生'
               }}
-<<<<<<< HEAD
-            </NTooltip>
-=======
             </NTooltip> */}
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29
             <NPopover
               width={380}
               class={styles.popoverClassModel}
@@ -484,11 +480,7 @@ export default defineComponent({
               }></SuggestionOption>
           </NModal>
 
-<<<<<<< HEAD
-          {state.addStudentVisible ? (
-=======
           {/* {state.addStudentVisible ? (
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29
             <div
               v-model:show={state.addStudentVisible}
               class={['n-modal-mask', styles.popBox]}>
@@ -498,7 +490,7 @@ export default defineComponent({
                   state.addStudentVisible = false;
                 }}></AddStudentModel>
             </div>
-          ) : null}
+          ) : null} */}
         </div>
       </>
     );

+ 0 - 6
src/main.ts

@@ -47,12 +47,6 @@ async function setupApp() {
 
   // mount app
   app.mount('#app');
-
-  if ('serviceWorker' in navigator) {
-    navigator.serviceWorker.ready.then(registration => {
-      registration.unregister();
-    });
-  }
 }
 
 setupApp();

+ 0 - 1
src/router/router-guards.ts

@@ -41,7 +41,6 @@ export function createRouterGuards(router: Router) {
     if ('serviceWorker' in navigator) {
       console.log(caches.keys(), 'caches.keys()');
       caches.keys().then(function (cacheNames) {
-        console.log(cacheNames, 'caches.keys()');
         cacheNames.forEach(function (cacheName) {
           caches.delete(cacheName);
         });

+ 3 - 2
src/views/attend-class/index.tsx

@@ -269,7 +269,6 @@ export default defineComponent({
           allItem.push(...childList);
         });
 
-        console.log(temp, 'temp', tempRows);
         data.knowledgePointList = temp;
         data.itemList = allItem?.map((m: any) => {
           return {
@@ -347,7 +346,7 @@ export default defineComponent({
     onMounted(async () => {
       // initMoveable();
       const query = route.query;
-      console.log(query, props.preStudentNum, '学生人数');
+      // console.log(query, props.preStudentNum, '学生人数');
       // 先取参数,
       data.type = props.type || (query.type as any);
       data.courseId = props.courseId || query.courseId;
@@ -358,10 +357,12 @@ export default defineComponent({
       data.classId = props.classId || query.classId;
       data.preStudentNum = props.preStudentNum || query.preStudentNum;
       window.addEventListener('message', iframeHandle);
+
       if (data.classId) {
         const res = await api_cousseScheduleDetail(data.classId);
         data.courseId = res.data.useChapterLessonCoursewareId;
       }
+
       getDetail();
       getLessonCoursewareDetail();
       if (data.type === 'preview') {

+ 0 - 1
src/views/login/index.tsx

@@ -28,7 +28,6 @@ import dingPng from './images/ding.png';
 import closeAble from './images/closeAble.png';
 import infoIcon from './images/infoIcon.png';
 import { state } from '/src/state';
-import dayjs from 'dayjs';
 import TheAuth from '/src/components/TheAuth';
 import { mutualTLSQuery } from './api';
 export default defineComponent({

+ 1 - 1
src/views/natural-resources/components/my-resources/save-modal/index.tsx

@@ -385,7 +385,7 @@ export default defineComponent({
           status = true;
         }
       });
-      return status || fileListRef.value.length <= 0 || btnLoading.value;
+      return status || fileListRef.value.length <= 0;
     });
 
     const onCustomRequest = ({

+ 1 - 1
src/views/prepare-lessons/components/lesson-main/courseware/addCourseware.tsx

@@ -674,7 +674,7 @@ export default defineComponent({
         ref={coursewareListRef}>
         <NScrollbar
           class={[styles.listContainer, 'listContainerWrap']}
-          {...{ id: 'lessons-2' }}>
+          {...{ id: 'lessonsIn-1' }}>
           <NSpin show={forms.loadingStatus}>
             <div class={[styles.listSection, 'listSectionWrap']}>
               {forms.coursewareList.map((item: any, index: number) => (

+ 0 - 962
src/views/prepare-lessons/components/lesson-main/courseware/index.tsx

@@ -1,4 +1,3 @@
-<<<<<<< HEAD
 import { defineComponent, nextTick, onMounted, reactive, watch } from 'vue';
 import styles from './index.module.less';
 import {
@@ -958,964 +957,3 @@ export default defineComponent({
   }
 });
 
-=======
-import { defineComponent, nextTick, onMounted, reactive, watch } from 'vue';
-import styles from './index.module.less';
-import {
-  NButton,
-  NModal,
-  NScrollbar,
-  NSelect,
-  NSpace,
-  NSpin,
-  useMessage,
-  useDialog
-} from 'naive-ui';
-import CardType from '/src/components/card-type';
-import AttendClass from '/src/views/prepare-lessons/model/attend-class';
-import { usePrepareStore } from '/src/store/modules/prepareLessons';
-import { useCatchStore } from '/src/store/modules/catchData';
-import TheEmpty from '/src/components/TheEmpty';
-import {
-  courseScheduleStart,
-  queryCourseware,
-  saveCourseware,
-  teacherKnowledgeMaterialDelete
-} from '../../../api';
-import Draggable from 'vuedraggable';
-import iconDelete from '../../../images/icon-delete.png';
-import iconAddMusic from '../../../images/icon-add-music.png';
-import { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router';
-import deepClone from '/src/helpers/deep-clone';
-import CardPreview from '/src/components/card-preview';
-import PreviewWindow from '/src/views/preview-window';
-import { state } from '/src/state';
-import SubjectSync from '../../../model/subject-sync';
-import { eventGlobal } from '/src/utils';
-import iconTips from '../../../images/icon-tips.png';
-import { useElementBounding } from '@vueuse/core';
-export default defineComponent({
-  name: 'courseware-modal',
-  setup() {
-    const catchStore = useCatchStore();
-    const prepareStore = usePrepareStore();
-    const route = useRoute();
-    const router = useRouter();
-    const dialog = useDialog();
-    const message = useMessage();
-
-    const localStorageSubjectId = localStorage.getItem(
-      'prepareLessonSubjectId'
-    );
-    const forms = reactive({
-      tipsStatus: localStorage.getItem('prepare-lesson-courseware-tip')
-        ? true
-        : false,
-      className: route.query.name as any,
-      classGroupId: route.query.classGroupId,
-      preStudentNum: route.query.preStudentNum,
-      courseScheduleSubjectId: route.query.courseScheduleSubjectId,
-      // 选取参数带的,后取缓存
-      subjectId: route.query.subjectId
-        ? Number(route.query.subjectId)
-        : localStorageSubjectId
-        ? Number(localStorageSubjectId)
-        : null,
-      coursewareList: [] as any,
-      loadingStatus: false,
-      showAttendClass: false,
-      attendClassType: 'change', //
-      removeIds: [] as any, // 临时删除的编号
-      drag: false,
-      isEdit: false, // 是否更新数据
-      editSubjectIds: '', // 声部编号
-      removeVisiable: false,
-      removeVisiable1: false,
-      subjectSyncVisiable: false, // 同步声部
-      show: false,
-      item: {} as any,
-      previewModal: false,
-      previewParams: {
-        type: '',
-        subjectId: '',
-        detailId: ''
-      } as any
-    });
-
-    // 获取列表
-    const getList = async () => {
-      forms.loadingStatus = true;
-      try {
-        // 判断是否有选择对应的课件 或声部
-        if (!prepareStore.getSelectKey || !prepareStore.getSubjectId)
-          return (forms.loadingStatus = false);
-        const { data } = await queryCourseware({
-          coursewareDetailKnowledgeId: prepareStore.getSelectKey,
-          subjectId: prepareStore.getSubjectId,
-          page: 1,
-          rows: 99
-        });
-        const tempRows = data.rows || [];
-        const temp: any = [];
-        tempRows.forEach((row: any) => {
-          temp.push({
-            id: row.id,
-            materialId: row.materialId,
-            coverImg: row.coverImg,
-            type: row.materialType,
-            title: row.materialName,
-            isCollect: !!row.favoriteFlag,
-            isSelected: row.source === 'PLATFORM' ? true : false,
-            content: row.content,
-            removeFlag: row.removeFlag
-          });
-        });
-
-        prepareStore.setCoursewareList(temp || []);
-
-        const tempCourse: any = [];
-        temp.forEach((item: any) => {
-          if (!forms.removeIds.includes(item.id)) {
-            tempCourse.push(item);
-          }
-        });
-        forms.coursewareList = tempCourse;
-      } catch {
-        //
-      }
-      forms.loadingStatus = false;
-    };
-
-    // 监听选择的key 左侧选择了其它的课
-    watch(
-      () => prepareStore.getSelectKey,
-      () => {
-        forms.drag = false;
-        prepareStore.setIsEditResource(false);
-        getList();
-      }
-    );
-    // 声部变化时
-    watch(
-      () => prepareStore.getSubjectId,
-      () => {
-        getList();
-      }
-    );
-    watch(
-      () => prepareStore.getIsAddResource,
-      (val: boolean) => {
-        if (val) {
-          getList();
-          prepareStore.setIsAddResource(false);
-        }
-      }
-    );
-    // 监听列表变化,如果变化了,则弹选择声部的
-    watch(
-      () => forms.coursewareList,
-      () => {
-        if (forms.drag) {
-          forms.isEdit = true;
-        }
-      },
-      {
-        deep: true
-      }
-    );
-
-    // 删除
-    const onDelete = (item: any) => {
-      //
-      forms.removeIds.push(item.id);
-      const index = forms.coursewareList.findIndex(
-        (c: any) => c.id === item.id
-      );
-      forms.coursewareList.splice(index, 1);
-      forms.isEdit = true;
-      // prepareStore.setCoursewareList(forms.coursewareList);
-      // console.log(prepareStore.getCoursewareList, 'getCourseware');
-    };
-
-    // 完成编辑
-    const onOverEdit = async () => {
-      try {
-        const temp: any = [];
-        forms.coursewareList.forEach((item: any) => {
-          temp.push({
-            materialName: item.title,
-            materialType: item.type,
-            materialId: item.materialId,
-            id: item.id
-          });
-        });
-        // 保存课件
-        // 判断是否编辑,如果编辑则取选择的声部
-        await saveCourseware({
-          coursewareDetailKnowledgeId: prepareStore.getSelectKey,
-          lessonCoursewareId: prepareStore.getLessonCoursewareId,
-          lessonCoursewareDetailId: prepareStore.getLessonCoursewareDetailId,
-          subjectId: forms.isEdit
-            ? forms.editSubjectIds
-            : prepareStore.getSubjectId,
-          materialList: [...temp]
-        });
-
-        forms.drag = false;
-        message.success('编辑成功');
-        forms.removeVisiable = false;
-        prepareStore.setIsEditResource(false);
-        // 重置临时删除编号
-        forms.removeIds = [];
-        await getList();
-      } catch {
-        //
-      }
-    };
-
-    // 预览上课
-    const onPreviewAttend = () => {
-      // 获取上架的数据
-      let count = 0;
-      forms.coursewareList.forEach((item: any) => {
-        if (!item.removeFlag) {
-          count++;
-        }
-      });
-      if (count <= 0) {
-        message.error('课件不能为空');
-        return;
-      }
-      // 判断是否在应用里面
-      if (window.matchMedia('(display-mode: standalone)').matches) {
-        state.application = window.matchMedia(
-          '(display-mode: standalone)'
-        ).matches;
-        forms.previewModal = true;
-        fscreen();
-        forms.previewParams = {
-          type: 'preview',
-          instrumentId: prepareStore.getInstrumentId,
-          detailId: prepareStore.getSelectKey,
-          lessonCourseId: prepareStore.getBaseCourseware.id
-        };
-      } else {
-        const { href } = router.resolve({
-          path: '/attend-class',
-          query: {
-            type: 'preview',
-            instrumentId: prepareStore.getInstrumentId,
-            detailId: prepareStore.getSelectKey,
-            lessonCourseId: prepareStore.getBaseCourseware.id
-          }
-        });
-        window.open(href, +new Date() + '');
-      }
-    };
-    const fscreen = () => {
-      const el: any = document.documentElement;
-      const documentDom: any = document;
-      const isFullscreen =
-        documentDom.fullScreen ||
-        documentDom.mozFullScreen ||
-        documentDom.webkitIsFullScreen;
-      if (!isFullscreen) {
-        //进入全屏
-        (el.requestFullscreen && el.requestFullscreen()) ||
-          (el.mozRequestFullScreen && el.mozRequestFullScreen()) ||
-          (el.webkitRequestFullscreen && el.webkitRequestFullscreen()) ||
-          (el.msRequestFullscreen && el.msRequestFullscreen());
-      }
-    };
-    // 单个删除
-    const onRemove = async (item: any) => {
-      try {
-        dialog.warning({
-          title: '提示',
-          content: '该资源已下架,是否删除?',
-          positiveText: '确定',
-          negativeText: '取消',
-          onPositiveClick: async () => {
-            forms.removeIds.push(item.id);
-            await teacherKnowledgeMaterialDelete({ ids: item.id });
-            message.success('删除成功');
-            getList();
-          }
-        });
-      } catch {
-        //
-      }
-    };
-
-    watch(
-      () => prepareStore.getSubjectList,
-      () => {
-        checkSubjectIds();
-      }
-    );
-
-    const checkSubjectIds = () => {
-      const subjectList = prepareStore.getSubjectList;
-
-      // 并且没有声部时才会更新
-      if (subjectList.length > 0) {
-        // 并且声部在列表中
-        const localStorageSubjectId = localStorage.getItem(
-          'prepareLessonSubjectId'
-        );
-        // // 先取 上次上课声部,在取班级声部 最后取缓存
-        let subjectId = null;
-        let index = -1;
-        if (forms.courseScheduleSubjectId) {
-          // 判断浏览器上面是否有
-          index = subjectList.findIndex(
-            (subject: any) => subject.id == forms.courseScheduleSubjectId
-          );
-          if (index >= 0) {
-            subjectId = Number(forms.courseScheduleSubjectId);
-          }
-        }
-        // 判断班级上面声部 & 还没有声部
-        if (forms.subjectId && !subjectId) {
-          // 判断浏览器上面是否有
-          index = subjectList.findIndex(
-            (subject: any) => subject.id == forms.subjectId
-          );
-          if (index >= 0) {
-            subjectId = Number(forms.subjectId);
-          }
-        }
-        // 缓存声部 & 还没有声部
-        if (localStorageSubjectId && !subjectId) {
-          // 判断浏览器上面是否有
-          index = subjectList.findIndex(
-            (subject: any) => subject.id == localStorageSubjectId
-          );
-          if (index >= 0) {
-            subjectId = Number(localStorageSubjectId);
-          }
-        }
-        if (subjectId && index >= 0) {
-          prepareStore.setSubjectId(subjectId);
-        } else {
-          // 判断是否有缓存
-          prepareStore.setSubjectId(subjectList[0].id);
-        }
-
-        // 保存
-        localStorage.setItem(
-          'prepareLessonSubjectId',
-          prepareStore.getSubjectId as any
-        );
-      }
-    };
-
-    watch(
-      () => route.query,
-      async () => {
-        forms.className = route.query.name as any;
-        forms.classGroupId = route.query.classGroupId as any;
-        forms.preStudentNum = route.query.preStudentNum as any;
-        forms.subjectId = route.query.subjectId
-          ? Number(route.query.subjectId)
-          : null;
-        prepareStore.setClassGroupId(forms.classGroupId as any);
-
-        checkSubjectIds();
-        await getList();
-      }
-    );
-
-    const isPointInsideElement = (element: any, x: number, y: number) => {
-      const rect = element.getBoundingClientRect();
-      return (
-        x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom
-      );
-    };
-    const isPointOnLeft = (element: any, x: number) => {
-      const rect = element.getBoundingClientRect();
-      const elementCenterX = rect.left + rect.width / 2;
-      return x < elementCenterX;
-    };
-    onMounted(async () => {
-      prepareStore.setClassGroupId(route.query.classGroupId as any);
-      // 获取教材分类列表
-      checkSubjectIds();
-
-      await getList();
-
-      // 动态添加数据
-      eventGlobal.on('onPrepareAddItem', (item: any, point?: any) => {
-        forms.drag = true;
-        forms.isEdit = true;
-        nextTick(() => {
-          if (point) {
-            const dom = document.querySelectorAll('.row-nav');
-            let isAdd = false;
-            dom.forEach((child: any, index: number) => {
-              const status = isPointInsideElement(child, point.x, point.y);
-              if (status) {
-                const array: any = forms.coursewareList;
-                const left = isPointOnLeft(child, point.x);
-                if (!left) {
-                  array.splice(index + 1, 0, item);
-                } else {
-                  array.splice(index, 0, item);
-                }
-                isAdd = true;
-                forms.coursewareList = array;
-                prepareStore.setCoursewareList(forms.coursewareList);
-              }
-            });
-            if (!isAdd) {
-              forms.coursewareList.push(item);
-              prepareStore.setCoursewareList(forms.coursewareList);
-            }
-          } else {
-            forms.coursewareList.push(item);
-            prepareStore.setCoursewareList(forms.coursewareList);
-          }
-        });
-      });
-    });
-
-    return () => (
-      <div class={styles.coursewareModal}>
-        <div class={styles.btnGroup}>
-          {forms.drag ? (
-            !forms.tipsStatus ? (
-              <div class={styles.tipsContainer}>
-                <div class={styles.tipsLeft}>
-                  <img src={iconTips} class={styles.iconTips} />
-                  <span class={styles.tips}>可以拖动资源排序哦</span>
-                </div>
-                <span
-                  class={styles.btnNoTips}
-                  onClick={() => {
-                    localStorage.setItem('prepare-lesson-courseware-tip', '1');
-                    forms.tipsStatus = true;
-                  }}>
-                  不再提醒
-                </span>
-              </div>
-            ) : (
-              <span></span>
-            )
-          ) : (
-            <NSpace>
-              {forms.classGroupId && (
-                <div class={styles.btnItem}>
-                  <span class={styles.btnTitle}>上课班级:</span>
-                  <div
-                    onClick={() => {
-                      forms.showAttendClass = true;
-                      forms.attendClassType = 'change';
-                    }}>
-                    <NSelect
-                      placeholder="选择班级"
-                      labelField="name"
-                      valueField="id"
-                      class={styles.btnClassList}
-                      value={forms.className}
-                      disabled
-                    />
-                  </div>
-                </div>
-              )}
-
-              <div class={styles.btnItem}>
-                <span class={styles.btnTitle}>声部:</span>
-                <NSelect
-                  placeholder="选择声部"
-                  class={styles.btnSubjectList}
-                  options={prepareStore.getSubjectList}
-                  labelField="name"
-                  valueField="id"
-                  value={prepareStore.getSubjectId}
-                  onUpdate:value={(val: any) => {
-                    prepareStore.setSubjectId(val);
-                    // 保存
-                    localStorage.setItem('prepareLessonSubjectId', val);
-                    getList();
-                  }}
-                />
-              </div>
-            </NSpace>
-          )}
-
-          {/* 编辑 */}
-          {!forms.drag ? (
-            <NSpace>
-              <NButton
-                type="default"
-                onClick={() => {
-                  forms.drag = true;
-                  prepareStore.setIsEditResource(true);
-
-                  // forms.subjectSyncVisiable = true;
-                }}>
-                编辑
-              </NButton>
-            </NSpace>
-          ) : (
-            <NSpace>
-              <NButton
-                type="error"
-                onClick={() => {
-                  forms.removeVisiable1 = true;
-                }}>
-                清空资源
-              </NButton>
-              <NButton
-                type="error"
-                onClick={() => {
-                  forms.drag = false;
-                  forms.isEdit = false;
-                  prepareStore.setIsEditResource(false);
-                  forms.removeIds = [];
-                  getList();
-                }}>
-                取消编辑
-              </NButton>
-              <NButton
-                type="default"
-                onClick={() => {
-                  if (forms.isEdit) {
-                    forms.subjectSyncVisiable = true;
-                  } else {
-                    forms.removeVisiable = true;
-                  }
-                }}>
-                完成编辑
-              </NButton>
-            </NSpace>
-          )}
-        </div>
-
-        <NScrollbar
-          class={[
-            styles.listContainer,
-            forms.drag ? styles.listContainerDrag : ''
-          ]}
-          {...{ id: 'lessonsIn-1' }}>
-          <NSpin show={forms.loadingStatus}>
-            <div
-              class={[
-                styles.listSection
-                // !forms.loadingStatus && forms.coursewareList.length <= 0
-                //   ? styles.emptySection
-                //   : ''
-              ]}
-              onDragenter={(e: any) => {
-                e.preventDefault();
-              }}
-              onDragover={(e: any) => {
-                e.preventDefault();
-              }}
-              onDrop={(e: any) => {
-                console.log(e, 'event');
-                let dropItem = e.dataTransfer.getData('text');
-                dropItem = dropItem ? JSON.parse(dropItem) : {};
-                // 判断是否有数据
-                if (dropItem.id) {
-                  // 获取拖拽的目标元素
-
-                  eventGlobal.emit(
-                    'onPrepareAddItem',
-                    {
-                      materialId: dropItem.id,
-                      coverImg: dropItem.coverImg,
-                      type: dropItem.type,
-                      title: dropItem.title,
-                      isCollect: dropItem.isCollect,
-                      isSelected: dropItem.isSelected,
-                      content: dropItem.content,
-                      removeFlag: false
-                    },
-                    {
-                      x: e.clientX,
-                      y: e.clientY
-                    }
-                  );
-                }
-              }}>
-              {forms.coursewareList.length > 0 && (
-                <>
-                  {forms.drag ? (
-                    <Draggable
-                      v-model:modelValue={forms.coursewareList}
-                      itemKey="id"
-                      componentData={{
-                        itemKey: 'id',
-                        tag: 'div',
-                        animation: 200,
-                        group: 'description',
-                        disabled: false
-                      }}
-                      class={styles.list}>
-                      {{
-                        item: (element: any) => {
-                          const item = element.element;
-                          return (
-                            <div
-                              data-id={item.id}
-                              class={[
-                                styles.itemWrap,
-                                styles.itemBlock,
-                                'row-nav'
-                              ]}>
-                              <div class={styles.itemWrapBox}>
-                                <CardType
-                                  class={[styles.itemContent]}
-                                  isShowCollect={false}
-                                  offShelf={item.removeFlag ? true : false}
-                                  onOffShelf={() => onRemove(item)}
-                                  item={item}
-                                />
-                                <div class={styles.itemOperation}>
-                                  <img
-                                    src={iconDelete}
-                                    class={styles.iconDelete}
-                                    onClick={(e: MouseEvent) => {
-                                      e.stopPropagation();
-                                      onDelete(item);
-                                    }}
-                                  />
-                                </div>
-                              </div>
-                            </div>
-                          );
-                        }
-                      }}
-                    </Draggable>
-                  ) : (
-                    <div class={styles.list}>
-                      {forms.coursewareList.map((item: any) => (
-                        <div class={styles.itemWrap}>
-                          <div class={styles.itemWrapBox}>
-                            <CardType
-                              class={[styles.itemContent, 'handle']}
-                              isShowCollect={false}
-                              item={item}
-                              offShelf={item.removeFlag ? true : false}
-                              onOffShelf={() => onRemove(item)}
-                              disabledMouseHover={false}
-                              onClick={() => {
-                                if (item.type === 'IMG') return;
-                                forms.show = true;
-                                forms.item = item;
-                              }}
-                            />
-                          </div>
-                        </div>
-                      ))}
-                      <div class={styles.itemWrap}>
-                        <div class={styles.itemWrapBox}>
-                          <div
-                            class={[
-                              styles.itemContent,
-                              styles.addMusicItem,
-                              'handle'
-                            ]}
-                            onClick={() => {
-                              // 直接跳转到制谱页面 (临时存储数据)
-                              sessionStorage.setItem(
-                                'notation-open-create',
-                                '1'
-                              );
-                              router.push('/notation');
-                            }}>
-                            <img src={iconAddMusic} />
-
-                            <p class={styles.addMusicName}>开始制谱</p>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  )}
-                </>
-              )}
-
-              {/* {!forms.loadingStatus && forms.coursewareList.length <= 0 && (
-                <TheEmpty description="暂无课件" />
-              )} */}
-              {forms.coursewareList.length <= 0 && (
-                <div class={styles.list}>
-                  <div class={styles.itemWrap}>
-                    <div class={styles.itemWrapBox}>
-                      <div
-                        class={[
-                          styles.itemContent,
-                          styles.addMusicItem,
-                          'handle'
-                        ]}
-                        onClick={() => {
-                          // 直接跳转到制谱页面 (临时存储数据)
-                          sessionStorage.setItem('notation-open-create', '1');
-                          router.push('/notation');
-                        }}>
-                        <img src={iconAddMusic} />
-
-                        <p class={styles.addMusicName}>开始制谱</p>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              )}
-            </div>
-          </NSpin>
-        </NScrollbar>
-
-        {!forms.drag ? (
-          <div
-            class={[styles.btnGroup, styles.btnGroupClass]}
-            style={{ justifyContent: 'flex-end' }}>
-            <NSpace justify="end">
-              <NButton type="primary" onClick={onPreviewAttend}>
-                预览课件
-              </NButton>
-              <NButton
-                type="error"
-                class={styles.btnClassStart}
-                onClick={async () => {
-                  let count = 0;
-                  forms.coursewareList.forEach((item: any) => {
-                    if (!item.removeFlag) {
-                      count++;
-                    }
-                  });
-                  if (count <= 0) {
-                    message.error('课件不能为空');
-                    return;
-                  }
-
-                  if (forms.classGroupId) {
-                    // 开始上课
-                    const res = await courseScheduleStart({
-                      lessonCoursewareKnowledgeDetailId: prepareStore.selectKey,
-                      classGroupId: forms.classGroupId,
-                      subjectId: prepareStore.getSubjectId
-                    });
-                    if (
-                      window.matchMedia('(display-mode: standalone)').matches
-                    ) {
-                      state.application = window.matchMedia(
-                        '(display-mode: standalone)'
-                      ).matches;
-                      forms.previewModal = true;
-                      fscreen();
-                      forms.previewParams = {
-                        type: 'class',
-                        classGroupId: forms.classGroupId,
-                        instrumentId: prepareStore.getInstrumentId,
-                        detailId: prepareStore.getSelectKey,
-                        classId: res.data,
-                        lessonCourseId: prepareStore.getBaseCourseware.id,
-                        preStudentNum: forms.preStudentNum
-                      };
-                    } else {
-                      const { href } = router.resolve({
-                        path: '/attend-class',
-                        query: {
-                          type: 'class',
-                          classGroupId: forms.classGroupId,
-                          instrumentId: prepareStore.getInstrumentId,
-                          detailId: prepareStore.getSelectKey,
-                          classId: res.data,
-                          lessonCourseId: prepareStore.getBaseCourseware.id,
-                          preStudentNum: forms.preStudentNum
-                        }
-                      });
-                      window.open(href, +new Date() + '');
-                    }
-                  } else {
-                    forms.showAttendClass = true;
-                    forms.attendClassType = 'change';
-                  }
-                }}>
-                开始上课
-              </NButton>
-            </NSpace>
-          </div>
-        ) : (
-          ''
-        )}
-
-        <NModal
-          v-model:show={forms.showAttendClass}
-          preset="card"
-          showIcon={false}
-          class={['modalTitle background', styles.attendClassModal]}
-          title={'选择班级'}
-          blockScroll={false}>
-          <AttendClass
-            onClose={() => (forms.showAttendClass = false)}
-            type={forms.attendClassType}
-            onPreview={(item: any) => {
-              if (window.matchMedia('(display-mode: standalone)').matches) {
-                state.application = window.matchMedia(
-                  '(display-mode: standalone)'
-                ).matches;
-                forms.previewModal = true;
-                forms.previewParams = {
-                  ...item
-                };
-              } else {
-                const { href } = router.resolve({
-                  path: '/attend-class',
-                  query: {
-                    ...item
-                  }
-                });
-                window.open(href, +new Date() + '');
-              }
-            }}
-            onConfirm={async (item: any) => {
-              if (forms.classGroupId) {
-                forms.className = item.name;
-                forms.classGroupId = item.classGroupId;
-                forms.preStudentNum = item.preStudentNum;
-                forms.subjectId = item.subjectId;
-                forms.courseScheduleSubjectId = item.courseScheduleSubjectId;
-                forms.showAttendClass = false;
-
-                prepareStore.setClassGroupId(item.classGroupId);
-                console.log(forms, 'forms', item);
-                checkSubjectIds();
-                // 声部切换时
-                eventGlobal.emit('onChangeClass', {
-                  lastUseCoursewareId: item.lastUseCoursewareId,
-                  unit: item.unit
-                });
-              } else {
-                const res = await courseScheduleStart({
-                  lessonCoursewareKnowledgeDetailId: prepareStore.selectKey,
-                  classGroupId: item.classGroupId,
-                  subjectId: prepareStore.getSubjectId
-                });
-                forms.showAttendClass = false;
-                if (window.matchMedia('(display-mode: standalone)').matches) {
-                  state.application = window.matchMedia(
-                    '(display-mode: standalone)'
-                  ).matches;
-                  forms.previewModal = true;
-                  forms.previewParams = {
-                    type: 'class',
-                    classId: res.data, // 上课编号
-                    classGroupId: item.classGroupId,
-                    preStudentNum: item.preStudentNum,
-                    subjectId: prepareStore.getSubjectId,
-                    detailId: prepareStore.getSelectKey,
-                    lessonCourseId: prepareStore.getBaseCourseware.id
-                  };
-                  setTimeout(() => {
-                    fscreen();
-                  }, 200);
-                } else {
-                  const { href } = router.resolve({
-                    path: '/attend-class',
-                    query: {
-                      type: 'class',
-                      classId: res.data, // 上课编号
-                      classGroupId: item.classGroupId,
-                      preStudentNum: item.preStudentNum,
-                      subjectId: prepareStore.getSubjectId,
-                      detailId: prepareStore.getSelectKey,
-                      lessonCourseId: prepareStore.getBaseCourseware.id
-                    }
-                  });
-                  window.open(href, +new Date() + '');
-                }
-              }
-            }}
-          />
-        </NModal>
-
-        {/* 弹窗查看 */}
-        <CardPreview v-model:show={forms.show} item={forms.item} />
-
-        <NModal
-          v-model:show={forms.removeVisiable}
-          preset="card"
-          class={['modalTitle', styles.removeVisiable]}
-          title={'提示'}>
-          <div class={styles.studentRemove}>
-            <p>是否完成编辑?</p>
-
-            <NSpace class={styles.btnGroupModal} justify="center">
-              <NButton round type="primary" onClick={onOverEdit}>
-                确定
-              </NButton>
-              <NButton round onClick={() => (forms.removeVisiable = false)}>
-                取消
-              </NButton>
-            </NSpace>
-          </div>
-        </NModal>
-
-        <NModal
-          v-model:show={forms.removeVisiable1}
-          preset="card"
-          class={['modalTitle', styles.removeVisiable1]}
-          title={'清空资源'}>
-          <div class={styles.studentRemove}>
-            <p>
-              请确认是否要清空资源?
-              <span>点击确认后所有的素材内容 将被清空掉。</span>
-            </p>
-
-            <NSpace class={styles.btnGroupModal} justify="center">
-              <NButton
-                round
-                type="primary"
-                onClick={() => {
-                  forms.coursewareList.forEach((item: any) => {
-                    forms.removeIds.push(item.id);
-                  });
-                  forms.coursewareList = [];
-                  forms.removeVisiable1 = false;
-                  forms.isEdit = true;
-                  // prepareStore.setCoursewareList([]);
-                }}>
-                确定
-              </NButton>
-              <NButton round onClick={() => (forms.removeVisiable1 = false)}>
-                取消
-              </NButton>
-            </NSpace>
-          </div>
-        </NModal>
-
-        <PreviewWindow
-          v-model:show={forms.previewModal}
-          type="attend"
-          params={forms.previewParams}
-        />
-
-        {/* 完成编辑时,选择声部 */}
-        <NModal
-          v-model:show={forms.subjectSyncVisiable}
-          preset="card"
-          class={['modalTitle background', styles.subjectSyncModal]}
-          title={'同步声部'}>
-          <SubjectSync
-            subjectId={prepareStore.getSubjectId as any}
-            onClose={() => (forms.subjectSyncVisiable = false)}
-            onConfirm={async (subjectIds: any) => {
-              //
-              try {
-                forms.editSubjectIds = subjectIds.join(',');
-                await onOverEdit();
-                forms.subjectSyncVisiable = false;
-              } catch {
-                //
-              }
-            }}
-          />
-        </NModal>
-      </div>
-    );
-  }
-});
-
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29

+ 0 - 7
src/views/prepare-lessons/components/lesson-main/train/assign-homework.tsx

@@ -28,17 +28,10 @@ import { usePrepareStore } from '/src/store/modules/prepareLessons';
 import AssignStudent from './assign-student';
 import { state } from '/src/state';
 import { nextTick } from 'process';
-<<<<<<< HEAD
-import { api_getCurrentGradeYear } from '/src/views/studentList/api';
-import useDrag from '@/hooks/useDrag';
-import Dragbom from '@/hooks/useDrag/dragbom';
-import { useUserStore } from '@/store/modules/users';
-=======
 import useDrag from '@/hooks/useDrag';
 import Dragbom from '@/hooks/useDrag/dragbom';
 import { useUserStore } from '@/store/modules/users';
 import { api_getCurrentGradeYear } from '/src/views/studentList/api';
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29
 
 export default defineComponent({
   name: 'assign-homework',

+ 1 - 1
src/views/prepare-lessons/components/lesson-main/train/assign-student/index.tsx

@@ -242,7 +242,7 @@ export default defineComponent({
                 v-model:value={state.searchFrom.classInstrumentId}
                 onUpdate:value={() => onSearch()}
                 checkStrategy="child"
-                showPath
+                showPath={false}
                 childrenField="instruments"
                 expandTrigger="hover"
                 labelField="name"

+ 0 - 1
src/views/prepare-lessons/components/resource-main/components/select-music/index.tsx

@@ -357,4 +357,3 @@ export default defineComponent({
     );
   }
 });
-

+ 0 - 231
src/views/prepare-lessons/model/select-music/select-item/index.tsx

@@ -1,4 +1,3 @@
-<<<<<<< HEAD
 import { NScrollbar, NSpin, NTabPane, NTabs } from 'naive-ui';
 import { defineComponent, onMounted, reactive, watch } from 'vue';
 import styles from './index.module.less';
@@ -227,233 +226,3 @@ export default defineComponent({
     );
   }
 });
-=======
-import { NScrollbar, NSpin, NTabPane, NTabs } from 'naive-ui';
-import { defineComponent, onMounted, reactive, watch } from 'vue';
-import styles from './index.module.less';
-import CardType from '@/components/card-type';
-import SearchGroup from './search-group';
-import TheEmpty from '/src/components/TheEmpty';
-import { useDebounceFn, useThrottleFn, useResizeObserver } from '@vueuse/core';
-import { usePrepareStore } from '/src/store/modules/prepareLessons';
-import { musicSheetPage } from '../../../api';
-import CardPreview from '/src/components/card-preview';
-import { favorite, materialQueryPage } from '/src/views/natural-resources/api';
-
-const formatType = (type: string) => {
-  if (type === 'shareResources') {
-    return 2;
-  } else if (type === 'myResources') {
-    return 3;
-  } else if (type === 'myCollect') {
-    return 4;
-  }
-};
-
-export default defineComponent({
-  name: 'select-music',
-  props: {
-    type: {
-      type: String,
-      default: ''
-    },
-    from: {
-      type: String,
-      default: ''
-    }
-  },
-  emits: ['add'],
-  setup(props, { emit }) {
-    const prepareStore = usePrepareStore();
-    const state = reactive({
-      searchHeight: '0px',
-      loading: false,
-      finshed: false, // 是否加载完
-      pagination: {
-        page: 1,
-        rows: 20
-      },
-      searchGroup: {
-        name: '',
-        type: 'MUSIC', //
-        musicSheetCategoriesId: '',
-        musicalInstrumentId: '',
-        sourceType: formatType(props.type),
-        status: 1,
-        versionFlag: false,
-        subjectId: null
-      },
-      tableList: [] as any,
-      show: false,
-      item: {} as any,
-      isShowAddDisabled: !prepareStore.getIsEditTrain
-    });
-    const className = 'musicSearchGroup' + +new Date();
-    const getList = async () => {
-      try {
-        if (state.pagination.page === 1) {
-          state.loading = true;
-        }
-        const { data } = await materialQueryPage({
-          ...state.searchGroup,
-          ...state.pagination
-        });
-        state.loading = false;
-        if (data.current === 1 && state.tableList.length > 0) return;
-        const tempRows = data.rows || [];
-        const temp: any = [];
-        tempRows.forEach((row: any) => {
-          const index = prepareStore.getTrainList.findIndex(
-            (course: any) => course.musicId === row.id
-          );
-          temp.push({
-            id: row.id,
-            coverImg: row.coverImg || row.musicSvg,
-            type: 'MUSIC',
-            title: row.name,
-            isCollect: !!row.favoriteFlag,
-            isSelected: row.sourceFrom === 'PLATFORM' ? true : false,
-            refFlag: row.refFlag,
-            content: row.id,
-            xmlFileUrl: row.xmlFileUrl,
-            exist: index !== -1 ? true : false // 是否存在
-          });
-        });
-        state.tableList.push(...temp);
-
-        state.finshed = data.pages <= data.current ? true : false;
-      } catch {
-        state.loading = false;
-      }
-    };
-
-    watch(
-      () => prepareStore.trainList,
-      () => {
-        state.tableList.forEach((item: any) => {
-          const index = prepareStore.getTrainList.findIndex(
-            (course: any) => course.musicId === item.id
-          );
-          item.exist = index !== -1 ? true : false; // 是否存在
-        });
-      },
-      {
-        deep: true,
-        immediate: true
-      }
-    );
-
-    const throttledFnSearch = useDebounceFn(item => {
-      state.pagination.page = 1;
-      state.tableList = [];
-      state.searchGroup = Object.assign(state.searchGroup, item);
-      getList();
-    }, 500);
-
-    const throttledFn = useThrottleFn(() => {
-      state.pagination.page = state.pagination.page + 1;
-      getList();
-    }, 500);
-
-    // 收藏
-    const onCollect = async (item: any) => {
-      try {
-        await favorite({
-          materialId: item.id,
-          favoriteFlag: item.isCollect ? 0 : 1,
-          type: item.type
-        });
-        item.isCollect = !item.isCollect;
-      } catch {
-        //
-      }
-    };
-
-    onMounted(() => {
-      useResizeObserver(
-        document.querySelector('.' + className) as HTMLElement,
-        (entries: any) => {
-          const entry = entries[0];
-          const { height } = entry.contentRect;
-          state.searchHeight = height + 'px';
-        }
-      );
-      if (props.type === 'homework') {
-        state.isShowAddDisabled = false;
-      }
-      getList();
-    });
-    return () => (
-      <div class={styles.selectMusic}>
-        <div class={className}>
-          <SearchGroup
-            type={props.type}
-            onSearch={(item: any) => throttledFnSearch(item)}
-          />
-        </div>
-
-        <NScrollbar
-          class={styles.listContainer}
-          style={{
-            'max-height': `calc(85vh - var(--modal-lesson-tab-height) - ${state.searchHeight} - 12px) `
-          }}
-          onScroll={(e: any) => {
-            const clientHeight = e.target?.clientHeight;
-            const scrollTop = e.target?.scrollTop;
-            const scrollHeight = e.target?.scrollHeight;
-            // 是否到底,是否加载完
-            if (
-              clientHeight + scrollTop + 20 >= scrollHeight &&
-              !state.finshed &&
-              !state.loading
-            ) {
-              throttledFn();
-            }
-          }}>
-          <NSpin show={state.loading} size={'small'}>
-            <div
-              style={{
-                'min-height': `calc(85vh - var(--modal-lesson-tab-height) - ${state.searchHeight} - 12px)`
-              }}
-              class={[
-                styles.listSection,
-                !state.loading && state.tableList.length <= 0
-                  ? styles.emptySection
-                  : ''
-              ]}>
-              {state.tableList.length > 0 && (
-                <div class={styles.list}>
-                  {state.tableList.map((item: any) => (
-                    <CardType
-                      isShowAdd
-                      isShowCollect
-                      item={item}
-                      // isShowAddDisabled={state.isShowAddDisabled}
-                      onAdd={() => emit('add', item)}
-                      disabledMouseHover={false}
-                      onClick={() => {
-                        if (item.type === 'IMG') return;
-                        state.show = true;
-                        state.item = item;
-                      }}
-                      onCollect={(item: any) => onCollect(item)}
-                    />
-                  ))}
-                </div>
-              )}
-              {!state.loading && state.tableList.length <= 0 && <TheEmpty />}
-            </div>
-          </NSpin>
-        </NScrollbar>
-
-        {/* 弹窗查看 */}
-        <CardPreview
-          from={props.from}
-          v-model:show={state.show}
-          item={state.item}
-        />
-      </div>
-    );
-  }
-});
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29

+ 0 - 4
src/views/prepare-lessons/model/select-resources/select-item/class-search-group/index.tsx

@@ -244,16 +244,12 @@ export default defineComponent({
           )} */}
 
           <NFormItem label="乐器:">
-<<<<<<< HEAD
-            <NSpace class={[styles.spaceSection, styles.spaceSection2,'spaceSectionBox']}>
-=======
             <NSpace
               class={[
                 styles.spaceSection,
                 styles.spaceSection2,
                 'spaceSectionBox'
               ]}>
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29
               {catchStore.getSubjectInstruments.map((subject: any) =>
                 subject.instruments && subject.instruments.length > 1 ? (
                   <NPopselect

+ 0 - 320
src/views/prepare-lessons/model/select-resources/select-item/index.tsx

@@ -1,4 +1,3 @@
-<<<<<<< HEAD
 import {
   PropType,
   defineComponent,
@@ -316,322 +315,3 @@ export default defineComponent({
     );
   }
 });
-=======
-import {
-  PropType,
-  defineComponent,
-  onMounted,
-  onUnmounted,
-  reactive,
-  toRefs,
-  watch
-} from 'vue';
-import ResourceSearchGroup from './resource-search-group';
-import { NScrollbar, NSpin, useMessage } from 'naive-ui';
-import styles from './index.module.less';
-import CardType from '/src/components/card-type';
-import { favorite, materialQueryPage } from '/src/views/natural-resources/api';
-import TheEmpty from '/src/components/TheEmpty';
-import { usePrepareStore } from '/src/store/modules/prepareLessons';
-import { useDebounceFn, useResizeObserver } from '@vueuse/core';
-import CardPreview from '/src/components/card-preview';
-import { eventGlobal } from '/src/utils';
-import ClassSearchGroup from './class-search-group';
-import { useCatchStore } from '/src/store/modules/catchData';
-
-const formatType = (type: string) => {
-  if (type === 'shareResources') {
-    return 2;
-  } else if (type === 'myResources') {
-    return 3;
-  } else if (type === 'myCollect') {
-    return 4;
-  } else if (type === 'relateResources') {
-    return 5;
-  }
-};
-
-export default defineComponent({
-  name: 'share-resources',
-  props: {
-    type: {
-      type: String as PropType<
-        'relateResources' | 'shareResources' | 'myResources' | 'myCollect'
-      >,
-      default: 'shareResources'
-    },
-    /** 从哪里使用 */
-    from: {
-      type: String,
-      default: ''
-    }
-  },
-  setup(props) {
-    const prepareStore = usePrepareStore();
-    const catchStore = useCatchStore();
-    const message = useMessage();
-    const { type } = toRefs(props);
-    const className = 'resourceSearchGroup' + +new Date();
-    const state = reactive({
-      searchHeight: '0px',
-      loading: false,
-      finshed: false, // 是否加载完
-      pagination: {
-        page: 1,
-        rows: 20
-      },
-      searchGroup: {
-        type: 'MUSIC', //
-        name: '',
-        bookVersionId: null,
-        subjectId: null,
-        sourceType: formatType(type.value),
-        musicalInstrumentId: null as any,
-        enableFlag: true
-      },
-      tableList: [] as any,
-      show: false,
-      item: {} as any
-    });
-
-    // 查询列表
-    const getList = async () => {
-      try {
-        if (state.pagination.page === 1) {
-          state.loading = true;
-        }
-        const { data } = await materialQueryPage({
-          ...state.searchGroup,
-          ...state.pagination,
-          lessonCoursewareKnowledgeId:
-            props.type === 'relateResources' || props.type === 'shareResources'
-              ? prepareStore.getSelectKey
-              : null,
-          relateLessonCoursewareKnowledgeMaterialIds: getIds()
-        });
-        state.loading = false;
-        const tempRows = data.rows || [];
-        const temp: any = [];
-        tempRows.forEach((row: any) => {
-          temp.push({
-            id: row.id,
-            coverImg: row.coverImg,
-            type: row.type,
-            title: row.name,
-            isCollect: !!row.favoriteFlag,
-            isSelected: row.sourceFrom === 'PLATFORM' ? true : false,
-            refFlag: row.refFlag,
-            content: row.content
-          });
-        });
-        state.tableList.push(...temp);
-
-        state.finshed = data.pages <= data.current ? true : false;
-      } catch {
-        state.loading = false;
-      }
-    };
-
-    const throttledFnSearch = useDebounceFn(item => {
-      state.pagination.page = 1;
-      state.tableList = [];
-      const { subjectId, ...res } = item;
-      state.searchGroup = Object.assign(state.searchGroup, {
-        ...res,
-        musicalInstrumentId: subjectId,
-        subjectId: null
-      });
-      getList();
-    }, 500);
-
-    // 添加资源
-    const onAdd = async (item: any) => {
-      try {
-        eventGlobal.emit('onPrepareAddItem', {
-          materialId: item.id,
-          coverImg: item.coverImg,
-          type: item.type,
-          title: item.title,
-          refFlag: item.refFlag,
-          isCollect: item.isCollect,
-          isSelected: item.isSelected,
-          content: item.content,
-          removeFlag: false
-        });
-      } catch {
-        //
-      }
-    };
-
-    // 收藏
-    const onCollect = async (item: any) => {
-      try {
-        await favorite({
-          materialId: item.id,
-          favoriteFlag: item.isCollect ? 0 : 1,
-          type: item.type
-        });
-        item.isCollect = !item.isCollect;
-      } catch {
-        //
-      }
-    };
-
-    const getIds = () => {
-      let noRepeatIds: any = [];
-      if (props.type === 'relateResources') {
-        const materialIds: any = [];
-        prepareStore.getCoursewareList.forEach((course: any) => {
-          course.list?.forEach((item: any) => {
-            materialIds.push(item.materialId);
-          });
-        });
-        noRepeatIds = Array(...new Set(materialIds));
-      }
-      return noRepeatIds.join(',');
-    };
-
-    const onUpdate = () => {
-      state.pagination.page = 1;
-      state.tableList = [];
-      getList();
-    };
-
-    onMounted(async () => {
-      // 加载的时候判断是否有资源数据
-      // 获取声部
-      await catchStore.getSubjects();
-
-      useResizeObserver(
-        document.querySelector('.' + className) as HTMLElement,
-        (entries: any) => {
-          const entry = entries[0];
-          const { height } = entry.contentRect;
-          state.searchHeight = height + 'px';
-        }
-      );
-      getList();
-
-      if (props.type === 'relateResources') {
-        eventGlobal.on('onCoursewareUpdate', onUpdate);
-      }
-    });
-    onUnmounted(() => {
-      eventGlobal.off('onCoursewareUpdate', onUpdate);
-    });
-
-    // onMounted(async () => {
-    //   // 获取声部
-    //   await catchStore.getSubjects();
-
-    //   // 加载的时候判断是否有资源数据
-    //   let noRepeatIds: any = [];
-    //   if (props.type === 'relateResources') {
-    //     const materialIds: any = [];
-    //     prepareStore.getCoursewareList.forEach((course: any) => {
-    //       course.list?.forEach((item: any) => {
-    //         materialIds.push(item.materialId);
-    //       });
-    //     });
-    //     noRepeatIds = Array(...new Set(materialIds));
-    //   }
-    //   getList(noRepeatIds.join(','));
-
-    //   useResizeObserver(
-    //     document.querySelector('.' + className) as HTMLElement,
-    //     (entries: any) => {
-    //       const entry = entries[0];
-    //       const { height } = entry.contentRect;
-    //       state.searchHeight = height + 'px';
-    //     }
-    //   );
-    // });
-    return () => (
-      <div>
-        <div class={className}>
-          {props.from === 'class' ? (
-            <ClassSearchGroup
-              type={props.type}
-              subjectId={prepareStore.getSubjectId as any}
-              onSearch={(item: any) => throttledFnSearch(item)}
-            />
-          ) : (
-            <ResourceSearchGroup
-              type={props.type}
-              // subjectId={prepareStore.getSubjectId as any}
-              onSearch={(item: any) => throttledFnSearch(item)}
-            />
-          )}
-        </div>
-        <NScrollbar
-          class={[styles.listContainer, 'list_container']}
-          style={{
-            'max-height': `calc(var(--listContainerHeight) - var(--modal-lesson-tab-height) - ${state.searchHeight}) `
-          }}
-          onScroll={(e: any) => {
-            const clientHeight = e.target?.clientHeight;
-            const scrollTop = e.target?.scrollTop;
-            const scrollHeight = e.target?.scrollHeight;
-            // 是否到底,是否加载完
-            if (
-              clientHeight + scrollTop + 20 >= scrollHeight &&
-              !state.finshed &&
-              !state.loading
-            ) {
-              state.pagination.page = state.pagination.page + 1;
-              getList();
-            }
-          }}>
-          <NSpin show={state.loading} size={'small'}>
-            <div
-              style={{
-                'min-height': `calc(var(--listContainerHeight) - var(--modal-lesson-tab-height) - ${state.searchHeight})`
-              }}
-              class={[
-                styles.listSection,
-                !state.loading && state.tableList.length <= 0
-                  ? styles.emptySection
-                  : ''
-              ]}>
-              {state.tableList.length > 0 && (
-                <div class={styles.list}>
-                  {state.tableList.map((item: any) => (
-                    <div class={[styles.itemWrap, 'selresources_item_Wrap']}>
-                      <div class={styles.itemWrapBox}>
-                        <CardType
-                          isShowAdd={props.from === 'class' ? false : true}
-                          item={item}
-                          isShowCollect={true}
-                          // isShowAddDisabled={!prepareStore.getIsEditResource}
-                          onAdd={(item: any) => onAdd(item)}
-                          disabledMouseHover={false}
-                          onCollect={(item: any) => onCollect(item)}
-                          onClick={() => {
-                            if (item.type === 'IMG') return;
-                            state.show = true;
-                            state.item = item;
-                          }}
-                        />
-                      </div>
-                    </div>
-                  ))}
-                </div>
-              )}
-
-              {!state.loading && state.tableList.length <= 0 && <TheEmpty />}
-            </div>
-          </NSpin>
-        </NScrollbar>
-
-        {/* 弹窗查看 */}
-        <CardPreview
-          size={props.from === 'class' ? 'large' : 'default'}
-          v-model:show={state.show}
-          from={props.from}
-          item={state.item}
-        />
-      </div>
-    );
-  }
-});
->>>>>>> 4c1812b5a554e059493b686bf2859714aab46f29

+ 2 - 2
vite.config.ts

@@ -23,8 +23,8 @@ function resolve(dir: string) {
 }
 // https://vitejs.dev/config/
 // https://github.com/vitejs/vite/issues/1930 .env
-// const proxyUrl = 'https://dev.kt.colexiu.com/';
-const proxyUrl = 'https://dev.kt.colexiu.com';
+const proxyUrl = 'https://dev.kt.colexiu.com/';
+// const proxyUrl = 'https://test.kt.colexiu.com';
 // const proxyUrl = 'http://192.168.3.14:7989';
 const now = new Date().getTime();
 export default defineConfig(() => {