diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 0000000..1f15032
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,46 @@
+/* eslint-disable @typescript-eslint/naming-convention */
+module.exports = {
+ env: {
+ browser: true,
+ 'vue/setup-compiler-macros': true
+ },
+ parser: 'vue-eslint-parser',
+ parserOptions: {
+ ecmaVersion: 'latest',
+ parser: '@typescript-eslint/parser',
+ sourceType: 'module'
+ },
+ extends: ['plugin:vue/vue3-recommended', 'plugin:prettier/recommended'],
+ rules: {
+ 'vue/component-api-style': ['error', ['script-setup']],
+ 'vue/component-name-in-template-casing': [
+ 'error',
+ 'PascalCase',
+ { ignores: ['/^n-/'] }
+ ],
+ 'vue/define-props-declaration': 'error',
+ 'vue/html-self-closing': ['error', { html: { void: 'always' } }], // compatibility with prettier
+ 'vue/no-empty-component-block': 'error',
+ 'vue/no-undef-components': [
+ 'error',
+ {
+ ignorePatterns: [
+ 'Transition',
+ 'TransitionGroup',
+ 'KeepAlive',
+ 'Teleport',
+ 'Suspense',
+ 'Story',
+ 'Variant',
+ 'RouterView',
+ 'RouterLink'
+ ]
+ }
+ ],
+ 'vue/padding-line-between-blocks': 'warn',
+ 'vue/prefer-true-attribute-shorthand': 'warn',
+ 'vue/require-emit-validator': 'error',
+ 'vue/multi-word-component-names': 'off',
+ 'vue/custom-event-name-casing': ['error', 'camelCase']
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f9e96a5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,155 @@
+# Created by https://www.toptal.com/developers/gitignore/api/node,vue
+# Edit at https://www.toptal.com/developers/gitignore?templates=node,vue
+
+### Node ###
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+
+### Node Patch ###
+# Serverless Webpack directories
+.webpack/
+
+# Optional stylelint cache
+
+# SvelteKit build / generate output
+.svelte-kit
+
+### Vue ###
+# gitignore template for Vue.js projects
+#
+# Recommended template: Node.gitignore
+
+# TODO: where does this rule come from?
+docs/_book
+
+# TODO: where does this rule come from?
+test/
+
+# End of https://www.toptal.com/developers/gitignore/api/node,vue
diff --git a/env.d.ts b/env.d.ts
new file mode 100644
index 0000000..9a89c2f
--- /dev/null
+++ b/env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+///
+///
+///
diff --git a/histoire.config.ts b/histoire.config.ts
new file mode 100644
index 0000000..9b9f922
--- /dev/null
+++ b/histoire.config.ts
@@ -0,0 +1,11 @@
+import { HstVue } from '@histoire/plugin-vue'
+import { defineConfig } from 'histoire'
+
+export default defineConfig({
+ plugins: [HstVue()],
+ setupFile: '/src/histoire.setup.ts',
+ theme: {
+ title: 'SKKUding Histoire'
+ },
+ viteIgnorePlugins: ['vite-plugin-checker']
+})
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..42a88d0
--- /dev/null
+++ b/index.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+ Codedang 코드당
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..c44d09a
--- /dev/null
+++ b/package.json
@@ -0,0 +1,79 @@
+{
+ "name": "frontend",
+ "private": true,
+ "scripts": {
+ "dev": "vite",
+ "build": "vue-tsc --noEmit && vite build",
+ "preview": "vite preview --port 5050",
+ "typecheck": "vue-tsc --noEmit",
+ "story": "histoire dev --port 3030",
+ "story:build": "histoire build"
+ },
+ "dependencies": {
+ "@apollo/client": "^3.9.5",
+ "@codemirror/autocomplete": "^6.13.0",
+ "@codemirror/commands": "^6.3.3",
+ "@codemirror/lang-cpp": "^6.0.2",
+ "@codemirror/lang-java": "^6.0.1",
+ "@codemirror/lang-python": "^6.1.4",
+ "@codemirror/language": "^6.10.1",
+ "@codemirror/state": "^6.4.1",
+ "@codemirror/theme-one-dark": "^6.1.2",
+ "@codemirror/view": "^6.25.0",
+ "@tiptap/pm": "^2.2.4",
+ "@tiptap/starter-kit": "^2.2.4",
+ "@tiptap/vue-3": "^2.2.4",
+ "@vee-validate/zod": "^4.12.5",
+ "@vue/apollo-composable": "4.0.1",
+ "@vueuse/components": "^10.8.0",
+ "@vueuse/core": "^10.8.0",
+ "@vueuse/integrations": "^10.8.0",
+ "@vueuse/math": "^10.8.0",
+ "@vueuse/router": "^10.8.0",
+ "axios": "^1.6.7",
+ "axios-retry": "^4.0.0",
+ "graphql": "^16.8.1",
+ "graphql-tag": "^2.12.6",
+ "naive-ui": "^2.38.1",
+ "nprogress": "0.2.0",
+ "pinia": "^2.1.7",
+ "sortablejs": "^1.15.2",
+ "vee-validate": "^4.12.5",
+ "vue": "^3.4.20",
+ "vue-dompurify-html": "^5.0.1",
+ "vue-query": "^1.26.0",
+ "vue-router": "^4.3.0",
+ "zod": "^3.22.4"
+ },
+ "devDependencies": {
+ "@histoire/plugin-vue": "^0.17.12",
+ "@iconify-json/ant-design": "^1.1.15",
+ "@iconify-json/bi": "^1.1.23",
+ "@iconify-json/fa": "^1.1.8",
+ "@iconify-json/fa6-brands": "^1.1.18",
+ "@iconify-json/fa6-regular": "^1.1.18",
+ "@iconify-json/fa6-solid": "^1.1.20",
+ "@iconify-json/fluent": "^1.1.49",
+ "@iconify-json/iconoir": "^1.1.41",
+ "@iconify-json/material-symbols": "^1.1.73",
+ "@iconify-json/ri": "^1.1.20",
+ "@tailwindcss/forms": "^0.5.7",
+ "@tailwindcss/typography": "^0.5.10",
+ "@types/node": "^20.11.20",
+ "@types/nprogress": "^0.2.3",
+ "@vitejs/plugin-vue": "^5.0.4",
+ "@vue/tsconfig": "^0.5.1",
+ "autoprefixer": "^10.4.17",
+ "histoire": "^0.17.9",
+ "postcss": "^8.4.35",
+ "tailwindcss": "^3.4.1",
+ "typescript": "^5.3.3",
+ "unplugin-icons": "^0.18.5",
+ "vite": "^5.1.4",
+ "vite-plugin-checker": "^0.6.4",
+ "vite-plugin-pages": "^0.32.0",
+ "vite-plugin-vue-layouts": "^0.11.0",
+ "vue-tsc": "^1.8.27"
+ },
+ "type": "module"
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..77176b9
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,5040 @@
+lockfileVersion: '6.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+dependencies:
+ '@apollo/client':
+ specifier: ^3.9.5
+ version: 3.9.5(graphql@16.8.1)(react@18.2.0)
+ '@codemirror/autocomplete':
+ specifier: ^6.13.0
+ version: 6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.0)(@lezer/common@1.2.1)
+ '@codemirror/commands':
+ specifier: ^6.3.3
+ version: 6.3.3
+ '@codemirror/lang-cpp':
+ specifier: ^6.0.2
+ version: 6.0.2
+ '@codemirror/lang-java':
+ specifier: ^6.0.1
+ version: 6.0.1
+ '@codemirror/lang-python':
+ specifier: ^6.1.4
+ version: 6.1.4(@codemirror/view@6.25.0)
+ '@codemirror/language':
+ specifier: ^6.10.1
+ version: 6.10.1
+ '@codemirror/state':
+ specifier: ^6.4.1
+ version: 6.4.1
+ '@codemirror/theme-one-dark':
+ specifier: ^6.1.2
+ version: 6.1.2
+ '@codemirror/view':
+ specifier: ^6.25.0
+ version: 6.25.0
+ '@tiptap/pm':
+ specifier: ^2.2.4
+ version: 2.2.4
+ '@tiptap/starter-kit':
+ specifier: ^2.2.4
+ version: 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/vue-3':
+ specifier: ^2.2.4
+ version: 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(vue@3.4.21)
+ '@vee-validate/zod':
+ specifier: ^4.12.5
+ version: 4.12.5(vue@3.4.21)
+ '@vue/apollo-composable':
+ specifier: 4.0.1
+ version: 4.0.1(@apollo/client@3.9.5)(graphql@16.8.1)(typescript@5.3.3)(vue@3.4.21)
+ '@vueuse/components':
+ specifier: ^10.8.0
+ version: 10.9.0(vue@3.4.21)
+ '@vueuse/core':
+ specifier: ^10.8.0
+ version: 10.9.0(vue@3.4.21)
+ '@vueuse/integrations':
+ specifier: ^10.8.0
+ version: 10.9.0(axios@1.6.7)(nprogress@0.2.0)(sortablejs@1.15.2)(vue@3.4.21)
+ '@vueuse/math':
+ specifier: ^10.8.0
+ version: 10.9.0(vue@3.4.21)
+ '@vueuse/router':
+ specifier: ^10.8.0
+ version: 10.9.0(vue-router@4.3.0)(vue@3.4.21)
+ axios:
+ specifier: ^1.6.7
+ version: 1.6.7
+ axios-retry:
+ specifier: ^4.0.0
+ version: 4.0.0(axios@1.6.7)
+ graphql:
+ specifier: ^16.8.1
+ version: 16.8.1
+ graphql-tag:
+ specifier: ^2.12.6
+ version: 2.12.6(graphql@16.8.1)
+ naive-ui:
+ specifier: ^2.38.1
+ version: 2.38.1(vue@3.4.21)
+ nprogress:
+ specifier: 0.2.0
+ version: 0.2.0
+ pinia:
+ specifier: ^2.1.7
+ version: 2.1.7(typescript@5.3.3)(vue@3.4.21)
+ sortablejs:
+ specifier: ^1.15.2
+ version: 1.15.2
+ vee-validate:
+ specifier: ^4.12.5
+ version: 4.12.5(vue@3.4.21)
+ vue:
+ specifier: ^3.4.20
+ version: 3.4.21(typescript@5.3.3)
+ vue-dompurify-html:
+ specifier: ^5.0.1
+ version: 5.0.1(vue@3.4.21)
+ vue-query:
+ specifier: ^1.26.0
+ version: 1.26.0(react@18.2.0)(vue@3.4.21)
+ vue-router:
+ specifier: ^4.3.0
+ version: 4.3.0(vue@3.4.21)
+ zod:
+ specifier: ^3.22.4
+ version: 3.22.4
+
+devDependencies:
+ '@histoire/plugin-vue':
+ specifier: ^0.17.12
+ version: 0.17.12(histoire@0.17.9)(vite@5.1.5)(vue@3.4.21)
+ '@iconify-json/ant-design':
+ specifier: ^1.1.15
+ version: 1.1.15
+ '@iconify-json/bi':
+ specifier: ^1.1.23
+ version: 1.1.23
+ '@iconify-json/fa':
+ specifier: ^1.1.8
+ version: 1.1.8
+ '@iconify-json/fa6-brands':
+ specifier: ^1.1.18
+ version: 1.1.18
+ '@iconify-json/fa6-regular':
+ specifier: ^1.1.18
+ version: 1.1.18
+ '@iconify-json/fa6-solid':
+ specifier: ^1.1.20
+ version: 1.1.20
+ '@iconify-json/fluent':
+ specifier: ^1.1.49
+ version: 1.1.49
+ '@iconify-json/iconoir':
+ specifier: ^1.1.41
+ version: 1.1.42
+ '@iconify-json/material-symbols':
+ specifier: ^1.1.73
+ version: 1.1.74
+ '@iconify-json/ri':
+ specifier: ^1.1.20
+ version: 1.1.20
+ '@tailwindcss/forms':
+ specifier: ^0.5.7
+ version: 0.5.7(tailwindcss@3.4.1)
+ '@tailwindcss/typography':
+ specifier: ^0.5.10
+ version: 0.5.10(tailwindcss@3.4.1)
+ '@types/node':
+ specifier: ^20.11.20
+ version: 20.11.24
+ '@types/nprogress':
+ specifier: ^0.2.3
+ version: 0.2.3
+ '@vitejs/plugin-vue':
+ specifier: ^5.0.4
+ version: 5.0.4(vite@5.1.5)(vue@3.4.21)
+ '@vue/tsconfig':
+ specifier: ^0.5.1
+ version: 0.5.1
+ autoprefixer:
+ specifier: ^10.4.17
+ version: 10.4.18(postcss@8.4.35)
+ histoire:
+ specifier: ^0.17.9
+ version: 0.17.9(@types/node@20.11.24)(vite@5.1.5)
+ postcss:
+ specifier: ^8.4.35
+ version: 8.4.35
+ tailwindcss:
+ specifier: ^3.4.1
+ version: 3.4.1
+ typescript:
+ specifier: ^5.3.3
+ version: 5.3.3
+ unplugin-icons:
+ specifier: ^0.18.5
+ version: 0.18.5
+ vite:
+ specifier: ^5.1.4
+ version: 5.1.5(@types/node@20.11.24)
+ vite-plugin-checker:
+ specifier: ^0.6.4
+ version: 0.6.4(typescript@5.3.3)(vite@5.1.5)(vue-tsc@1.8.27)
+ vite-plugin-pages:
+ specifier: ^0.32.0
+ version: 0.32.0(vite@5.1.5)
+ vite-plugin-vue-layouts:
+ specifier: ^0.11.0
+ version: 0.11.0(vite@5.1.5)(vue-router@4.3.0)(vue@3.4.21)
+ vue-tsc:
+ specifier: ^1.8.27
+ version: 1.8.27(typescript@5.3.3)
+
+packages:
+
+ /@akryum/tinypool@0.3.1:
+ resolution: {integrity: sha512-nznEC1ZA/m3hQDEnrGQ4c5gkaa9pcaVnw4LFJyzBAaR7E3nfiAPEHS3otnSafpZouVnoKeITl5D+2LsnwlnK8g==}
+ engines: {node: '>=14.0.0'}
+ dev: true
+
+ /@alloc/quick-lru@5.2.0:
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /@antfu/install-pkg@0.1.1:
+ resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==}
+ dependencies:
+ execa: 5.1.1
+ find-up: 5.0.0
+ dev: true
+
+ /@antfu/install-pkg@0.3.1:
+ resolution: {integrity: sha512-A3zWY9VeTPnxlMiZtsGHw2lSd3ghwvL8s9RiGOtqvDxhhFfZ781ynsGBa/iUnDJ5zBrmTFQrJDud3TGgRISaxw==}
+ dependencies:
+ execa: 8.0.1
+ dev: true
+
+ /@antfu/utils@0.7.7:
+ resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==}
+ dev: true
+
+ /@apollo/client@3.9.5(graphql@16.8.1)(react@18.2.0):
+ resolution: {integrity: sha512-7y+c8MTPU+hhTwvcGVtMMGIgWduzrvG1mz5yJMRyqYbheBkkky3Lki6ADWVSBXG1lZoOtPYvB2zDgVfKb2HSsw==}
+ peerDependencies:
+ graphql: ^15.0.0 || ^16.0.0
+ graphql-ws: ^5.5.5
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ subscriptions-transport-ws: ^0.9.0 || ^0.11.0
+ peerDependenciesMeta:
+ graphql-ws:
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+ subscriptions-transport-ws:
+ optional: true
+ dependencies:
+ '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1)
+ '@wry/caches': 1.0.1
+ '@wry/equality': 0.5.7
+ '@wry/trie': 0.5.0
+ graphql: 16.8.1
+ graphql-tag: 2.12.6(graphql@16.8.1)
+ hoist-non-react-statics: 3.3.2
+ optimism: 0.18.0
+ prop-types: 15.8.1
+ react: 18.2.0
+ rehackt: 0.0.5(react@18.2.0)
+ response-iterator: 0.2.6
+ symbol-observable: 4.0.0
+ ts-invariant: 0.10.3
+ tslib: 2.6.2
+ zen-observable-ts: 1.2.5
+ transitivePeerDependencies:
+ - '@types/react'
+ dev: false
+
+ /@babel/code-frame@7.23.5:
+ resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.23.4
+ chalk: 2.4.2
+ dev: true
+
+ /@babel/helper-string-parser@7.23.4:
+ resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-validator-identifier@7.22.20:
+ resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/highlight@7.23.4:
+ resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.20
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@babel/parser@7.24.0:
+ resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.24.0
+
+ /@babel/runtime@7.24.0:
+ resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.14.1
+ dev: false
+
+ /@babel/types@7.24.0:
+ resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.23.4
+ '@babel/helper-validator-identifier': 7.22.20
+ to-fast-properties: 2.0.0
+
+ /@codemirror/autocomplete@6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.0)(@lezer/common@1.2.1):
+ resolution: {integrity: sha512-SuDrho1klTINfbcMPnyro1ZxU9xJtwDMtb62R8TjL/tOl71IoOsvBo1a9x+hDvHhIzkTcJHy2VC+rmpGgYkRSw==}
+ peerDependencies:
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ '@lezer/common': ^1.0.0
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.25.0
+ '@lezer/common': 1.2.1
+ dev: false
+
+ /@codemirror/commands@6.3.3:
+ resolution: {integrity: sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.25.0
+ '@lezer/common': 1.2.1
+
+ /@codemirror/lang-cpp@6.0.2:
+ resolution: {integrity: sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/cpp': 1.1.2
+ dev: false
+
+ /@codemirror/lang-java@6.0.1:
+ resolution: {integrity: sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/java': 1.1.1
+ dev: false
+
+ /@codemirror/lang-json@6.0.1:
+ resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/json': 1.0.2
+ dev: true
+
+ /@codemirror/lang-python@6.1.4(@codemirror/view@6.25.0):
+ resolution: {integrity: sha512-b6d1TDqrkCjFNvMO01SWldFiDoZ39yl3tDMC1Y5f8glA2eZpynPxJhwYVTlGFr0stizcJgrp6ojLEGH2myoZAw==}
+ dependencies:
+ '@codemirror/autocomplete': 6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.0)(@lezer/common@1.2.1)
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@lezer/common': 1.2.1
+ '@lezer/python': 1.1.11
+ transitivePeerDependencies:
+ - '@codemirror/view'
+ dev: false
+
+ /@codemirror/language@6.10.1:
+ resolution: {integrity: sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.25.0
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ style-mod: 4.1.2
+
+ /@codemirror/lint@6.5.0:
+ resolution: {integrity: sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.25.0
+ crelt: 1.0.6
+ dev: true
+
+ /@codemirror/state@6.4.1:
+ resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==}
+
+ /@codemirror/theme-one-dark@6.1.2:
+ resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.1
+ '@codemirror/view': 6.25.0
+ '@lezer/highlight': 1.2.0
+
+ /@codemirror/view@6.25.0:
+ resolution: {integrity: sha512-XnMGOm6qXB8znzCko0N7k97qZayVdvqpA0JebxA5fHtgBjC/XlCPhH9TK92TahsoCKMPQlaTCUep06Dwj/+GXQ==}
+ dependencies:
+ '@codemirror/state': 6.4.1
+ style-mod: 4.1.2
+ w3c-keyname: 2.2.8
+
+ /@css-render/plugin-bem@0.15.12(css-render@0.15.12):
+ resolution: {integrity: sha512-Lq2jSOZn+wYQtsyaFj6QRz2EzAnd3iW5fZeHO1WSXQdVYwvwGX0ZiH3X2JQgtgYLT1yeGtrwrqJdNdMEUD2xTw==}
+ peerDependencies:
+ css-render: ~0.15.12
+ dependencies:
+ css-render: 0.15.12
+ dev: false
+
+ /@css-render/vue3-ssr@0.15.12(vue@3.4.21):
+ resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==}
+ peerDependencies:
+ vue: ^3.0.11
+ dependencies:
+ vue: 3.4.21(typescript@5.3.3)
+ dev: false
+
+ /@emotion/hash@0.8.0:
+ resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
+ dev: false
+
+ /@esbuild/aix-ppc64@0.19.12:
+ resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm64@0.19.12:
+ resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm@0.19.12:
+ resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-x64@0.19.12:
+ resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-arm64@0.19.12:
+ resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-x64@0.19.12:
+ resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-arm64@0.19.12:
+ resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-x64@0.19.12:
+ resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm64@0.19.12:
+ resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm@0.19.12:
+ resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ia32@0.19.12:
+ resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64@0.19.12:
+ resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-mips64el@0.19.12:
+ resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ppc64@0.19.12:
+ resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-riscv64@0.19.12:
+ resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-s390x@0.19.12:
+ resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-x64@0.19.12:
+ resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-x64@0.19.12:
+ resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64@0.19.12:
+ resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/sunos-x64@0.19.12:
+ resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-arm64@0.19.12:
+ resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-ia32@0.19.12:
+ resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-x64@0.19.12:
+ resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1):
+ resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==}
+ peerDependencies:
+ graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0
+ dependencies:
+ graphql: 16.8.1
+ dev: false
+
+ /@histoire/app@0.17.10(vite@5.1.5):
+ resolution: {integrity: sha512-WN28m1N8x3WkVzzePYekrwgUQNixyUrLdyITpLk3/scFqsDSByG0nsHKi1MAMMHaVxyC9dcdQF4j50QdVWCZgQ==}
+ dependencies:
+ '@histoire/controls': 0.17.9(vite@5.1.5)
+ '@histoire/shared': 0.17.10(vite@5.1.5)
+ '@histoire/vendors': 0.17.8
+ '@types/flexsearch': 0.7.6
+ flexsearch: 0.7.21
+ shiki-es: 0.2.0
+ transitivePeerDependencies:
+ - vite
+ dev: true
+
+ /@histoire/controls@0.17.9(vite@5.1.5):
+ resolution: {integrity: sha512-1f1cE1NZ2emzGMRnGfAb/gCKDtBT3bUZzj3aAcDmhm3MA2Vy5tGYSb9j+KuTTj7+exhOrKefmedr9a0q1/5g2w==}
+ dependencies:
+ '@codemirror/commands': 6.3.3
+ '@codemirror/lang-json': 6.0.1
+ '@codemirror/language': 6.10.1
+ '@codemirror/lint': 6.5.0
+ '@codemirror/state': 6.4.1
+ '@codemirror/theme-one-dark': 6.1.2
+ '@codemirror/view': 6.25.0
+ '@histoire/shared': 0.17.10(vite@5.1.5)
+ '@histoire/vendors': 0.17.8
+ transitivePeerDependencies:
+ - vite
+ dev: true
+
+ /@histoire/plugin-vue@0.17.12(histoire@0.17.9)(vite@5.1.5)(vue@3.4.21):
+ resolution: {integrity: sha512-mpx2uwHq/qemnX+ARQtDR3M9kIt1y4kBCmzBkOquhJTp61mtHMu4hZKSzzQpQWA2QxEyuuwpaNiU7Mlms13EaQ==}
+ peerDependencies:
+ histoire: ^0.17.9
+ vue: ^3.2.47
+ dependencies:
+ '@histoire/controls': 0.17.9(vite@5.1.5)
+ '@histoire/shared': 0.17.10(vite@5.1.5)
+ '@histoire/vendors': 0.17.8
+ change-case: 4.1.2
+ globby: 13.2.2
+ histoire: 0.17.9(@types/node@20.11.24)(vite@5.1.5)
+ launch-editor: 2.6.1
+ pathe: 1.1.2
+ vue: 3.4.21(typescript@5.3.3)
+ transitivePeerDependencies:
+ - vite
+ dev: true
+
+ /@histoire/shared@0.17.10(vite@5.1.5):
+ resolution: {integrity: sha512-8hzk/WKASrYfaJ+UtR6Mv7aZlP8IZvQ5POoHAi+JvHMJTtzCXZeuL0qdQAXg0zdk3vWIH20oSl6N8hZE1AP7yA==}
+ peerDependencies:
+ vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
+ dependencies:
+ '@histoire/vendors': 0.17.8
+ '@types/fs-extra': 9.0.13
+ '@types/markdown-it': 12.2.3
+ chokidar: 3.6.0
+ pathe: 1.1.2
+ picocolors: 1.0.0
+ vite: 5.1.5(@types/node@20.11.24)
+ dev: true
+
+ /@histoire/vendors@0.17.8:
+ resolution: {integrity: sha512-kyNy1yvA8tuEXVuUUdO5k8yQgp1XkcktcLAM4XB3B0mk9qUge7n85bUfGJYPk3ovLeX4RBJHsxh4RzzQ4LBCvg==}
+ dev: true
+
+ /@iconify-json/ant-design@1.1.15:
+ resolution: {integrity: sha512-E8XLyDo2HWVeVT8ViNTxF2+0Vgcox8FC73G4v64AM+lvlWpERcY90g7jXoBOeykl1pQCf1awkQUwjkynZ8Xb7A==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify-json/bi@1.1.23:
+ resolution: {integrity: sha512-1te+g9ZzI+PU1Lv6Xerd3XPXf4DE6g3TvDL2buIopTAfrauPHyXCHPFQMrzoQVNrVPCpN3rv3vBtJMPyBwJ9IA==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify-json/fa6-brands@1.1.18:
+ resolution: {integrity: sha512-vmeJP06Xbj0XbVGiBHg0q8H3M894d4bGXKCmiHt6JqUdpiGcIV7r96N+BOU4ZS1+hvpV57fTfXlFPiUfxAIfkg==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify-json/fa6-regular@1.1.18:
+ resolution: {integrity: sha512-+lLtiTHf02rxeC/9R6vzJi9eGcuubzeHfTt/HWvDnovz2Kt5NEntW8foUSLeLo7kPU7RNvea68lt7QM9HYFloQ==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify-json/fa6-solid@1.1.20:
+ resolution: {integrity: sha512-99P9zOacNS56MNNT7Mzih2Loe3jzwNFKFBOiVh+kF+4D+AHW5zyksyvMizIgGu2cizFz6npaATlCtl3E5Zfjbw==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify-json/fa@1.1.8:
+ resolution: {integrity: sha512-he23ZsuDxA6Hx7rnrEpSJnmu7t7RtG/SbrENZhMSPiZ4bNRGHjyPZimtOy10k2/nfwNsW57ECDsO5eK0BkcoMg==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify-json/fluent@1.1.49:
+ resolution: {integrity: sha512-BDgdWb8WjWzvfyv1s8JjYViRN/qPDG1cS56tjKt6p0InZq/+PAQFeFBhirTSKtqa8fGzUJpR4dCEBcZDXEb4EA==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify-json/iconoir@1.1.42:
+ resolution: {integrity: sha512-5FQfS+dSAvHWCBtsp/E+4AKK6jYVCxw98R4LLsY5s8mSUm9BFstjCA5bmTcIl+iYDgc+vUmtW26jYmBEf4gLIA==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify-json/material-symbols@1.1.74:
+ resolution: {integrity: sha512-cuQKvpGWrMNJq0i3ynO+V6yus0Smiupw92GW8Gq/4MHfYfbl1MrbVmafKQAd8RJVqiEXq4/F084OEcigf77UqQ==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify-json/ri@1.1.20:
+ resolution: {integrity: sha512-yScIGjLFBCJKWKskQTWRjNI2Awoq+VRDkRxEsCQvSfdz41n+xkRtFG2K6J1OVI90ClRHfjFC8VJ2+WzxxyFjTQ==}
+ dependencies:
+ '@iconify/types': 2.0.0
+ dev: true
+
+ /@iconify/types@2.0.0:
+ resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
+ dev: true
+
+ /@iconify/utils@2.1.22:
+ resolution: {integrity: sha512-6UHVzTVXmvO8uS6xFF+L/QTSpTzA/JZxtgU+KYGFyDYMEObZ1bu/b5l+zNJjHy+0leWjHI+C0pXlzGvv3oXZMA==}
+ dependencies:
+ '@antfu/install-pkg': 0.1.1
+ '@antfu/utils': 0.7.7
+ '@iconify/types': 2.0.0
+ debug: 4.3.4
+ kolorist: 1.8.0
+ local-pkg: 0.5.0
+ mlly: 1.6.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@isaacs/cliui@8.0.2:
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: /string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: /strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: /wrap-ansi@7.0.0
+ dev: true
+
+ /@jridgewell/gen-mapping@0.3.5:
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.25
+ dev: true
+
+ /@jridgewell/resolve-uri@3.1.2:
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/set-array@1.2.1:
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/sourcemap-codec@1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+
+ /@jridgewell/trace-mapping@0.3.25:
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
+ /@juggle/resize-observer@3.4.0:
+ resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==}
+ dev: false
+
+ /@lezer/common@1.2.1:
+ resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==}
+
+ /@lezer/cpp@1.1.2:
+ resolution: {integrity: sha512-macwKtyeUO0EW86r3xWQCzOV9/CF8imJLpJlPv3sDY57cPGeUZ8gXWOWNlJr52TVByMV3PayFQCA5SHEERDmVQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/highlight@1.2.0:
+ resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+
+ /@lezer/java@1.1.1:
+ resolution: {integrity: sha512-mt3dX13fRlpY7RlWELYRakanXgmwXsLRCrhstrn+c1sZd7jR2xle46/3heoxGd+oHxnuTnpoyXTyxcLJQs9+mQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@lezer/json@1.0.2:
+ resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: true
+
+ /@lezer/lr@1.4.0:
+ resolution: {integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==}
+ dependencies:
+ '@lezer/common': 1.2.1
+
+ /@lezer/python@1.1.11:
+ resolution: {integrity: sha512-C3QeLCcdAKJDUOsYjfFP6a1wdn8jhUNX200bgFm8TpKH1eM2PlgYQS5ugw6E38qGeEx7CP21I1Q52SoybXt0OQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: false
+
+ /@nodelib/fs.scandir@2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+ dev: true
+
+ /@nodelib/fs.stat@2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /@nodelib/fs.walk@1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+ dev: true
+
+ /@pkgjs/parseargs@0.11.0:
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@polka/url@1.0.0-next.24:
+ resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==}
+ dev: true
+
+ /@popperjs/core@2.11.8:
+ resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
+ dev: false
+
+ /@remirror/core-constants@2.0.2:
+ resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==}
+ dev: false
+
+ /@rollup/rollup-android-arm-eabi@4.12.0:
+ resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-android-arm64@4.12.0:
+ resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-arm64@4.12.0:
+ resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-darwin-x64@4.12.0:
+ resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm-gnueabihf@4.12.0:
+ resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-gnu@4.12.0:
+ resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-arm64-musl@4.12.0:
+ resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-riscv64-gnu@4.12.0:
+ resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-gnu@4.12.0:
+ resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-linux-x64-musl@4.12.0:
+ resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-arm64-msvc@4.12.0:
+ resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-ia32-msvc@4.12.0:
+ resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@rollup/rollup-win32-x64-msvc@4.12.0:
+ resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@tailwindcss/forms@0.5.7(tailwindcss@3.4.1):
+ resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1'
+ dependencies:
+ mini-svg-data-uri: 1.4.4
+ tailwindcss: 3.4.1
+ dev: true
+
+ /@tailwindcss/typography@0.5.10(tailwindcss@3.4.1):
+ resolution: {integrity: sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || insiders'
+ dependencies:
+ lodash.castarray: 4.4.0
+ lodash.isplainobject: 4.0.6
+ lodash.merge: 4.6.2
+ postcss-selector-parser: 6.0.10
+ tailwindcss: 3.4.1
+ dev: true
+
+ /@tiptap/core@2.2.4(@tiptap/pm@2.2.4):
+ resolution: {integrity: sha512-cRrI8IlLIhCE1hacBQzXIC8dsRvGq6a4lYWQK/BaHuZg21CG7szp3Vd8Ix+ra1f5v0xPOT+Hy+QFNQooRMKMCw==}
+ peerDependencies:
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/pm': 2.2.4
+ dev: false
+
+ /@tiptap/extension-blockquote@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-FrfPnn0VgVrUwWLwja1afX99JGLp6PE9ThVcmri+tLwUZQvTTVcCvHoCdOakav3/nge1+aV4iE3tQdyq1tWI9Q==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-bold@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-v3tTLc8YESFZPOGj5ByFr8VbmQ/PTo49T1vsK50VubxIN/5r9cXlKH8kb3dZlZxCxJa3FrXNO/M8rdGBSWQvSg==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-bubble-menu@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4):
+ resolution: {integrity: sha512-Nx1fS9jcFlhxaTDYlnayz2UulhK6CMaePc36+7PQIVI+u20RhgTCRNr25zKNemvsiM0RPZZVUjlHkxC0l5as1Q==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/pm': 2.2.4
+ tippy.js: 6.3.7
+ dev: false
+
+ /@tiptap/extension-bullet-list@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-z/MPmW8bhRougMuorl6MAQBXeK4rhlP+jBWlNwT+CT8h5IkXqPnDbM1sZeagp2nYfVV6Yc4RWpzimqHHtGnYTA==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-code-block@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4):
+ resolution: {integrity: sha512-h6WV9TmaBEZmvqe1ezMR83DhCPUap6P2mSR5pwVk0WVq6rvZjfgU0iF3EetBJOeDgPlz7cNe2NMDfVb1nGTM/g==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/pm': 2.2.4
+ dev: false
+
+ /@tiptap/extension-code@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-JB4SJ2mUU/9qXFUf+K5K9szvovnN9AIcCb0f0UlcVBuddKHSqCl3wO3QJgYt44BfQTLMNuyzr+zVqfFd6BNt/g==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-document@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-z+05xGK0OFoXV1GL+/8bzcZuWMdMA3+EKwk5c+iziG60VZcvGTF7jBRsZidlu9Oaj0cDwWHCeeo6L9SgSh6i2A==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-dropcursor@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4):
+ resolution: {integrity: sha512-IHwkEKmqpqXyJi16h7871NrcIqeyN7I6XRE2qdqi+MhGigVWI8nWHoYbjRKa7K/1uhs5zeRYyDlq5EuZyL6mgA==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/pm': 2.2.4
+ dev: false
+
+ /@tiptap/extension-floating-menu@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4):
+ resolution: {integrity: sha512-U25l7PEzOmlAPugNRl8t8lqyhQZS6W/+3f92+FdwW9qXju3i62iX/3OGCC3Gv+vybmQ4fbZmMjvl+VDfenNi3A==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/pm': 2.2.4
+ tippy.js: 6.3.7
+ dev: false
+
+ /@tiptap/extension-gapcursor@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4):
+ resolution: {integrity: sha512-Y6htT/RDSqkQ1UwG2Ia+rNVRvxrKPOs3RbqKHPaWr3vbFWwhHyKhMCvi/FqfI3d5pViVHOZQ7jhb5hT/a0BmNw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/pm': 2.2.4
+ dev: false
+
+ /@tiptap/extension-hard-break@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-FPvS57GcqHIeLbPKGJa3gnH30Xw+YB1PXXnAWG2MpnMtc2Vtj1l5xaYYBZB+ADdXLAlU0YMbKhFLQO4+pg1Isg==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-heading@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-gkq7Ns2FcrOCRq7Q+VRYt5saMt2R9g4REAtWy/jEevJ5UV5vA2AiGnYDmxwAkHutoYU0sAUkjqx37wE0wpamNw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-history@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4):
+ resolution: {integrity: sha512-FDM32XYF5NU4mzh+fJ8w2CyUqv0l2Nl15sd6fOhQkVxSj8t57z+DUXc9ZR3zkH+1RAagYJo/2Gu3e99KpMr0tg==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/pm': 2.2.4
+ dev: false
+
+ /@tiptap/extension-horizontal-rule@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4):
+ resolution: {integrity: sha512-iCRHjFQQHApWg3R4fkKkJQhWEOdu1Fdc4YEAukdOXPSg3fg36IwjvsMXjt9SYBtVZ+iio3rORCZGXyMvgCH9uw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/pm': 2.2.4
+ dev: false
+
+ /@tiptap/extension-italic@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-qIhGNvWnsQswSgEMRA8jQQjxfkOGNAuNWKEVQX9DPoqAUgknT41hQcAMP8L2+OdACpb2jbVMOO5Cy5Dof2L8/w==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-list-item@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-lPLKGKsHpM9ClUa8n7GEUn8pG6HCYU0vFruIy3l2t6jZdHkrgBnYtVGMZ13K8UDnj/hlAlccxku0D0P4mA1Vrg==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-ordered-list@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-TpFy140O9Af1JciXt+xwqYUXxcJ6YG8zi/B5UDJujp+FH5sCmlYYBBnWxiFMhVaj6yEmA2eafu1qUkic/1X5Aw==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-paragraph@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-m1KwyvTNJxsq7StbspbcOhxO4Wk4YpElDbqOouWi+H4c8azdpI5Pn96ZqhFeE9bSyjByg6OcB/wqoJsLbeFWdQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-strike@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-/a2EwQgA+PpG17V2tVRspcrIY0SN3blwcgM7lxdW4aucGkqSKnf7+91dkhQEwCZ//o8kv9mBCyRoCUcGy6S5Xg==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/extension-text@2.2.4(@tiptap/core@2.2.4):
+ resolution: {integrity: sha512-NlKHMPnRJXB+0AGtDlU0P2Pg+SdesA2lMMd7JzDUgJgL7pX2jOb8eUqSeOjFKuSzFSqYfH6C3o6mQiNhuQMv+g==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ dev: false
+
+ /@tiptap/pm@2.2.4:
+ resolution: {integrity: sha512-Po0klR165zgtinhVp1nwMubjyKx6gAY9kH3IzcniYLCkqhPgiqnAcCr61TBpp4hfK8YURBS4ihvCB1dyfCyY8A==}
+ dependencies:
+ prosemirror-changeset: 2.2.1
+ prosemirror-collab: 1.3.1
+ prosemirror-commands: 1.5.2
+ prosemirror-dropcursor: 1.8.1
+ prosemirror-gapcursor: 1.3.2
+ prosemirror-history: 1.3.2
+ prosemirror-inputrules: 1.4.0
+ prosemirror-keymap: 1.2.2
+ prosemirror-markdown: 1.12.0
+ prosemirror-menu: 1.2.4
+ prosemirror-model: 1.19.4
+ prosemirror-schema-basic: 1.2.2
+ prosemirror-schema-list: 1.3.0
+ prosemirror-state: 1.4.3
+ prosemirror-tables: 1.3.7
+ prosemirror-trailing-node: 2.0.8(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.33.1)
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
+ dev: false
+
+ /@tiptap/starter-kit@2.2.4(@tiptap/pm@2.2.4):
+ resolution: {integrity: sha512-Kbk7qUfIZg3+bNa3e/wBeDQt4jJB46uQgM+xy5NSY6H8NZP6gdmmap3aIrn9S/W/hGpxJl4RcXAeaT0CQji9XA==}
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/extension-blockquote': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-bold': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-bullet-list': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-code': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-code-block': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)
+ '@tiptap/extension-document': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-dropcursor': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)
+ '@tiptap/extension-gapcursor': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)
+ '@tiptap/extension-hard-break': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-heading': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-history': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)
+ '@tiptap/extension-horizontal-rule': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)
+ '@tiptap/extension-italic': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-list-item': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-ordered-list': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-paragraph': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-strike': 2.2.4(@tiptap/core@2.2.4)
+ '@tiptap/extension-text': 2.2.4(@tiptap/core@2.2.4)
+ transitivePeerDependencies:
+ - '@tiptap/pm'
+ dev: false
+
+ /@tiptap/vue-3@2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(vue@3.4.21):
+ resolution: {integrity: sha512-6Rue56OUmDl/OT07QcLsH1UvYGUmV8OFSDCrLrUyku/2lAYHwHz6+KhAB5paZt70nEGIw03G1KCT074negj6NQ==}
+ peerDependencies:
+ '@tiptap/core': ^2.0.0
+ '@tiptap/pm': ^2.0.0
+ vue: ^3.0.0
+ dependencies:
+ '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4)
+ '@tiptap/extension-bubble-menu': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)
+ '@tiptap/extension-floating-menu': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)
+ '@tiptap/pm': 2.2.4
+ vue: 3.4.21(typescript@5.3.3)
+ dev: false
+
+ /@tootallnate/once@2.0.0:
+ resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@types/debug@4.1.12:
+ resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ dependencies:
+ '@types/ms': 0.7.34
+ dev: true
+
+ /@types/estree@1.0.5:
+ resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ dev: true
+
+ /@types/flexsearch@0.7.6:
+ resolution: {integrity: sha512-H5IXcRn96/gaDmo+rDl2aJuIJsob8dgOXDqf8K0t8rWZd1AFNaaspmRsElESiU+EWE33qfbFPgI0OC/B1g9FCA==}
+ dev: true
+
+ /@types/fs-extra@9.0.13:
+ resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==}
+ dependencies:
+ '@types/node': 20.11.24
+ dev: true
+
+ /@types/katex@0.16.7:
+ resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
+ dev: false
+
+ /@types/linkify-it@3.0.5:
+ resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==}
+ dev: true
+
+ /@types/lodash-es@4.17.12:
+ resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
+ dependencies:
+ '@types/lodash': 4.14.202
+ dev: false
+
+ /@types/lodash@4.14.202:
+ resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==}
+ dev: false
+
+ /@types/markdown-it@12.2.3:
+ resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==}
+ dependencies:
+ '@types/linkify-it': 3.0.5
+ '@types/mdurl': 1.0.5
+ dev: true
+
+ /@types/mdurl@1.0.5:
+ resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==}
+ dev: true
+
+ /@types/ms@0.7.34:
+ resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
+ dev: true
+
+ /@types/node@20.11.24:
+ resolution: {integrity: sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==}
+ dependencies:
+ undici-types: 5.26.5
+ dev: true
+
+ /@types/nprogress@0.2.3:
+ resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==}
+ dev: true
+
+ /@types/web-bluetooth@0.0.20:
+ resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
+ dev: false
+
+ /@vee-validate/zod@4.12.5(vue@3.4.21):
+ resolution: {integrity: sha512-hUjvXaa4HHvlZeosucViIDOUikQmyKaXXuL6P8LR1ETOUrBV6ntTsafJGvRYtwhXosoLYuolUD6Km737okK4Gg==}
+ dependencies:
+ type-fest: 4.11.1
+ vee-validate: 4.12.5(vue@3.4.21)
+ zod: 3.22.4
+ transitivePeerDependencies:
+ - vue
+ dev: false
+
+ /@vitejs/plugin-vue@5.0.4(vite@5.1.5)(vue@3.4.21):
+ resolution: {integrity: sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ vite: ^5.0.0
+ vue: ^3.2.25
+ dependencies:
+ vite: 5.1.5(@types/node@20.11.24)
+ vue: 3.4.21(typescript@5.3.3)
+ dev: true
+
+ /@volar/language-core@1.11.1:
+ resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==}
+ dependencies:
+ '@volar/source-map': 1.11.1
+ dev: true
+
+ /@volar/source-map@1.11.1:
+ resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==}
+ dependencies:
+ muggle-string: 0.3.1
+ dev: true
+
+ /@volar/typescript@1.11.1:
+ resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==}
+ dependencies:
+ '@volar/language-core': 1.11.1
+ path-browserify: 1.0.1
+ dev: true
+
+ /@vue/apollo-composable@4.0.1(@apollo/client@3.9.5)(graphql@16.8.1)(typescript@5.3.3)(vue@3.4.21):
+ resolution: {integrity: sha512-mUiC2ucO4CeRhedC5wcEzzoweuDLB/rgKPAcZEtDYBpErRTeK3CQ1ffygp1E9GbibuTfKms11k5P/DgDYdzhZA==}
+ peerDependencies:
+ '@apollo/client': ^3.4.13
+ '@vue/composition-api': ^1.0.0
+ graphql: '>=15'
+ vue: ^2.6.0 || ^3.1.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ dependencies:
+ '@apollo/client': 3.9.5(graphql@16.8.1)(react@18.2.0)
+ graphql: 16.8.1
+ throttle-debounce: 5.0.0
+ ts-essentials: 9.4.1(typescript@5.3.3)
+ vue: 3.4.21(typescript@5.3.3)
+ vue-demi: 0.14.7(vue@3.4.21)
+ transitivePeerDependencies:
+ - typescript
+ dev: false
+
+ /@vue/compiler-core@3.4.21:
+ resolution: {integrity: sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==}
+ dependencies:
+ '@babel/parser': 7.24.0
+ '@vue/shared': 3.4.21
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.0.2
+
+ /@vue/compiler-dom@3.4.21:
+ resolution: {integrity: sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==}
+ dependencies:
+ '@vue/compiler-core': 3.4.21
+ '@vue/shared': 3.4.21
+
+ /@vue/compiler-sfc@3.4.21:
+ resolution: {integrity: sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==}
+ dependencies:
+ '@babel/parser': 7.24.0
+ '@vue/compiler-core': 3.4.21
+ '@vue/compiler-dom': 3.4.21
+ '@vue/compiler-ssr': 3.4.21
+ '@vue/shared': 3.4.21
+ estree-walker: 2.0.2
+ magic-string: 0.30.8
+ postcss: 8.4.35
+ source-map-js: 1.0.2
+
+ /@vue/compiler-ssr@3.4.21:
+ resolution: {integrity: sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==}
+ dependencies:
+ '@vue/compiler-dom': 3.4.21
+ '@vue/shared': 3.4.21
+
+ /@vue/devtools-api@6.6.1:
+ resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
+
+ /@vue/language-core@1.8.27(typescript@5.3.3):
+ resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@volar/language-core': 1.11.1
+ '@volar/source-map': 1.11.1
+ '@vue/compiler-dom': 3.4.21
+ '@vue/shared': 3.4.21
+ computeds: 0.0.1
+ minimatch: 9.0.3
+ muggle-string: 0.3.1
+ path-browserify: 1.0.1
+ typescript: 5.3.3
+ vue-template-compiler: 2.7.16
+ dev: true
+
+ /@vue/reactivity@3.4.21:
+ resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==}
+ dependencies:
+ '@vue/shared': 3.4.21
+
+ /@vue/runtime-core@3.4.21:
+ resolution: {integrity: sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==}
+ dependencies:
+ '@vue/reactivity': 3.4.21
+ '@vue/shared': 3.4.21
+
+ /@vue/runtime-dom@3.4.21:
+ resolution: {integrity: sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==}
+ dependencies:
+ '@vue/runtime-core': 3.4.21
+ '@vue/shared': 3.4.21
+ csstype: 3.1.3
+
+ /@vue/server-renderer@3.4.21(vue@3.4.21):
+ resolution: {integrity: sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==}
+ peerDependencies:
+ vue: 3.4.21
+ dependencies:
+ '@vue/compiler-ssr': 3.4.21
+ '@vue/shared': 3.4.21
+ vue: 3.4.21(typescript@5.3.3)
+
+ /@vue/shared@3.4.21:
+ resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==}
+
+ /@vue/tsconfig@0.5.1:
+ resolution: {integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==}
+ dev: true
+
+ /@vueuse/components@10.9.0(vue@3.4.21):
+ resolution: {integrity: sha512-BHQpA0yIi3y7zKa1gYD0FUzLLkcRTqVhP8smnvsCK6GFpd94Nziq1XVPD7YpFeho0k5BzbBiNZF7V/DpkJ967A==}
+ dependencies:
+ '@vueuse/core': 10.9.0(vue@3.4.21)
+ '@vueuse/shared': 10.9.0(vue@3.4.21)
+ vue-demi: 0.14.7(vue@3.4.21)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: false
+
+ /@vueuse/core@10.9.0(vue@3.4.21):
+ resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==}
+ dependencies:
+ '@types/web-bluetooth': 0.0.20
+ '@vueuse/metadata': 10.9.0
+ '@vueuse/shared': 10.9.0(vue@3.4.21)
+ vue-demi: 0.14.7(vue@3.4.21)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: false
+
+ /@vueuse/integrations@10.9.0(axios@1.6.7)(nprogress@0.2.0)(sortablejs@1.15.2)(vue@3.4.21):
+ resolution: {integrity: sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==}
+ peerDependencies:
+ async-validator: '*'
+ axios: '*'
+ change-case: '*'
+ drauu: '*'
+ focus-trap: '*'
+ fuse.js: '*'
+ idb-keyval: '*'
+ jwt-decode: '*'
+ nprogress: '*'
+ qrcode: '*'
+ sortablejs: '*'
+ universal-cookie: '*'
+ peerDependenciesMeta:
+ async-validator:
+ optional: true
+ axios:
+ optional: true
+ change-case:
+ optional: true
+ drauu:
+ optional: true
+ focus-trap:
+ optional: true
+ fuse.js:
+ optional: true
+ idb-keyval:
+ optional: true
+ jwt-decode:
+ optional: true
+ nprogress:
+ optional: true
+ qrcode:
+ optional: true
+ sortablejs:
+ optional: true
+ universal-cookie:
+ optional: true
+ dependencies:
+ '@vueuse/core': 10.9.0(vue@3.4.21)
+ '@vueuse/shared': 10.9.0(vue@3.4.21)
+ axios: 1.6.7
+ nprogress: 0.2.0
+ sortablejs: 1.15.2
+ vue-demi: 0.14.7(vue@3.4.21)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: false
+
+ /@vueuse/math@10.9.0(vue@3.4.21):
+ resolution: {integrity: sha512-qb60AzFKzg8Gw85c4YiheEMC2AMkk+eO/nB9MmuQFU/HAHvfVckesiPlwaQqUlZQ4MJt0z8qP18/H7ozpj0sKQ==}
+ dependencies:
+ '@vueuse/shared': 10.9.0(vue@3.4.21)
+ vue-demi: 0.14.7(vue@3.4.21)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: false
+
+ /@vueuse/metadata@10.9.0:
+ resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==}
+ dev: false
+
+ /@vueuse/router@10.9.0(vue-router@4.3.0)(vue@3.4.21):
+ resolution: {integrity: sha512-MOmrCMQlRuPS4PExE1hy8T0XbZUXaNbEuh7CAG5mC8kdvdgANQMkdvJ7vIEOP27n5mXK/4YjvXJOZSsur4E0QQ==}
+ peerDependencies:
+ vue-router: '>=4.0.0-rc.1'
+ dependencies:
+ '@vueuse/shared': 10.9.0(vue@3.4.21)
+ vue-demi: 0.14.7(vue@3.4.21)
+ vue-router: 4.3.0(vue@3.4.21)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: false
+
+ /@vueuse/shared@10.9.0(vue@3.4.21):
+ resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==}
+ dependencies:
+ vue-demi: 0.14.7(vue@3.4.21)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: false
+
+ /@wry/caches@1.0.1:
+ resolution: {integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==}
+ engines: {node: '>=8'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@wry/context@0.7.4:
+ resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@wry/equality@0.5.7:
+ resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==}
+ engines: {node: '>=8'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@wry/trie@0.4.3:
+ resolution: {integrity: sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==}
+ engines: {node: '>=8'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /@wry/trie@0.5.0:
+ resolution: {integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==}
+ engines: {node: '>=8'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /abab@2.0.6:
+ resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
+ deprecated: Use your platform's native atob() and btoa() methods instead
+ dev: true
+
+ /acorn-globals@7.0.1:
+ resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==}
+ dependencies:
+ acorn: 8.11.3
+ acorn-walk: 8.3.2
+ dev: true
+
+ /acorn-walk@8.3.2:
+ resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /acorn@8.11.3:
+ resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /ansi-escapes@4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.21.3
+ dev: true
+
+ /ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /ansi-regex@6.0.1:
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+ dev: true
+
+ /ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: true
+
+ /ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+ dev: true
+
+ /anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: true
+
+ /arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+ dev: true
+
+ /argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: true
+
+ /argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ /array-buffer-byte-length@1.0.1:
+ resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ is-array-buffer: 3.0.4
+ dev: true
+
+ /async-validator@4.2.5:
+ resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
+ dev: false
+
+ /asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ /autoprefixer@10.4.18(postcss@8.4.35):
+ resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ browserslist: 4.23.0
+ caniuse-lite: 1.0.30001594
+ fraction.js: 4.3.7
+ normalize-range: 0.1.2
+ picocolors: 1.0.0
+ postcss: 8.4.35
+ postcss-value-parser: 4.2.0
+ dev: true
+
+ /available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ possible-typed-array-names: 1.0.0
+ dev: true
+
+ /axios-retry@4.0.0(axios@1.6.7):
+ resolution: {integrity: sha512-F6P4HVGITD/v4z9Lw2mIA24IabTajvpDZmKa6zq/gGwn57wN5j1P3uWrAV0+diqnW6kTM2fTqmWNfgYWGmMuiA==}
+ peerDependencies:
+ axios: 0.x || 1.x
+ dependencies:
+ axios: 1.6.7
+ is-retry-allowed: 2.2.0
+ dev: false
+
+ /axios@1.6.7:
+ resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==}
+ dependencies:
+ follow-redirects: 1.15.5
+ form-data: 4.0.0
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
+ /balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ /big-integer@1.6.52:
+ resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
+ engines: {node: '>=0.6'}
+ dev: false
+
+ /binary-extensions@2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /birpc@0.1.1:
+ resolution: {integrity: sha512-B64AGL4ug2IS2jvV/zjTYDD1L+2gOJTT7Rv+VaK7KVQtQOo/xZbCDsh7g727ipckmU+QJYRqo5RcifVr0Kgcmg==}
+ dev: true
+
+ /brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ /brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ dependencies:
+ balanced-match: 1.0.2
+ dev: true
+
+ /braces@3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: true
+
+ /broadcast-channel@3.7.0:
+ resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==}
+ dependencies:
+ '@babel/runtime': 7.24.0
+ detect-node: 2.1.0
+ js-sha3: 0.8.0
+ microseconds: 0.2.0
+ nano-time: 1.0.0
+ oblivious-set: 1.0.0
+ rimraf: 3.0.2
+ unload: 2.2.0
+ dev: false
+
+ /browserslist@4.23.0:
+ resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001594
+ electron-to-chromium: 1.4.692
+ node-releases: 2.0.14
+ update-browserslist-db: 1.0.13(browserslist@4.23.0)
+ dev: true
+
+ /cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /call-bind@1.0.7:
+ resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ set-function-length: 1.2.1
+ dev: true
+
+ /camel-case@4.1.2:
+ resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
+ dependencies:
+ pascal-case: 3.1.2
+ tslib: 2.6.2
+ dev: true
+
+ /camelcase-css@2.0.1:
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /caniuse-lite@1.0.30001594:
+ resolution: {integrity: sha512-VblSX6nYqyJVs8DKFMldE2IVCJjZ225LW00ydtUWwh5hk9IfkTOffO6r8gJNsH0qqqeAF8KrbMYA2VEwTlGW5g==}
+ dev: true
+
+ /capital-case@1.0.4:
+ resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.6.2
+ upper-case-first: 2.0.2
+ dev: true
+
+ /chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+ dev: true
+
+ /chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /change-case@4.1.2:
+ resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==}
+ dependencies:
+ 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.6.2
+ dev: true
+
+ /chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ dependencies:
+ color-name: 1.1.3
+ dev: true
+
+ /color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: true
+
+ /color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+ dev: true
+
+ /color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: true
+
+ /combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+
+ /commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /commander@8.3.0:
+ resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+ engines: {node: '>= 12'}
+ dev: true
+
+ /computeds@0.0.1:
+ resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
+ dev: true
+
+ /concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ /connect@3.7.0:
+ resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==}
+ engines: {node: '>= 0.10.0'}
+ dependencies:
+ debug: 2.6.9
+ finalhandler: 1.1.2
+ parseurl: 1.3.3
+ utils-merge: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /constant-case@3.0.4:
+ resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.6.2
+ upper-case: 2.0.2
+ dev: true
+
+ /crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
+
+ /cross-spawn@7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+ dev: true
+
+ /css-render@0.15.12:
+ resolution: {integrity: sha512-eWzS66patiGkTTik+ipO9qNGZ+uNuGyTmnz6/+EJIiFg8+3yZRpnMwgFo8YdXhQRsiePzehnusrxVvugNjXzbw==}
+ dependencies:
+ '@emotion/hash': 0.8.0
+ csstype: 3.0.11
+ dev: false
+
+ /cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /cssom@0.3.8:
+ resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==}
+ dev: true
+
+ /cssom@0.5.0:
+ resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==}
+ dev: true
+
+ /cssstyle@2.3.0:
+ resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==}
+ engines: {node: '>=8'}
+ dependencies:
+ cssom: 0.3.8
+ dev: true
+
+ /csstype@3.0.11:
+ resolution: {integrity: sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==}
+ dev: false
+
+ /csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ /data-urls@3.0.2:
+ resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ abab: 2.0.6
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 11.0.0
+ dev: true
+
+ /date-fns-tz@2.0.0(date-fns@2.30.0):
+ resolution: {integrity: sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==}
+ peerDependencies:
+ date-fns: '>=2.0.0'
+ dependencies:
+ date-fns: 2.30.0
+ dev: false
+
+ /date-fns@2.30.0:
+ resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
+ engines: {node: '>=0.11'}
+ dependencies:
+ '@babel/runtime': 7.24.0
+ dev: false
+
+ /de-indent@1.0.2:
+ resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
+ dev: true
+
+ /debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.0.0
+ dev: true
+
+ /debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ dev: true
+
+ /decimal.js@10.4.3:
+ resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
+ dev: true
+
+ /deep-equal@2.2.3:
+ resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.1
+ call-bind: 1.0.7
+ es-get-iterator: 1.1.3
+ get-intrinsic: 1.2.4
+ is-arguments: 1.1.1
+ is-array-buffer: 3.0.4
+ is-date-object: 1.0.5
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.3
+ isarray: 2.0.5
+ object-is: 1.1.6
+ object-keys: 1.1.1
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.2
+ side-channel: 1.0.6
+ which-boxed-primitive: 1.0.2
+ which-collection: 1.0.1
+ which-typed-array: 1.1.14
+ dev: true
+
+ /define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.0
+ es-errors: 1.3.0
+ gopd: 1.0.1
+ dev: true
+
+ /define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+ dev: true
+
+ /defu@6.1.4:
+ resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
+ dev: true
+
+ /delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ /detect-node@2.1.0:
+ resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==}
+ dev: false
+
+ /diacritics@1.3.0:
+ resolution: {integrity: sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==}
+ dev: true
+
+ /didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ dev: true
+
+ /dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.0.0
+ dev: true
+
+ /dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+ dev: true
+
+ /domexception@4.0.0:
+ resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
+ engines: {node: '>=12'}
+ deprecated: Use your platform's native DOMException instead
+ dependencies:
+ webidl-conversions: 7.0.0
+ dev: true
+
+ /dompurify@3.0.9:
+ resolution: {integrity: sha512-uyb4NDIvQ3hRn6NiC+SIFaP4mJ/MdXlvtunaqK9Bn6dD3RuB/1S/gasEjDHD8eiaqdSael2vBv+hOs7Y+jhYOQ==}
+ dev: false
+
+ /dot-case@3.0.4:
+ resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.6.2
+ dev: true
+
+ /eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ dev: true
+
+ /ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+ dev: true
+
+ /electron-to-chromium@1.4.692:
+ resolution: {integrity: sha512-d5rZRka9n2Y3MkWRN74IoAsxR0HK3yaAt7T50e3iT9VZmCCQDT3geXUO5ZRMhDToa1pkCeQXuNo+0g+NfDOVPA==}
+ dev: true
+
+ /emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: true
+
+ /emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ dev: true
+
+ /encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /entities@2.1.0:
+ resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
+ dev: true
+
+ /entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ /es-define-property@1.0.0:
+ resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.4
+ dev: true
+
+ /es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /es-get-iterator@1.1.3:
+ resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ has-symbols: 1.0.3
+ is-arguments: 1.1.1
+ is-map: 2.0.2
+ is-set: 2.0.2
+ is-string: 1.0.7
+ isarray: 2.0.5
+ stop-iteration-iterator: 1.0.0
+ dev: true
+
+ /esbuild@0.19.12:
+ resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.19.12
+ '@esbuild/android-arm': 0.19.12
+ '@esbuild/android-arm64': 0.19.12
+ '@esbuild/android-x64': 0.19.12
+ '@esbuild/darwin-arm64': 0.19.12
+ '@esbuild/darwin-x64': 0.19.12
+ '@esbuild/freebsd-arm64': 0.19.12
+ '@esbuild/freebsd-x64': 0.19.12
+ '@esbuild/linux-arm': 0.19.12
+ '@esbuild/linux-arm64': 0.19.12
+ '@esbuild/linux-ia32': 0.19.12
+ '@esbuild/linux-loong64': 0.19.12
+ '@esbuild/linux-mips64el': 0.19.12
+ '@esbuild/linux-ppc64': 0.19.12
+ '@esbuild/linux-riscv64': 0.19.12
+ '@esbuild/linux-s390x': 0.19.12
+ '@esbuild/linux-x64': 0.19.12
+ '@esbuild/netbsd-x64': 0.19.12
+ '@esbuild/openbsd-x64': 0.19.12
+ '@esbuild/sunos-x64': 0.19.12
+ '@esbuild/win32-arm64': 0.19.12
+ '@esbuild/win32-ia32': 0.19.12
+ '@esbuild/win32-x64': 0.19.12
+ dev: true
+
+ /escalade@3.1.2:
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+ dev: true
+
+ /escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /escodegen@2.1.0:
+ resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
+ engines: {node: '>=6.0'}
+ hasBin: true
+ dependencies:
+ esprima: 4.0.1
+ estraverse: 5.3.0
+ esutils: 2.0.3
+ optionalDependencies:
+ source-map: 0.6.1
+ dev: true
+
+ /esprima-extract-comments@1.1.0:
+ resolution: {integrity: sha512-sBQUnvJwpeE9QnPrxh7dpI/dp67erYG4WXEAreAMoelPRpMR7NWb4YtwRPn9b+H1uLQKl/qS8WYmyaljTpjIsw==}
+ engines: {node: '>=4'}
+ dependencies:
+ esprima: 4.0.1
+ dev: true
+
+ /esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ /esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /evtd@0.2.4:
+ resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==}
+ dev: false
+
+ /execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+ dev: true
+
+ /execa@8.0.1:
+ resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+ engines: {node: '>=16.17'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 8.0.1
+ human-signals: 5.0.0
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.3.0
+ onetime: 6.0.0
+ signal-exit: 4.1.0
+ strip-final-newline: 3.0.0
+ dev: true
+
+ /extend-shallow@2.0.1:
+ resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extendable: 0.1.1
+ dev: true
+
+ /extract-comments@1.1.0:
+ resolution: {integrity: sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q==}
+ engines: {node: '>=6'}
+ dependencies:
+ esprima-extract-comments: 1.1.0
+ parse-code-context: 1.0.0
+ dev: true
+
+ /fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.5
+ dev: true
+
+ /fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+ dependencies:
+ reusify: 1.0.4
+ dev: true
+
+ /fill-range@7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
+ /finalhandler@1.1.2:
+ resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ on-finished: 2.3.0
+ parseurl: 1.3.3
+ statuses: 1.5.0
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+ dev: true
+
+ /flexsearch@0.7.21:
+ resolution: {integrity: sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==}
+ dev: true
+
+ /follow-redirects@1.15.5:
+ resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+ dev: false
+
+ /for-each@0.3.3:
+ resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+ dependencies:
+ is-callable: 1.2.7
+ dev: true
+
+ /foreground-child@3.1.1:
+ resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
+ engines: {node: '>=14'}
+ dependencies:
+ cross-spawn: 7.0.3
+ signal-exit: 4.1.0
+ dev: true
+
+ /form-data@4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+
+ /fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+ dev: true
+
+ /fs-extra@10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+ dev: true
+
+ /fs-extra@11.2.0:
+ resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
+ engines: {node: '>=14.14'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+ dev: true
+
+ /fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ dev: false
+
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ dev: true
+
+ /functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ dev: true
+
+ /get-intrinsic@1.2.4:
+ resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ has-proto: 1.0.3
+ has-symbols: 1.0.3
+ hasown: 2.0.1
+ dev: true
+
+ /get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /get-stream@8.0.1:
+ resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+ engines: {node: '>=16'}
+ dev: true
+
+ /glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob@10.3.10:
+ resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ foreground-child: 3.1.1
+ jackspeak: 2.3.6
+ minimatch: 9.0.3
+ minipass: 7.0.4
+ path-scurry: 1.10.1
+ dev: true
+
+ /glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: false
+
+ /globby@13.2.2:
+ resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ dir-glob: 3.0.1
+ fast-glob: 3.3.2
+ ignore: 5.3.1
+ merge2: 1.4.1
+ slash: 4.0.0
+ dev: true
+
+ /gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ dependencies:
+ get-intrinsic: 1.2.4
+ dev: true
+
+ /graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+ dev: true
+
+ /graphql-tag@2.12.6(graphql@16.8.1):
+ resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0
+ dependencies:
+ graphql: 16.8.1
+ tslib: 2.6.2
+ dev: false
+
+ /graphql@16.8.1:
+ resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==}
+ engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
+ dev: false
+
+ /gray-matter@4.0.3:
+ resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
+ engines: {node: '>=6.0'}
+ dependencies:
+ js-yaml: 3.14.1
+ kind-of: 6.0.3
+ section-matter: 1.0.0
+ strip-bom-string: 1.0.0
+ dev: true
+
+ /has-bigints@1.0.2:
+ resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
+ dev: true
+
+ /has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+ dependencies:
+ es-define-property: 1.0.0
+ dev: true
+
+ /has-proto@1.0.3:
+ resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+ dev: true
+
+ /hasown@2.0.1:
+ resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ function-bind: 1.1.2
+ dev: true
+
+ /he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+ dev: true
+
+ /header-case@2.0.4:
+ resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
+ dependencies:
+ capital-case: 1.0.4
+ tslib: 2.6.2
+ dev: true
+
+ /highlight.js@11.9.0:
+ resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==}
+ engines: {node: '>=12.0.0'}
+ dev: false
+
+ /histoire@0.17.9(@types/node@20.11.24)(vite@5.1.5):
+ resolution: {integrity: sha512-z5Jb9QwbOw0TKvpkU0v7+CxJG6hIljIKMhWXzOfteteRZGDFElpTEwbr5/8EdPI6VTdF/k76fqZ07nmS9YdUvA==}
+ hasBin: true
+ peerDependencies:
+ vite: ^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
+ dependencies:
+ '@akryum/tinypool': 0.3.1
+ '@histoire/app': 0.17.10(vite@5.1.5)
+ '@histoire/controls': 0.17.9(vite@5.1.5)
+ '@histoire/shared': 0.17.10(vite@5.1.5)
+ '@histoire/vendors': 0.17.8
+ '@types/flexsearch': 0.7.6
+ '@types/markdown-it': 12.2.3
+ birpc: 0.1.1
+ change-case: 4.1.2
+ chokidar: 3.6.0
+ connect: 3.7.0
+ defu: 6.1.4
+ diacritics: 1.3.0
+ flexsearch: 0.7.21
+ fs-extra: 10.1.0
+ globby: 13.2.2
+ gray-matter: 4.0.3
+ jiti: 1.21.0
+ jsdom: 20.0.3
+ markdown-it: 12.3.2
+ markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2)
+ markdown-it-attrs: 4.1.6(markdown-it@12.3.2)
+ markdown-it-emoji: 2.0.2
+ micromatch: 4.0.5
+ mrmime: 1.0.1
+ pathe: 1.1.2
+ picocolors: 1.0.0
+ sade: 1.8.1
+ shiki-es: 0.2.0
+ sirv: 2.0.4
+ vite: 5.1.5(@types/node@20.11.24)
+ vite-node: 0.34.7(@types/node@20.11.24)
+ transitivePeerDependencies:
+ - '@types/node'
+ - bufferutil
+ - canvas
+ - less
+ - lightningcss
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - utf-8-validate
+ dev: true
+
+ /hoist-non-react-statics@3.3.2:
+ resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
+ dependencies:
+ react-is: 16.13.1
+ dev: false
+
+ /html-encoding-sniffer@3.0.0:
+ resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
+ engines: {node: '>=12'}
+ dependencies:
+ whatwg-encoding: 2.0.0
+ dev: true
+
+ /http-proxy-agent@5.0.0:
+ resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
+ engines: {node: '>= 6'}
+ dependencies:
+ '@tootallnate/once': 2.0.0
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+ dev: true
+
+ /human-signals@5.0.0:
+ resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+ engines: {node: '>=16.17.0'}
+ dev: true
+
+ /iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
+ /ignore@5.3.1:
+ resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+ dev: false
+
+ /inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: false
+
+ /internal-slot@1.0.7:
+ resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.1
+ side-channel: 1.0.6
+ dev: true
+
+ /is-arguments@1.1.1:
+ resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-array-buffer@3.0.4:
+ resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ dev: true
+
+ /is-bigint@1.0.4:
+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+ dependencies:
+ has-bigints: 1.0.2
+ dev: true
+
+ /is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
+ /is-boolean-object@1.1.2:
+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-core-module@2.13.1:
+ resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+ dependencies:
+ hasown: 2.0.1
+ dev: true
+
+ /is-date-object@1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-extendable@0.1.1:
+ resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-map@2.0.2:
+ resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
+ dev: true
+
+ /is-number-object@1.0.7:
+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /is-potential-custom-element-name@1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+ dev: true
+
+ /is-regex@1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-retry-allowed@2.2.0:
+ resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /is-set@2.0.2:
+ resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
+ dev: true
+
+ /is-shared-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ dev: true
+
+ /is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: true
+
+ /is-string@1.0.7:
+ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-symbol@1.0.4:
+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+ dev: true
+
+ /is-weakmap@2.0.1:
+ resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
+ dev: true
+
+ /is-weakset@2.0.2:
+ resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
+ dependencies:
+ call-bind: 1.0.7
+ get-intrinsic: 1.2.4
+ dev: true
+
+ /isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+ dev: true
+
+ /isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ dev: true
+
+ /jackspeak@2.3.6:
+ resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+ dev: true
+
+ /jiti@1.21.0:
+ resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
+ hasBin: true
+ dev: true
+
+ /js-sha3@0.8.0:
+ resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==}
+ dev: false
+
+ /js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ /js-yaml@3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: true
+
+ /jsdom@20.0.3:
+ resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+ dependencies:
+ abab: 2.0.6
+ acorn: 8.11.3
+ acorn-globals: 7.0.1
+ cssom: 0.5.0
+ cssstyle: 2.3.0
+ data-urls: 3.0.2
+ decimal.js: 10.4.3
+ domexception: 4.0.0
+ escodegen: 2.1.0
+ form-data: 4.0.0
+ html-encoding-sniffer: 3.0.0
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.7
+ parse5: 7.1.2
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 4.1.3
+ w3c-xmlserializer: 4.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 2.0.0
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 11.0.0
+ ws: 8.16.0
+ xml-name-validator: 4.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
+ /jsonc-parser@3.2.1:
+ resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==}
+ dev: true
+
+ /jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+ dev: true
+
+ /kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /kolorist@1.8.0:
+ resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
+ dev: true
+
+ /launch-editor@2.6.1:
+ resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==}
+ dependencies:
+ picocolors: 1.0.0
+ shell-quote: 1.8.1
+ dev: true
+
+ /lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /lilconfig@3.1.1:
+ resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==}
+ engines: {node: '>=14'}
+ dev: true
+
+ /lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ dev: true
+
+ /linkify-it@3.0.3:
+ resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
+ dependencies:
+ uc.micro: 1.0.6
+ dev: true
+
+ /linkify-it@5.0.0:
+ resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
+ dependencies:
+ uc.micro: 2.1.0
+ dev: false
+
+ /local-pkg@0.5.0:
+ resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
+ engines: {node: '>=14'}
+ dependencies:
+ mlly: 1.6.1
+ pkg-types: 1.0.3
+ dev: true
+
+ /locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-locate: 5.0.0
+ dev: true
+
+ /lodash-es@4.17.21:
+ resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
+ dev: false
+
+ /lodash.castarray@4.4.0:
+ resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==}
+ dev: true
+
+ /lodash.isplainobject@4.0.6:
+ resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
+ dev: true
+
+ /lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ dev: true
+
+ /lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ dev: false
+
+ /loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+ dependencies:
+ js-tokens: 4.0.0
+ dev: false
+
+ /lower-case@2.0.2:
+ resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
+ dependencies:
+ tslib: 2.6.2
+ dev: true
+
+ /lru-cache@10.2.0:
+ resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
+ engines: {node: 14 || >=16.14}
+ dev: true
+
+ /lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+ dev: true
+
+ /magic-string@0.30.8:
+ resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+
+ /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2):
+ resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==}
+ peerDependencies:
+ '@types/markdown-it': '*'
+ markdown-it: '*'
+ dependencies:
+ '@types/markdown-it': 12.2.3
+ markdown-it: 12.3.2
+ dev: true
+
+ /markdown-it-attrs@4.1.6(markdown-it@12.3.2):
+ resolution: {integrity: sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ markdown-it: '>= 9.0.0'
+ dependencies:
+ markdown-it: 12.3.2
+ dev: true
+
+ /markdown-it-emoji@2.0.2:
+ resolution: {integrity: sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==}
+ dev: true
+
+ /markdown-it@12.3.2:
+ resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ entities: 2.1.0
+ linkify-it: 3.0.3
+ mdurl: 1.0.1
+ uc.micro: 1.0.6
+ dev: true
+
+ /markdown-it@14.0.0:
+ resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ entities: 4.5.0
+ linkify-it: 5.0.0
+ mdurl: 2.0.0
+ punycode.js: 2.3.1
+ uc.micro: 2.1.0
+ dev: false
+
+ /match-sorter@6.3.4:
+ resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==}
+ dependencies:
+ '@babel/runtime': 7.24.0
+ remove-accents: 0.5.0
+ dev: false
+
+ /mdurl@1.0.1:
+ resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
+ dev: true
+
+ /mdurl@2.0.0:
+ resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+ dev: false
+
+ /merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ dev: true
+
+ /merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /micromatch@4.0.5:
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.2
+ picomatch: 2.3.1
+ dev: true
+
+ /microseconds@0.2.0:
+ resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==}
+ dev: false
+
+ /mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ /mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: 1.52.0
+
+ /mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /mini-svg-data-uri@1.4.4:
+ resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
+ hasBin: true
+ dev: true
+
+ /minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
+
+ /minimatch@9.0.3:
+ resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
+ /minipass@7.0.4:
+ resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dev: true
+
+ /mlly@1.6.1:
+ resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==}
+ dependencies:
+ acorn: 8.11.3
+ pathe: 1.1.2
+ pkg-types: 1.0.3
+ ufo: 1.4.0
+ dev: true
+
+ /mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /mrmime@1.0.1:
+ resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /mrmime@2.0.0:
+ resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+ dev: true
+
+ /ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ dev: true
+
+ /muggle-string@0.3.1:
+ resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
+ dev: true
+
+ /mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+ dev: true
+
+ /naive-ui@2.38.1(vue@3.4.21):
+ resolution: {integrity: sha512-AnU1FQ7K/CbhguAX++V4kCFjk7h7RvWt4nvZPRjORMpq+fUIlzD+EcQ5Cv1VqDloNF8+eMv4Akc2Ogacc9S+5A==}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ '@css-render/plugin-bem': 0.15.12(css-render@0.15.12)
+ '@css-render/vue3-ssr': 0.15.12(vue@3.4.21)
+ '@types/katex': 0.16.7
+ '@types/lodash': 4.14.202
+ '@types/lodash-es': 4.17.12
+ async-validator: 4.2.5
+ css-render: 0.15.12
+ csstype: 3.1.3
+ date-fns: 2.30.0
+ date-fns-tz: 2.0.0(date-fns@2.30.0)
+ evtd: 0.2.4
+ highlight.js: 11.9.0
+ lodash: 4.17.21
+ lodash-es: 4.17.21
+ seemly: 0.3.8
+ treemate: 0.3.11
+ vdirs: 0.1.8(vue@3.4.21)
+ vooks: 0.2.12(vue@3.4.21)
+ vue: 3.4.21(typescript@5.3.3)
+ vueuc: 0.4.58(vue@3.4.21)
+ dev: false
+
+ /nano-time@1.0.0:
+ resolution: {integrity: sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==}
+ dependencies:
+ big-integer: 1.6.52
+ dev: false
+
+ /nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ /no-case@3.0.4:
+ resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+ dependencies:
+ lower-case: 2.0.2
+ tslib: 2.6.2
+ dev: true
+
+ /node-releases@2.0.14:
+ resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
+ dev: true
+
+ /normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-key: 3.1.1
+ dev: true
+
+ /npm-run-path@5.3.0:
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ path-key: 4.0.0
+ dev: true
+
+ /nprogress@0.2.0:
+ resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
+ dev: false
+
+ /nwsapi@2.2.7:
+ resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==}
+ dev: true
+
+ /object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ /object-hash@3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /object-inspect@1.13.1:
+ resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+ dev: true
+
+ /object-is@1.1.6:
+ resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ dev: true
+
+ /object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /object.assign@4.1.5:
+ resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ has-symbols: 1.0.3
+ object-keys: 1.1.1
+ dev: true
+
+ /oblivious-set@1.0.0:
+ resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==}
+ dev: false
+
+ /on-finished@2.3.0:
+ resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ ee-first: 1.1.1
+ dev: true
+
+ /once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ dependencies:
+ wrappy: 1.0.2
+ dev: false
+
+ /onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+ dev: true
+
+ /onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ mimic-fn: 4.0.0
+ dev: true
+
+ /optimism@0.18.0:
+ resolution: {integrity: sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==}
+ dependencies:
+ '@wry/caches': 1.0.1
+ '@wry/context': 0.7.4
+ '@wry/trie': 0.4.3
+ tslib: 2.6.2
+ dev: false
+
+ /orderedmap@2.1.1:
+ resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==}
+ dev: false
+
+ /p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ yocto-queue: 0.1.0
+ dev: true
+
+ /p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-limit: 3.1.0
+ dev: true
+
+ /param-case@3.0.4:
+ resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.6.2
+ dev: true
+
+ /parse-code-context@1.0.0:
+ resolution: {integrity: sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /parse5@7.1.2:
+ resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
+ dependencies:
+ entities: 4.5.0
+ dev: true
+
+ /parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /pascal-case@3.1.2:
+ resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.6.2
+ dev: true
+
+ /path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+ dev: true
+
+ /path-case@3.0.4:
+ resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.6.2
+ dev: true
+
+ /path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
+ /path-scurry@1.10.1:
+ resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ lru-cache: 10.2.0
+ minipass: 7.0.4
+ dev: true
+
+ /path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+ dev: true
+
+ /picocolors@1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+
+ /picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: true
+
+ /pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /pinia@2.1.7(typescript@5.3.3)(vue@3.4.21):
+ resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==}
+ peerDependencies:
+ '@vue/composition-api': ^1.4.0
+ typescript: '>=4.4.4'
+ vue: ^2.6.14 || ^3.3.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ '@vue/devtools-api': 6.6.1
+ typescript: 5.3.3
+ vue: 3.4.21(typescript@5.3.3)
+ vue-demi: 0.14.7(vue@3.4.21)
+ dev: false
+
+ /pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /pkg-types@1.0.3:
+ resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
+ dependencies:
+ jsonc-parser: 3.2.1
+ mlly: 1.6.1
+ pathe: 1.1.2
+ dev: true
+
+ /possible-typed-array-names@1.0.0:
+ resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /postcss-import@15.1.0(postcss@8.4.35):
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ postcss: 8.4.35
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.8
+ dev: true
+
+ /postcss-js@4.0.1(postcss@8.4.35):
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.35
+ dev: true
+
+ /postcss-load-config@4.0.2(postcss@8.4.35):
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ lilconfig: 3.1.1
+ postcss: 8.4.35
+ yaml: 2.4.0
+ dev: true
+
+ /postcss-nested@6.0.1(postcss@8.4.35):
+ resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+ dependencies:
+ postcss: 8.4.35
+ postcss-selector-parser: 6.0.15
+ dev: true
+
+ /postcss-selector-parser@6.0.10:
+ resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
+ engines: {node: '>=4'}
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+ dev: true
+
+ /postcss-selector-parser@6.0.15:
+ resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==}
+ engines: {node: '>=4'}
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+ dev: true
+
+ /postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+ dev: true
+
+ /postcss@8.4.35:
+ resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+
+ /prop-types@15.8.1:
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react-is: 16.13.1
+ dev: false
+
+ /prosemirror-changeset@2.2.1:
+ resolution: {integrity: sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==}
+ dependencies:
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-collab@1.3.1:
+ resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ dev: false
+
+ /prosemirror-commands@1.5.2:
+ resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-dropcursor@1.8.1:
+ resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
+ dev: false
+
+ /prosemirror-gapcursor@1.3.2:
+ resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==}
+ dependencies:
+ prosemirror-keymap: 1.2.2
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-view: 1.33.1
+ dev: false
+
+ /prosemirror-history@1.3.2:
+ resolution: {integrity: sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
+ rope-sequence: 1.3.4
+ dev: false
+
+ /prosemirror-inputrules@1.4.0:
+ resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-keymap@1.2.2:
+ resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==}
+ dependencies:
+ prosemirror-state: 1.4.3
+ w3c-keyname: 2.2.8
+ dev: false
+
+ /prosemirror-markdown@1.12.0:
+ resolution: {integrity: sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==}
+ dependencies:
+ markdown-it: 14.0.0
+ prosemirror-model: 1.19.4
+ dev: false
+
+ /prosemirror-menu@1.2.4:
+ resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==}
+ dependencies:
+ crelt: 1.0.6
+ prosemirror-commands: 1.5.2
+ prosemirror-history: 1.3.2
+ prosemirror-state: 1.4.3
+ dev: false
+
+ /prosemirror-model@1.19.4:
+ resolution: {integrity: sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==}
+ dependencies:
+ orderedmap: 2.1.1
+ dev: false
+
+ /prosemirror-schema-basic@1.2.2:
+ resolution: {integrity: sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ dev: false
+
+ /prosemirror-schema-list@1.3.0:
+ resolution: {integrity: sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /prosemirror-state@1.4.3:
+ resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
+ dev: false
+
+ /prosemirror-tables@1.3.7:
+ resolution: {integrity: sha512-oEwX1wrziuxMtwFvdDWSFHVUWrFJWt929kVVfHvtTi8yvw+5ppxjXZkMG/fuTdFo+3DXyIPSKfid+Be1npKXDA==}
+ dependencies:
+ prosemirror-keymap: 1.2.2
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ prosemirror-view: 1.33.1
+ dev: false
+
+ /prosemirror-trailing-node@2.0.8(prosemirror-model@1.19.4)(prosemirror-state@1.4.3)(prosemirror-view@1.33.1):
+ resolution: {integrity: sha512-ujRYhSuhQb1Jsarh1IHqb2KoSnRiD7wAMDGucP35DN7j5af6X7B18PfdPIrbwsPTqIAj0fyOvxbuPsWhNvylmA==}
+ peerDependencies:
+ prosemirror-model: ^1.19.0
+ prosemirror-state: ^1.4.2
+ prosemirror-view: ^1.31.2
+ dependencies:
+ '@remirror/core-constants': 2.0.2
+ escape-string-regexp: 4.0.0
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-view: 1.33.1
+ dev: false
+
+ /prosemirror-transform@1.8.0:
+ resolution: {integrity: sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ dev: false
+
+ /prosemirror-view@1.33.1:
+ resolution: {integrity: sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==}
+ dependencies:
+ prosemirror-model: 1.19.4
+ prosemirror-state: 1.4.3
+ prosemirror-transform: 1.8.0
+ dev: false
+
+ /proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+ dev: false
+
+ /psl@1.9.0:
+ resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
+ dev: true
+
+ /punycode.js@2.3.1:
+ resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+ dev: true
+
+ /queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: true
+
+ /react-is@16.13.1:
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
+ dev: false
+
+ /react-query@3.39.3(react@18.2.0):
+ resolution: {integrity: sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: '*'
+ react-native: '*'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+ react-native:
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.24.0
+ broadcast-channel: 3.7.0
+ match-sorter: 6.3.4
+ react: 18.2.0
+ dev: false
+
+ /react@18.2.0:
+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ loose-envify: 1.4.0
+ dev: false
+
+ /read-cache@1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+ dependencies:
+ pify: 2.3.0
+ dev: true
+
+ /readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: true
+
+ /regenerator-runtime@0.14.1:
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+ dev: false
+
+ /regexp.prototype.flags@1.5.2:
+ resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ set-function-name: 2.0.2
+ dev: true
+
+ /rehackt@0.0.5(react@18.2.0):
+ resolution: {integrity: sha512-BI1rV+miEkaHj8zd2n+gaMgzu/fKz7BGlb4zZ6HAiY9adDmJMkaDcmuXlJFv0eyKUob+oszs3/2gdnXUrzx2Tg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: '*'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ react:
+ optional: true
+ dependencies:
+ react: 18.2.0
+ dev: false
+
+ /remove-accents@0.5.0:
+ resolution: {integrity: sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==}
+ dev: false
+
+ /requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+ dev: true
+
+ /resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.13.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: true
+
+ /response-iterator@0.2.6:
+ resolution: {integrity: sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==}
+ engines: {node: '>=0.8'}
+ dev: false
+
+ /reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ /rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+ dev: false
+
+ /rollup@4.12.0:
+ resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+ dependencies:
+ '@types/estree': 1.0.5
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.12.0
+ '@rollup/rollup-android-arm64': 4.12.0
+ '@rollup/rollup-darwin-arm64': 4.12.0
+ '@rollup/rollup-darwin-x64': 4.12.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.12.0
+ '@rollup/rollup-linux-arm64-gnu': 4.12.0
+ '@rollup/rollup-linux-arm64-musl': 4.12.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.12.0
+ '@rollup/rollup-linux-x64-gnu': 4.12.0
+ '@rollup/rollup-linux-x64-musl': 4.12.0
+ '@rollup/rollup-win32-arm64-msvc': 4.12.0
+ '@rollup/rollup-win32-ia32-msvc': 4.12.0
+ '@rollup/rollup-win32-x64-msvc': 4.12.0
+ fsevents: 2.3.3
+ dev: true
+
+ /rope-sequence@1.3.4:
+ resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==}
+ dev: false
+
+ /run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: true
+
+ /sade@1.8.1:
+ resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
+ engines: {node: '>=6'}
+ dependencies:
+ mri: 1.2.0
+ dev: true
+
+ /safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ dev: true
+
+ /saxes@6.0.0:
+ resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
+ engines: {node: '>=v12.22.7'}
+ dependencies:
+ xmlchars: 2.2.0
+ dev: true
+
+ /section-matter@1.0.0:
+ resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
+ engines: {node: '>=4'}
+ dependencies:
+ extend-shallow: 2.0.1
+ kind-of: 6.0.3
+ dev: true
+
+ /seemly@0.3.8:
+ resolution: {integrity: sha512-MW8Qs6vbzo0pHmDpFSYPna+lwpZ6Zk1ancbajw/7E8TKtHdV+1DfZZD+kKJEhG/cAoB/i+LiT+5msZOqj0DwRA==}
+ dev: false
+
+ /semver@7.6.0:
+ resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /sentence-case@3.0.4:
+ resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==}
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.6.2
+ upper-case-first: 2.0.2
+ dev: true
+
+ /set-function-length@1.2.1:
+ resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.4
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.2
+ dev: true
+
+ /set-function-name@2.0.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+ dev: true
+
+ /shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
+ dev: true
+
+ /shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /shell-quote@1.8.1:
+ resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
+ dev: true
+
+ /shiki-es@0.2.0:
+ resolution: {integrity: sha512-RbRMD+IuJJseSZljDdne9ThrUYrwBwJR04FvN4VXpfsU3MNID5VJGHLAD5je/HGThCyEKNgH+nEkSFEWKD7C3Q==}
+ deprecated: Please migrate to https://github.com/antfu/shikiji
+ dev: true
+
+ /side-channel@1.0.6:
+ resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.7
+ es-errors: 1.3.0
+ get-intrinsic: 1.2.4
+ object-inspect: 1.13.1
+ dev: true
+
+ /signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ dev: true
+
+ /signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+ dev: true
+
+ /sirv@2.0.4:
+ resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==}
+ engines: {node: '>= 10'}
+ dependencies:
+ '@polka/url': 1.0.0-next.24
+ mrmime: 2.0.0
+ totalist: 3.0.1
+ dev: true
+
+ /slash@4.0.0:
+ resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /snake-case@3.0.4:
+ resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.6.2
+ dev: true
+
+ /sortablejs@1.15.2:
+ resolution: {integrity: sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==}
+ dev: false
+
+ /source-map-js@1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+
+ /source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ dev: true
+
+ /statuses@1.5.0:
+ resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /stop-iteration-iterator@1.0.0:
+ resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ internal-slot: 1.0.7
+ dev: true
+
+ /string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+ dev: true
+
+ /string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+ dev: true
+
+ /strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+ dev: true
+
+ /strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-regex: 6.0.1
+ dev: true
+
+ /strip-bom-string@1.0.0:
+ resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /style-mod@4.1.2:
+ resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
+
+ /sucrase@3.35.0:
+ resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ commander: 4.1.1
+ glob: 10.3.10
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.6
+ ts-interface-checker: 0.1.13
+ dev: true
+
+ /supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+ dev: true
+
+ /supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /symbol-observable@4.0.0:
+ resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==}
+ engines: {node: '>=0.10'}
+ dev: false
+
+ /symbol-tree@3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+ dev: true
+
+ /tailwindcss@3.4.1:
+ resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ arg: 5.0.2
+ chokidar: 3.6.0
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.3.2
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ jiti: 1.21.0
+ lilconfig: 2.1.0
+ micromatch: 4.0.5
+ normalize-path: 3.0.0
+ object-hash: 3.0.0
+ picocolors: 1.0.0
+ postcss: 8.4.35
+ postcss-import: 15.1.0(postcss@8.4.35)
+ postcss-js: 4.0.1(postcss@8.4.35)
+ postcss-load-config: 4.0.2(postcss@8.4.35)
+ postcss-nested: 6.0.1(postcss@8.4.35)
+ postcss-selector-parser: 6.0.15
+ resolve: 1.22.8
+ sucrase: 3.35.0
+ transitivePeerDependencies:
+ - ts-node
+ dev: true
+
+ /thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ thenify: 3.3.1
+ dev: true
+
+ /thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ dependencies:
+ any-promise: 1.3.0
+ dev: true
+
+ /throttle-debounce@5.0.0:
+ resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==}
+ engines: {node: '>=12.22'}
+ dev: false
+
+ /tiny-invariant@1.3.3:
+ resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
+ dev: true
+
+ /tippy.js@6.3.7:
+ resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==}
+ dependencies:
+ '@popperjs/core': 2.11.8
+ dev: false
+
+ /to-fast-properties@2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+
+ /to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
+ /totalist@3.0.1:
+ resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /tough-cookie@4.1.3:
+ resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==}
+ engines: {node: '>=6'}
+ dependencies:
+ psl: 1.9.0
+ punycode: 2.3.1
+ universalify: 0.2.0
+ url-parse: 1.5.10
+ dev: true
+
+ /tr46@3.0.0:
+ resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==}
+ engines: {node: '>=12'}
+ dependencies:
+ punycode: 2.3.1
+ dev: true
+
+ /treemate@0.3.11:
+ resolution: {integrity: sha512-M8RGFoKtZ8dF+iwJfAJTOH/SM4KluKOKRJpjCMhI8bG3qB74zrFoArKZ62ll0Fr3mqkMJiQOmWYkdYgDeITYQg==}
+ dev: false
+
+ /ts-essentials@9.4.1(typescript@5.3.3):
+ resolution: {integrity: sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==}
+ peerDependencies:
+ typescript: '>=4.1.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ typescript: 5.3.3
+ dev: false
+
+ /ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ dev: true
+
+ /ts-invariant@0.10.3:
+ resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ tslib: 2.6.2
+ dev: false
+
+ /tslib@2.6.2:
+ resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+
+ /type-fest@0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest@4.11.1:
+ resolution: {integrity: sha512-MFMf6VkEVZAETidGGSYW2B1MjXbGX+sWIywn2QPEaJ3j08V+MwVRHMXtf2noB8ENJaD0LIun9wh5Z6OPNf1QzQ==}
+ engines: {node: '>=16'}
+ dev: false
+
+ /typescript@5.3.3:
+ resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+
+ /uc.micro@1.0.6:
+ resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
+ dev: true
+
+ /uc.micro@2.1.0:
+ resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
+ dev: false
+
+ /ufo@1.4.0:
+ resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==}
+ dev: true
+
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ dev: true
+
+ /universalify@0.2.0:
+ resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
+ /universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+ dev: true
+
+ /unload@2.2.0:
+ resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==}
+ dependencies:
+ '@babel/runtime': 7.24.0
+ detect-node: 2.1.0
+ dev: false
+
+ /unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /unplugin-icons@0.18.5:
+ resolution: {integrity: sha512-KVNAohXbZ7tVcG1C3p6QaC7wU9Qrj7etv4XvsMMJAxr5LccQZ+Iuv5LOIv/7GtqXaGN1BuFCqRO1ErsHEgEXdQ==}
+ peerDependencies:
+ '@svgr/core': '>=7.0.0'
+ '@svgx/core': ^1.0.1
+ '@vue/compiler-sfc': ^3.0.2 || ^2.7.0
+ vue-template-compiler: ^2.6.12
+ vue-template-es2015-compiler: ^1.9.0
+ peerDependenciesMeta:
+ '@svgr/core':
+ optional: true
+ '@svgx/core':
+ optional: true
+ '@vue/compiler-sfc':
+ optional: true
+ vue-template-compiler:
+ optional: true
+ vue-template-es2015-compiler:
+ optional: true
+ dependencies:
+ '@antfu/install-pkg': 0.3.1
+ '@antfu/utils': 0.7.7
+ '@iconify/utils': 2.1.22
+ debug: 4.3.4
+ kolorist: 1.8.0
+ local-pkg: 0.5.0
+ unplugin: 1.8.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /unplugin@1.8.1:
+ resolution: {integrity: sha512-NDAvOEnZmeSRRmjfD0FoLzfve2/9lqceO5bR4J/2V72zphnFdq7UYo3fg6F1y1HfZEaSHa+7bZgbEN+z5x8ZDQ==}
+ dependencies:
+ acorn: 8.11.3
+ chokidar: 3.6.0
+ webpack-sources: 3.2.3
+ webpack-virtual-modules: 0.6.1
+ dev: true
+
+ /update-browserslist-db@1.0.13(browserslist@4.23.0):
+ resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.23.0
+ escalade: 3.1.2
+ picocolors: 1.0.0
+ dev: true
+
+ /upper-case-first@2.0.2:
+ resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
+ dependencies:
+ tslib: 2.6.2
+ dev: true
+
+ /upper-case@2.0.2:
+ resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==}
+ dependencies:
+ tslib: 2.6.2
+ dev: true
+
+ /url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+ dev: true
+
+ /util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ dev: true
+
+ /utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+ dev: true
+
+ /vdirs@0.1.8(vue@3.4.21):
+ resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
+ peerDependencies:
+ vue: ^3.0.11
+ dependencies:
+ evtd: 0.2.4
+ vue: 3.4.21(typescript@5.3.3)
+ dev: false
+
+ /vee-validate@4.12.5(vue@3.4.21):
+ resolution: {integrity: sha512-rvaDfLPSLwTk+mf016XWE4drB8yXzOsKXiKHTb9gNXNLTtQSZ0Ww26O0/xbIFQe+n3+u8Wv1Y8uO/aLDX4fxOg==}
+ peerDependencies:
+ vue: ^3.3.11
+ dependencies:
+ '@vue/devtools-api': 6.6.1
+ type-fest: 4.11.1
+ vue: 3.4.21(typescript@5.3.3)
+ dev: false
+
+ /vite-node@0.34.7(@types/node@20.11.24):
+ resolution: {integrity: sha512-0Yzb96QzHmqIKIs/x2q/sqG750V/EF6yDkS2p1WjJc1W2bgRSuQjf5vB9HY8h2nVb5j4pO5paS5Npcv3s69YUg==}
+ engines: {node: '>=v14.18.0'}
+ hasBin: true
+ dependencies:
+ cac: 6.7.14
+ debug: 4.3.4
+ mlly: 1.6.1
+ pathe: 1.1.2
+ picocolors: 1.0.0
+ vite: 5.1.5(@types/node@20.11.24)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ dev: true
+
+ /vite-plugin-checker@0.6.4(typescript@5.3.3)(vite@5.1.5)(vue-tsc@1.8.27):
+ resolution: {integrity: sha512-2zKHH5oxr+ye43nReRbC2fny1nyARwhxdm0uNYp/ERy4YvU9iZpNOsueoi/luXw5gnpqRSvjcEPxXbS153O2wA==}
+ engines: {node: '>=14.16'}
+ peerDependencies:
+ eslint: '>=7'
+ meow: ^9.0.0
+ optionator: ^0.9.1
+ stylelint: '>=13'
+ typescript: '*'
+ vite: '>=2.0.0'
+ vls: '*'
+ vti: '*'
+ vue-tsc: '>=1.3.9'
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ meow:
+ optional: true
+ optionator:
+ optional: true
+ stylelint:
+ optional: true
+ typescript:
+ optional: true
+ vls:
+ optional: true
+ vti:
+ optional: true
+ vue-tsc:
+ optional: true
+ dependencies:
+ '@babel/code-frame': 7.23.5
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ chokidar: 3.6.0
+ commander: 8.3.0
+ fast-glob: 3.3.2
+ fs-extra: 11.2.0
+ npm-run-path: 4.0.1
+ semver: 7.6.0
+ strip-ansi: 6.0.1
+ tiny-invariant: 1.3.3
+ typescript: 5.3.3
+ vite: 5.1.5(@types/node@20.11.24)
+ vscode-languageclient: 7.0.0
+ vscode-languageserver: 7.0.0
+ vscode-languageserver-textdocument: 1.0.11
+ vscode-uri: 3.0.8
+ vue-tsc: 1.8.27(typescript@5.3.3)
+ dev: true
+
+ /vite-plugin-pages@0.32.0(vite@5.1.5):
+ resolution: {integrity: sha512-OxS3n0zUo5wsfgNCAuw2FiG/KD1ipgQV+2Flst4RyeI2iPv+m0YueVq+nx41k5NOWJj/zhqEas6I0b7HXveXjA==}
+ peerDependencies:
+ '@vue/compiler-sfc': ^2.7.0 || ^3.0.0
+ vite: ^2.0.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0
+ peerDependenciesMeta:
+ '@vue/compiler-sfc':
+ optional: true
+ dependencies:
+ '@types/debug': 4.1.12
+ debug: 4.3.4
+ deep-equal: 2.2.3
+ extract-comments: 1.1.0
+ fast-glob: 3.3.2
+ json5: 2.2.3
+ local-pkg: 0.5.0
+ picocolors: 1.0.0
+ vite: 5.1.5(@types/node@20.11.24)
+ yaml: 2.4.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /vite-plugin-vue-layouts@0.11.0(vite@5.1.5)(vue-router@4.3.0)(vue@3.4.21):
+ resolution: {integrity: sha512-uh6NW7lt+aOXujK4eHfiNbeo55K9OTuB7fnv+5RVc4OBn/cZull6ThXdYH03JzKanUfgt6QZ37NbbtJ0og59qw==}
+ peerDependencies:
+ vite: ^4.0.0 || ^5.0.0
+ vue: ^3.2.4
+ vue-router: ^4.0.11
+ dependencies:
+ debug: 4.3.4
+ fast-glob: 3.3.2
+ vite: 5.1.5(@types/node@20.11.24)
+ vue: 3.4.21(typescript@5.3.3)
+ vue-router: 4.3.0(vue@3.4.21)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /vite@5.1.5(@types/node@20.11.24):
+ resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ '@types/node': 20.11.24
+ esbuild: 0.19.12
+ postcss: 8.4.35
+ rollup: 4.12.0
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /vooks@0.2.12(vue@3.4.21):
+ resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ evtd: 0.2.4
+ vue: 3.4.21(typescript@5.3.3)
+ dev: false
+
+ /vscode-jsonrpc@6.0.0:
+ resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==}
+ engines: {node: '>=8.0.0 || >=10.0.0'}
+ dev: true
+
+ /vscode-languageclient@7.0.0:
+ resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==}
+ engines: {vscode: ^1.52.0}
+ dependencies:
+ minimatch: 3.1.2
+ semver: 7.6.0
+ vscode-languageserver-protocol: 3.16.0
+ dev: true
+
+ /vscode-languageserver-protocol@3.16.0:
+ resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==}
+ dependencies:
+ vscode-jsonrpc: 6.0.0
+ vscode-languageserver-types: 3.16.0
+ dev: true
+
+ /vscode-languageserver-textdocument@1.0.11:
+ resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==}
+ dev: true
+
+ /vscode-languageserver-types@3.16.0:
+ resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==}
+ dev: true
+
+ /vscode-languageserver@7.0.0:
+ resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==}
+ hasBin: true
+ dependencies:
+ vscode-languageserver-protocol: 3.16.0
+ dev: true
+
+ /vscode-uri@3.0.8:
+ resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
+ dev: true
+
+ /vue-demi@0.10.1(vue@3.4.21):
+ resolution: {integrity: sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA==}
+ hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^2.6.0 || >=3.0.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ dependencies:
+ vue: 3.4.21(typescript@5.3.3)
+ dev: false
+
+ /vue-demi@0.14.7(vue@3.4.21):
+ resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ dependencies:
+ vue: 3.4.21(typescript@5.3.3)
+ dev: false
+
+ /vue-dompurify-html@5.0.1(vue@3.4.21):
+ resolution: {integrity: sha512-8yoMbo7PX4vt01k0dcCHvP4tY0fOCLkQeMhXXRNmH7/muIUTkFOQNzkAtE0RmqgaF/unabvYnsnCu2CjIMgueg==}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ dompurify: 3.0.9
+ vue: 3.4.21(typescript@5.3.3)
+ dev: false
+
+ /vue-query@1.26.0(react@18.2.0)(vue@3.4.21):
+ resolution: {integrity: sha512-78JbnLX/3tDll5kDr6PUasRWn05BeWm7yJNeUezA9INrn3AgTCLbsEctnlw6/wM6HiRqFj9F+mf+ruZusyiVOg==}
+ peerDependencies:
+ '@nuxtjs/composition-api': ^0.28.0
+ '@vue/composition-api': ^1.1.2
+ vue: ^2.0.0 || >=3.0.0
+ peerDependenciesMeta:
+ '@nuxtjs/composition-api':
+ optional: true
+ '@vue/composition-api':
+ optional: true
+ dependencies:
+ '@vue/devtools-api': 6.6.1
+ match-sorter: 6.3.4
+ react-query: 3.39.3(react@18.2.0)
+ vue: 3.4.21(typescript@5.3.3)
+ vue-demi: 0.10.1(vue@3.4.21)
+ transitivePeerDependencies:
+ - react
+ - react-dom
+ - react-native
+ dev: false
+
+ /vue-router@4.3.0(vue@3.4.21):
+ resolution: {integrity: sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==}
+ peerDependencies:
+ vue: ^3.2.0
+ dependencies:
+ '@vue/devtools-api': 6.6.1
+ vue: 3.4.21(typescript@5.3.3)
+
+ /vue-template-compiler@2.7.16:
+ resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==}
+ dependencies:
+ de-indent: 1.0.2
+ he: 1.2.0
+ dev: true
+
+ /vue-tsc@1.8.27(typescript@5.3.3):
+ resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==}
+ hasBin: true
+ peerDependencies:
+ typescript: '*'
+ dependencies:
+ '@volar/typescript': 1.11.1
+ '@vue/language-core': 1.8.27(typescript@5.3.3)
+ semver: 7.6.0
+ typescript: 5.3.3
+ dev: true
+
+ /vue@3.4.21(typescript@5.3.3):
+ resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@vue/compiler-dom': 3.4.21
+ '@vue/compiler-sfc': 3.4.21
+ '@vue/runtime-dom': 3.4.21
+ '@vue/server-renderer': 3.4.21(vue@3.4.21)
+ '@vue/shared': 3.4.21
+ typescript: 5.3.3
+
+ /vueuc@0.4.58(vue@3.4.21):
+ resolution: {integrity: sha512-Wnj/N8WbPRSxSt+9ji1jtDHPzda5h2OH/0sFBhvdxDRuyCZbjGg3/cKMaKqEoe+dErTexG2R+i6Q8S/Toq1MYg==}
+ peerDependencies:
+ vue: ^3.0.11
+ dependencies:
+ '@css-render/vue3-ssr': 0.15.12(vue@3.4.21)
+ '@juggle/resize-observer': 3.4.0
+ css-render: 0.15.12
+ evtd: 0.2.4
+ seemly: 0.3.8
+ vdirs: 0.1.8(vue@3.4.21)
+ vooks: 0.2.12(vue@3.4.21)
+ vue: 3.4.21(typescript@5.3.3)
+ dev: false
+
+ /w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+
+ /w3c-xmlserializer@4.0.0:
+ resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
+ engines: {node: '>=14'}
+ dependencies:
+ xml-name-validator: 4.0.0
+ dev: true
+
+ /webidl-conversions@7.0.0:
+ resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /webpack-sources@3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
+ dev: true
+
+ /webpack-virtual-modules@0.6.1:
+ resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==}
+ dev: true
+
+ /whatwg-encoding@2.0.0:
+ resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
+ engines: {node: '>=12'}
+ dependencies:
+ iconv-lite: 0.6.3
+ dev: true
+
+ /whatwg-mimetype@3.0.0:
+ resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /whatwg-url@11.0.0:
+ resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ tr46: 3.0.0
+ webidl-conversions: 7.0.0
+ dev: true
+
+ /which-boxed-primitive@1.0.2:
+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+ dependencies:
+ is-bigint: 1.0.4
+ is-boolean-object: 1.1.2
+ is-number-object: 1.0.7
+ is-string: 1.0.7
+ is-symbol: 1.0.4
+ dev: true
+
+ /which-collection@1.0.1:
+ resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==}
+ dependencies:
+ is-map: 2.0.2
+ is-set: 2.0.2
+ is-weakmap: 2.0.1
+ is-weakset: 2.0.2
+ dev: true
+
+ /which-typed-array@1.1.14:
+ resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.7
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: true
+
+ /wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+ dev: true
+
+ /wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ dev: false
+
+ /ws@8.16.0:
+ resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: true
+
+ /xml-name-validator@4.0.0:
+ resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /xmlchars@2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+ dev: true
+
+ /yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ dev: true
+
+ /yaml@2.4.0:
+ resolution: {integrity: sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ==}
+ engines: {node: '>= 14'}
+ hasBin: true
+ dev: true
+
+ /yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /zen-observable-ts@1.2.5:
+ resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==}
+ dependencies:
+ zen-observable: 0.8.15
+ dev: false
+
+ /zen-observable@0.8.15:
+ resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==}
+ dev: false
+
+ /zod@3.22.4:
+ resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
+ dev: false
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..2b75bd8
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,6 @@
+export default {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {}
+ }
+}
diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png
new file mode 100644
index 0000000..054dbdf
Binary files /dev/null and b/public/android-chrome-192x192.png differ
diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png
new file mode 100644
index 0000000..1b92bce
Binary files /dev/null and b/public/android-chrome-512x512.png differ
diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png
new file mode 100644
index 0000000..e2f3f19
Binary files /dev/null and b/public/apple-touch-icon.png differ
diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png
new file mode 100644
index 0000000..60d3788
Binary files /dev/null and b/public/favicon-16x16.png differ
diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png
new file mode 100644
index 0000000..10d6fcd
Binary files /dev/null and b/public/favicon-32x32.png differ
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..6693900
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/open-graph.png b/public/open-graph.png
new file mode 100644
index 0000000..ba46591
Binary files /dev/null and b/public/open-graph.png differ
diff --git a/public/site.webmanifest b/public/site.webmanifest
new file mode 100644
index 0000000..ce762f9
--- /dev/null
+++ b/public/site.webmanifest
@@ -0,0 +1,17 @@
+{
+ "name": "Codedang",
+ "short_name": "Codedang",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "display": "standalone"
+}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..c7e4741
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
diff --git a/src/admin/components/CreateNoticeModal.vue b/src/admin/components/CreateNoticeModal.vue
new file mode 100644
index 0000000..a96df56
--- /dev/null
+++ b/src/admin/components/CreateNoticeModal.vue
@@ -0,0 +1,62 @@
+
+
+
+ {
+ setToggle(toggle)
+ }
+ "
+ >
+
+
+ Create Contest Notice
+
+
+ SKKU 프로그래밍 대회 - SKKUDING
+
+
+
+
+
+
+
+
+
+
+
+
Content
+
+
+
+
+
+
+
+
diff --git a/src/admin/components/ImportProblemModal.vue b/src/admin/components/ImportProblemModal.vue
new file mode 100644
index 0000000..c97245a
--- /dev/null
+++ b/src/admin/components/ImportProblemModal.vue
@@ -0,0 +1,249 @@
+
+
+
+
+ Import Problem
+
+
+
+
+
{
+ const index = selectedTags.findIndex((item) => item == t)
+ if (index == -1) {
+ selectedTags = [...selectedTags, t]
+ } else {
+ selectedTags[index] = ''
+ }
+ }
+ "
+ >
+ {{ t }}
+
+
+
+
+
+
+
+
{
+ const index = selectedTags.findIndex((item) => item == t)
+ if (index == -1) {
+ selectedTags = [...selectedTags, t]
+ } else {
+ selectedTags[index] = ''
+ }
+ }
+ "
+ >
+ {{ t }}
+
+
+
+
+
+
+
+ {{ row.level }}
+
+
+
+
+
+
+
+
+ Selected Problem
+
+
+
+
+ {{ row.level }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/admin/pages/[groupId]/contest/CreateContestModal.vue b/src/admin/pages/[groupId]/contest/CreateContestModal.vue
new file mode 100644
index 0000000..6264f72
--- /dev/null
+++ b/src/admin/pages/[groupId]/contest/CreateContestModal.vue
@@ -0,0 +1,65 @@
+
+
+
+ {
+ setToggle(toggle)
+ }
+ "
+ >
+
+
Create Contest
+
+
+
+
+
+
Description
+
+
+
+
Period
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/admin/pages/[groupId]/contest/[id]/edit.vue b/src/admin/pages/[groupId]/contest/[id]/edit.vue
new file mode 100644
index 0000000..346013b
--- /dev/null
+++ b/src/admin/pages/[groupId]/contest/[id]/edit.vue
@@ -0,0 +1,7 @@
+
+
+
+ write template code
+
diff --git a/src/admin/pages/[groupId]/contest/[id]/index.vue b/src/admin/pages/[groupId]/contest/[id]/index.vue
new file mode 100644
index 0000000..f169681
--- /dev/null
+++ b/src/admin/pages/[groupId]/contest/[id]/index.vue
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+ SKKUDING
+
+
+
+ SKKU Coding platfom 모의대회
+
+
+
+
Problem List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Notice List
+
+
+
+
+
+
+
+
+
+
+
+
+
Submission List
+
+
+
+
+ {{ row.result }}
+
+ {{ row.result }}
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/[groupId]/contest/index.vue b/src/admin/pages/[groupId]/contest/index.vue
new file mode 100644
index 0000000..3a684e4
--- /dev/null
+++ b/src/admin/pages/[groupId]/contest/index.vue
@@ -0,0 +1,340 @@
+
+
+
+
+
+
+
Contest List
+
+
+
$router.push(`/admin/${props.groupId}/contest/${data.id}`)
+ "
+ >
+
+
+
+
+
+
+
+
+
+
+
+
Public Request
+
$router.push(`/admin/${props.groupId}/contest/${data.id}`)
+ "
+ >
+
+
+
+ {{
+ row.status
+ .toLowerCase()
+ .replace(/\b[a-z]/, (char) => char.toUpperCase())
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/[groupId]/home/index.vue b/src/admin/pages/[groupId]/home/index.vue
new file mode 100644
index 0000000..346013b
--- /dev/null
+++ b/src/admin/pages/[groupId]/home/index.vue
@@ -0,0 +1,7 @@
+
+
+
+ write template code
+
diff --git a/src/admin/pages/[groupId]/index.vue b/src/admin/pages/[groupId]/index.vue
new file mode 100644
index 0000000..0df852f
--- /dev/null
+++ b/src/admin/pages/[groupId]/index.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
Description
+
{{ group?.description }}
+
+ Group Managers
+
+
+
+
+ Group Configuration
+
+
+
+
+
+ {{ group?.config[value] }}
+
+
+
+
+
+
Total Members
+
{{ group?.memberNum }}
+
+ Invitation URL
+
+
{{ group?.invitationUrl }}
+
+
+
+ Group Create Time
+
+
+ {{ useDateFormat(group?.createTime, 'YYYY.MM.DD HH:mm:ss').value }}
+
+
+ Group Update Time
+
+
+ {{ useDateFormat(group?.updateTime, 'YYYY.MM.DD HH:mm:ss').value }}
+
+
+
+
+
+
+
+
Edit Group
+
+
+
Group Name
+
+
+
+
Group Configuration
+
+ {{ key }}
+
+
+
+
+
Description
+
+
+
+
+
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/[groupId]/member/index.vue b/src/admin/pages/[groupId]/member/index.vue
new file mode 100644
index 0000000..1baa0eb
--- /dev/null
+++ b/src/admin/pages/[groupId]/member/index.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
SKKUDING
+
+
+
Member
+
+
+
Group Leaders
+
+
+
+
+
+
+
+
+
Group Members
+
+
+
+
+
+
+
+
+
Group Member Approval
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/[groupId]/notice/[id]/edit.vue b/src/admin/pages/[groupId]/notice/[id]/edit.vue
new file mode 100644
index 0000000..346013b
--- /dev/null
+++ b/src/admin/pages/[groupId]/notice/[id]/edit.vue
@@ -0,0 +1,7 @@
+
+
+
+ write template code
+
diff --git a/src/admin/pages/[groupId]/notice/create.vue b/src/admin/pages/[groupId]/notice/create.vue
new file mode 100644
index 0000000..346013b
--- /dev/null
+++ b/src/admin/pages/[groupId]/notice/create.vue
@@ -0,0 +1,7 @@
+
+
+
+ write template code
+
diff --git a/src/admin/pages/[groupId]/notice/index.vue b/src/admin/pages/[groupId]/notice/index.vue
new file mode 100644
index 0000000..f8da0ec
--- /dev/null
+++ b/src/admin/pages/[groupId]/notice/index.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
SKKUDING
+
+
+
Notice
+
+
+
$router.push(`/admin/${props.groupId}/workbook/` + data.id)
+ "
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create Notice
+
+
+
+
+
+
Description
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/[groupId]/pool/[id]/edit.vue b/src/admin/pages/[groupId]/pool/[id]/edit.vue
new file mode 100644
index 0000000..346013b
--- /dev/null
+++ b/src/admin/pages/[groupId]/pool/[id]/edit.vue
@@ -0,0 +1,7 @@
+
+
+
+ write template code
+
diff --git a/src/admin/pages/[groupId]/pool/create.vue b/src/admin/pages/[groupId]/pool/create.vue
new file mode 100644
index 0000000..346013b
--- /dev/null
+++ b/src/admin/pages/[groupId]/pool/create.vue
@@ -0,0 +1,7 @@
+
+
+
+ write template code
+
diff --git a/src/admin/pages/[groupId]/pool/index.vue b/src/admin/pages/[groupId]/pool/index.vue
new file mode 100644
index 0000000..346013b
--- /dev/null
+++ b/src/admin/pages/[groupId]/pool/index.vue
@@ -0,0 +1,7 @@
+
+
+
+ write template code
+
diff --git a/src/admin/pages/[groupId]/problem/[id]/edit.vue b/src/admin/pages/[groupId]/problem/[id]/edit.vue
new file mode 100644
index 0000000..346013b
--- /dev/null
+++ b/src/admin/pages/[groupId]/problem/[id]/edit.vue
@@ -0,0 +1,7 @@
+
+
+
+ write template code
+
diff --git a/src/admin/pages/[groupId]/problem/create.vue b/src/admin/pages/[groupId]/problem/create.vue
new file mode 100644
index 0000000..dfb3ffc
--- /dev/null
+++ b/src/admin/pages/[groupId]/problem/create.vue
@@ -0,0 +1,415 @@
+
+
+
+
+
+ Back
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/[groupId]/problem/index.vue b/src/admin/pages/[groupId]/problem/index.vue
new file mode 100644
index 0000000..fa82b71
--- /dev/null
+++ b/src/admin/pages/[groupId]/problem/index.vue
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
Problem
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/[groupId]/submission/SubmissionDetailModal.vue b/src/admin/pages/[groupId]/submission/SubmissionDetailModal.vue
new file mode 100644
index 0000000..0ae2d74
--- /dev/null
+++ b/src/admin/pages/[groupId]/submission/SubmissionDetailModal.vue
@@ -0,0 +1,114 @@
+
+
+
+ {
+ setToggle(toggle)
+ }
+ "
+ >
+
+
Submission #{{ item.id }}
+
+
+
+ Problem |
+ Submission Time |
+ User |
+ Language |
+ Result |
+
+
+
+
+ {{ item.problem }} |
+ {{ item.submissionTime }} |
+ {{ item.user }} |
+ {{ item.language }} |
+
+ {{ item.result }}
+ |
+
+
+
+
+
+
Source Code
+
(612 Bytes)
+
+
+
+
+
+ {{ row.result }}
+
+
+
+
+
+
+
diff --git a/src/admin/pages/[groupId]/submission/index.vue b/src/admin/pages/[groupId]/submission/index.vue
new file mode 100644
index 0000000..adddfd8
--- /dev/null
+++ b/src/admin/pages/[groupId]/submission/index.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+ SKKUDING
+
+
+
+ Submission
+
+
+
+
+
{
+ selectRow = row
+ showModal = true
+ }
+ "
+ >
+
+
+ {{ row.result }}
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/[groupId]/workbook/[id]/edit.vue b/src/admin/pages/[groupId]/workbook/[id]/edit.vue
new file mode 100644
index 0000000..346013b
--- /dev/null
+++ b/src/admin/pages/[groupId]/workbook/[id]/edit.vue
@@ -0,0 +1,7 @@
+
+
+
+ write template code
+
diff --git a/src/admin/pages/[groupId]/workbook/[id]/index.vue b/src/admin/pages/[groupId]/workbook/[id]/index.vue
new file mode 100644
index 0000000..257109a
--- /dev/null
+++ b/src/admin/pages/[groupId]/workbook/[id]/index.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
SKKUDING
+
+
+
+ 1주차 과제
+
+
+
+
+
Problem List
+
Total Problem: 10, Total Score: 100
+
+
+
+
+
+
+
+
+
+
+
+
Submission List
+
+
+
+
{{ row.user.name }}
+
{{ row.user.id }}
+
+
+
+
+ {{ row.result }}
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/[groupId]/workbook/index.vue b/src/admin/pages/[groupId]/workbook/index.vue
new file mode 100644
index 0000000..74af2a6
--- /dev/null
+++ b/src/admin/pages/[groupId]/workbook/index.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
SKKUDING
+
+
+
+ Workbook List
+
+
+
+
$router.push(`/admin/${props.groupId}/workbook/` + data.id)
+ "
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create Workbook
+
+
+
+
+
+
Description
+
+
Period
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/contest.vue b/src/admin/pages/contest.vue
new file mode 100644
index 0000000..dec02d6
--- /dev/null
+++ b/src/admin/pages/contest.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/index.vue b/src/admin/pages/index.vue
new file mode 100644
index 0000000..1bba4d3
--- /dev/null
+++ b/src/admin/pages/index.vue
@@ -0,0 +1,258 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ group.groupName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/notice.vue b/src/admin/pages/notice.vue
new file mode 100644
index 0000000..a463d59
--- /dev/null
+++ b/src/admin/pages/notice.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/pool.vue b/src/admin/pages/pool.vue
new file mode 100644
index 0000000..651ab17
--- /dev/null
+++ b/src/admin/pages/pool.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/problem.vue b/src/admin/pages/problem.vue
new file mode 100644
index 0000000..4412e84
--- /dev/null
+++ b/src/admin/pages/problem.vue
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/admin/pages/workbook.vue b/src/admin/pages/workbook.vue
new file mode 100644
index 0000000..230e93c
--- /dev/null
+++ b/src/admin/pages/workbook.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+meta:
+ layout: admin
+
diff --git a/src/common/assets/codedang.svg b/src/common/assets/codedang.svg
new file mode 100644
index 0000000..8b73e13
--- /dev/null
+++ b/src/common/assets/codedang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/common/assets/dummy.png b/src/common/assets/dummy.png
new file mode 100644
index 0000000..d9e2037
Binary files /dev/null and b/src/common/assets/dummy.png differ
diff --git a/src/common/assets/github.svg b/src/common/assets/github.svg
new file mode 100644
index 0000000..013aa08
--- /dev/null
+++ b/src/common/assets/github.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/common/assets/logo.png b/src/common/assets/logo.png
new file mode 100644
index 0000000..a485c74
Binary files /dev/null and b/src/common/assets/logo.png differ
diff --git a/src/common/assets/skkudingLogo.png b/src/common/assets/skkudingLogo.png
new file mode 100644
index 0000000..008b92c
Binary files /dev/null and b/src/common/assets/skkudingLogo.png differ
diff --git a/src/common/components/Atom/BoxTitle.story.vue b/src/common/components/Atom/BoxTitle.story.vue
new file mode 100644
index 0000000..d0f9e89
--- /dev/null
+++ b/src/common/components/Atom/BoxTitle.story.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ Problems
+
+ Find problems with problem set and filters, and solve it!
+
+
+
+
+
+
+ 🏆 SKKU Coding Platform
+ Contests
+
+
+ Compete with schoolmates & win the prizes!
+
+
+
+
+
diff --git a/src/common/components/Atom/BoxTitle.vue b/src/common/components/Atom/BoxTitle.vue
new file mode 100644
index 0000000..6cadbdf
--- /dev/null
+++ b/src/common/components/Atom/BoxTitle.vue
@@ -0,0 +1,12 @@
+
+
+
diff --git a/src/common/components/Atom/Button.story.vue b/src/common/components/Atom/Button.story.vue
new file mode 100644
index 0000000..5cf54ee
--- /dev/null
+++ b/src/common/components/Atom/Button.story.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Atom/Button.vue b/src/common/components/Atom/Button.vue
new file mode 100644
index 0000000..d240675
--- /dev/null
+++ b/src/common/components/Atom/Button.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
diff --git a/src/common/components/Atom/InputItem.story.vue b/src/common/components/Atom/InputItem.story.vue
new file mode 100644
index 0000000..60fa7b7
--- /dev/null
+++ b/src/common/components/Atom/InputItem.story.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Atom/InputItem.vue b/src/common/components/Atom/InputItem.vue
new file mode 100644
index 0000000..b6503de
--- /dev/null
+++ b/src/common/components/Atom/InputItem.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+ {{ placeholder + ' is required' }}
+
+
+ {{ error }}
+
+
+
diff --git a/src/common/components/Atom/ListItem.story.vue b/src/common/components/Atom/ListItem.story.vue
new file mode 100644
index 0000000..6ba5e8a
--- /dev/null
+++ b/src/common/components/Atom/ListItem.story.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ Hover mouse on me!
+ Hover mouse on me!
+ Hover mouse on me!
+
+
+
+
+ Hover mouse on me!
+ Hover mouse on me!
+ Hover mouse on me!
+
+
+
+
diff --git a/src/common/components/Atom/ListItem.vue b/src/common/components/Atom/ListItem.vue
new file mode 100644
index 0000000..0d72263
--- /dev/null
+++ b/src/common/components/Atom/ListItem.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/src/common/components/Atom/PageSubtitle.story.vue b/src/common/components/Atom/PageSubtitle.story.vue
new file mode 100644
index 0000000..4d4aea0
--- /dev/null
+++ b/src/common/components/Atom/PageSubtitle.story.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/src/common/components/Atom/PageSubtitle.vue b/src/common/components/Atom/PageSubtitle.vue
new file mode 100644
index 0000000..46b1c2d
--- /dev/null
+++ b/src/common/components/Atom/PageSubtitle.vue
@@ -0,0 +1,9 @@
+
+
+
+ {{ text }}
+
diff --git a/src/common/components/Atom/PageTitle.story.vue b/src/common/components/Atom/PageTitle.story.vue
new file mode 100644
index 0000000..876dd81
--- /dev/null
+++ b/src/common/components/Atom/PageTitle.story.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/src/common/components/Atom/PageTitle.vue b/src/common/components/Atom/PageTitle.vue
new file mode 100644
index 0000000..14b0ac7
--- /dev/null
+++ b/src/common/components/Atom/PageTitle.vue
@@ -0,0 +1,9 @@
+
+
+
+ {{ text }}
+
diff --git a/src/common/components/Atom/Spinner.story.vue b/src/common/components/Atom/Spinner.story.vue
new file mode 100644
index 0000000..5ac9170
--- /dev/null
+++ b/src/common/components/Atom/Spinner.story.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Atom/Spinner.vue b/src/common/components/Atom/Spinner.vue
new file mode 100644
index 0000000..63c7d4a
--- /dev/null
+++ b/src/common/components/Atom/Spinner.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
diff --git a/src/common/components/Atom/SymbolLogo.story.vue b/src/common/components/Atom/SymbolLogo.story.vue
new file mode 100644
index 0000000..89e7137
--- /dev/null
+++ b/src/common/components/Atom/SymbolLogo.story.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Atom/SymbolLogo.vue b/src/common/components/Atom/SymbolLogo.vue
new file mode 100644
index 0000000..d548989
--- /dev/null
+++ b/src/common/components/Atom/SymbolLogo.vue
@@ -0,0 +1,19 @@
+
+
+
diff --git a/src/common/components/Atom/TextEditorButton.vue b/src/common/components/Atom/TextEditorButton.vue
new file mode 100644
index 0000000..82b89cb
--- /dev/null
+++ b/src/common/components/Atom/TextEditorButton.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/src/common/components/Atom/Toast.story.vue b/src/common/components/Atom/Toast.story.vue
new file mode 100644
index 0000000..53ca431
--- /dev/null
+++ b/src/common/components/Atom/Toast.story.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Atom/Toast.vue b/src/common/components/Atom/Toast.vue
new file mode 100644
index 0000000..8c1ea05
--- /dev/null
+++ b/src/common/components/Atom/Toast.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/Badge.story.vue b/src/common/components/Molecule/Badge.story.vue
new file mode 100644
index 0000000..98b517a
--- /dev/null
+++ b/src/common/components/Molecule/Badge.story.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Badge
+
+
+ Compile Error
+
+
+ Passed
+
+
+
diff --git a/src/common/components/Molecule/Badge.vue b/src/common/components/Molecule/Badge.vue
new file mode 100644
index 0000000..178bd95
--- /dev/null
+++ b/src/common/components/Molecule/Badge.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/src/common/components/Molecule/Card.story.vue b/src/common/components/Molecule/Card.story.vue
new file mode 100644
index 0000000..bbfcc86
--- /dev/null
+++ b/src/common/components/Molecule/Card.story.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+ Notice
+
+
+
+
+
+
+
+
+
+
+
+
+ Current/Upcoming Contests
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/Card.vue b/src/common/components/Molecule/Card.vue
new file mode 100644
index 0000000..b1dfe0c
--- /dev/null
+++ b/src/common/components/Molecule/Card.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+ {{ item.date }}
+
+
+
+ {{ item.title }}
+ {{ item.date }}
+
+
+
+
+
diff --git a/src/common/components/Molecule/CardItem.story.vue b/src/common/components/Molecule/CardItem.story.vue
new file mode 100644
index 0000000..b4e2cba
--- /dev/null
+++ b/src/common/components/Molecule/CardItem.story.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Another Example
+
+
+
diff --git a/src/common/components/Molecule/CardItem.vue b/src/common/components/Molecule/CardItem.vue
new file mode 100644
index 0000000..4797186
--- /dev/null
+++ b/src/common/components/Molecule/CardItem.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
![]()
+
+
+
+
+ {{ description }}
+
+
+
+
+ {{ additionalText }}
+
+
+ {{ coloredTextShort || coloredText }}
+
+
+
+
+
diff --git a/src/common/components/Molecule/Dialog.story.vue b/src/common/components/Molecule/Dialog.story.vue
new file mode 100644
index 0000000..05530eb
--- /dev/null
+++ b/src/common/components/Molecule/Dialog.story.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/Dialog.vue b/src/common/components/Molecule/Dialog.vue
new file mode 100644
index 0000000..00942be
--- /dev/null
+++ b/src/common/components/Molecule/Dialog.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+ {{ dialogInfo?.title }}
+
+ {{ dialogInfo?.content }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/Dropdown.story.vue b/src/common/components/Molecule/Dropdown.story.vue
new file mode 100644
index 0000000..49f9807
--- /dev/null
+++ b/src/common/components/Molecule/Dropdown.story.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+ Management
+ Settings
+ Logout
+
+
+
+
+
+
+
+ C++
+
+
+
+
+ C++
+ Python3
+ Java
+
+
+
+
+
diff --git a/src/common/components/Molecule/Dropdown.vue b/src/common/components/Molecule/Dropdown.vue
new file mode 100644
index 0000000..dbb79c6
--- /dev/null
+++ b/src/common/components/Molecule/Dropdown.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
diff --git a/src/common/components/Molecule/Modal.story.vue b/src/common/components/Molecule/Modal.story.vue
new file mode 100644
index 0000000..34dc9a6
--- /dev/null
+++ b/src/common/components/Molecule/Modal.story.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+ Click the button, and it shows modal!
+
+
+ Modal opened!
+
+
+
+
diff --git a/src/common/components/Molecule/Modal.vue b/src/common/components/Molecule/Modal.vue
new file mode 100644
index 0000000..2b6ac2a
--- /dev/null
+++ b/src/common/components/Molecule/Modal.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/NewCard.vue b/src/common/components/Molecule/NewCard.vue
new file mode 100644
index 0000000..98ee5f8
--- /dev/null
+++ b/src/common/components/Molecule/NewCard.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/Pagination.story.vue b/src/common/components/Molecule/Pagination.story.vue
new file mode 100644
index 0000000..31fbcd7
--- /dev/null
+++ b/src/common/components/Molecule/Pagination.story.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/Pagination.vue b/src/common/components/Molecule/Pagination.vue
new file mode 100644
index 0000000..00bb896
--- /dev/null
+++ b/src/common/components/Molecule/Pagination.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/ProgressCard.story.vue b/src/common/components/Molecule/ProgressCard.story.vue
new file mode 100644
index 0000000..84630e1
--- /dev/null
+++ b/src/common/components/Molecule/ProgressCard.story.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/ProgressCard.vue b/src/common/components/Molecule/ProgressCard.vue
new file mode 100644
index 0000000..c00513d
--- /dev/null
+++ b/src/common/components/Molecule/ProgressCard.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
{{ header }}
+
{{ title }}
+
{{ description }}
+
+
+ {{ complete + ' / ' + total }}
+
{{ ' ' + progressText }}
+
+
+
+
diff --git a/src/common/components/Molecule/RadioButton.story.vue b/src/common/components/Molecule/RadioButton.story.vue
new file mode 100644
index 0000000..cbf1255
--- /dev/null
+++ b/src/common/components/Molecule/RadioButton.story.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/RadioButton.vue b/src/common/components/Molecule/RadioButton.vue
new file mode 100644
index 0000000..99b8d13
--- /dev/null
+++ b/src/common/components/Molecule/RadioButton.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/SearchBar.story.vue b/src/common/components/Molecule/SearchBar.story.vue
new file mode 100644
index 0000000..c36d32f
--- /dev/null
+++ b/src/common/components/Molecule/SearchBar.story.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/SearchBar.vue b/src/common/components/Molecule/SearchBar.vue
new file mode 100644
index 0000000..04f4c4a
--- /dev/null
+++ b/src/common/components/Molecule/SearchBar.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/Switch.story.vue b/src/common/components/Molecule/Switch.story.vue
new file mode 100644
index 0000000..2812350
--- /dev/null
+++ b/src/common/components/Molecule/Switch.story.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+ Current value: {{ data }}
+
+
+
+
+
+
diff --git a/src/common/components/Molecule/Switch.vue b/src/common/components/Molecule/Switch.vue
new file mode 100644
index 0000000..5422b9d
--- /dev/null
+++ b/src/common/components/Molecule/Switch.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
diff --git a/src/common/components/Molecule/Tab.story.vue b/src/common/components/Molecule/Tab.story.vue
new file mode 100644
index 0000000..55a22a3
--- /dev/null
+++ b/src/common/components/Molecule/Tab.story.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+ This is Notice Page
+ This is Contest Page
+ This is Workbook Page
+ This is Member Page
+
+
+
+
+ This is Notice Page
+ This is Contest Page
+ This is Workbook Page
+ This is Member Page
+
+
+
+
diff --git a/src/common/components/Molecule/Tab.vue b/src/common/components/Molecule/Tab.vue
new file mode 100644
index 0000000..b90d3d6
--- /dev/null
+++ b/src/common/components/Molecule/Tab.vue
@@ -0,0 +1,43 @@
+
+
+
+
+ -
+ {{ item.charAt(0).toUpperCase() + item.slice(1) }}
+
+
+
+
+
diff --git a/src/common/components/Organism/AuthModal.vue b/src/common/components/Organism/AuthModal.vue
new file mode 100644
index 0000000..c514652
--- /dev/null
+++ b/src/common/components/Organism/AuthModal.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ $emit('update:modelValue', value)"
+ />
+ $emit('update:modelValue', value)"
+ />
+ $emit('update:modelValue', value)"
+ />
+
+
+
+
diff --git a/src/common/components/Organism/CodeEditor.story.vue b/src/common/components/Organism/CodeEditor.story.vue
new file mode 100644
index 0000000..111ed6a
--- /dev/null
+++ b/src/common/components/Organism/CodeEditor.story.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Organism/CodeEditor.vue b/src/common/components/Organism/CodeEditor.vue
new file mode 100644
index 0000000..e364b79
--- /dev/null
+++ b/src/common/components/Organism/CodeEditor.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
diff --git a/src/common/components/Organism/Footer.story.vue b/src/common/components/Organism/Footer.story.vue
new file mode 100644
index 0000000..a957da8
--- /dev/null
+++ b/src/common/components/Organism/Footer.story.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Organism/Footer.vue b/src/common/components/Organism/Footer.vue
new file mode 100644
index 0000000..f5cdacd
--- /dev/null
+++ b/src/common/components/Organism/Footer.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
diff --git a/src/common/components/Organism/Header.story.vue b/src/common/components/Organism/Header.story.vue
new file mode 100644
index 0000000..1219999
--- /dev/null
+++ b/src/common/components/Organism/Header.story.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/src/common/components/Organism/Header.vue b/src/common/components/Organism/Header.vue
new file mode 100644
index 0000000..81fd2e2
--- /dev/null
+++ b/src/common/components/Organism/Header.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ useUser.data.value?.username }}
+
+
+
+
+
+
+
+
+ Management
+ Settings
+
+ Logout
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Organism/Login.vue b/src/common/components/Organism/Login.vue
new file mode 100644
index 0000000..20ab442
--- /dev/null
+++ b/src/common/components/Organism/Login.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
![]()
+
+
+
+
diff --git a/src/common/components/Organism/PaginationTable.story.vue b/src/common/components/Organism/PaginationTable.story.vue
new file mode 100644
index 0000000..295def8
--- /dev/null
+++ b/src/common/components/Organism/PaginationTable.story.vue
@@ -0,0 +1,257 @@
+
+
+
+
+
+
+
+
+
+
+ {{ row.color }}
+
+
+
+
+ Click item : {{ selected }}
+
+
+
+
+
+
+
+
+
+ {{ row.color }}
+
+
+
+
+ Click item : {{ selected }}
+
+
+
+
+
+
+
+
+
+ {{ row.color }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.color }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.color }}
+
+
+
+
+
+
+
diff --git a/src/common/components/Organism/PaginationTable.vue b/src/common/components/Organism/PaginationTable.vue
new file mode 100644
index 0000000..ed6bb61
--- /dev/null
+++ b/src/common/components/Organism/PaginationTable.vue
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+
+
emit('changePage', page)"
+ />
+
+
+
diff --git a/src/common/components/Organism/PasswordReset.vue b/src/common/components/Organism/PasswordReset.vue
new file mode 100644
index 0000000..0ec4d66
--- /dev/null
+++ b/src/common/components/Organism/PasswordReset.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
Password Recovery
+
+
+ Back to Log In
+
+
+
diff --git a/src/common/components/Organism/Sidebar.story.vue b/src/common/components/Organism/Sidebar.story.vue
new file mode 100644
index 0000000..5fc2311
--- /dev/null
+++ b/src/common/components/Organism/Sidebar.story.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Organism/Sidebar.vue b/src/common/components/Organism/Sidebar.vue
new file mode 100644
index 0000000..8d10c9d
--- /dev/null
+++ b/src/common/components/Organism/Sidebar.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ name }}
+
+
+
+
+
diff --git a/src/common/components/Organism/Signup.vue b/src/common/components/Organism/Signup.vue
new file mode 100644
index 0000000..c9a7a8e
--- /dev/null
+++ b/src/common/components/Organism/Signup.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
![]()
+
+
+ Already have an account?
+
+ Log In
+
+
+
+
diff --git a/src/common/components/Organism/TextEditor.story.vue b/src/common/components/Organism/TextEditor.story.vue
new file mode 100644
index 0000000..eaf0dde
--- /dev/null
+++ b/src/common/components/Organism/TextEditor.story.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/components/Organism/TextEditor.vue b/src/common/components/Organism/TextEditor.vue
new file mode 100644
index 0000000..5853966
--- /dev/null
+++ b/src/common/components/Organism/TextEditor.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/composables/api.ts b/src/common/composables/api.ts
new file mode 100644
index 0000000..07b1518
--- /dev/null
+++ b/src/common/composables/api.ts
@@ -0,0 +1,105 @@
+import axios from 'axios'
+import { ref, computed, type ComputedRef, toValue } from 'vue'
+
+/**
+ * Single item of the list
+ * @param id: unique identifier of the item
+ */
+interface Item {
+ id: unknown
+}
+
+/**
+ * Utility to get cursor-pagination API data.
+ * `slot` means a group of pages in pagination component.
+ * For example, if there are 3 pages per slot, [1, 2, 3] is slot 1, [4, 5, 6] is slot 2, and so on.
+ *
+ * @param path: url path to call (ex: 'user', () => `group/${id}/user`)
+ * @param take: number of items to take per page
+ * @param pagesPerSlot: number of pages per slot
+ */
+export const useListAPI = (
+ path: string | ComputedRef,
+ take = 20,
+ pagesPerSlot = 5
+) => {
+ const currentPage = ref(1)
+ /** Total number of pages (increase if there are more data than slots) */
+ const totalPages = ref(1)
+ /** Group of pages in current pagination
+ * (ex: = ) */
+ const currentSlot = computed(() =>
+ Math.ceil(currentPage.value / pagesPerSlot)
+ )
+ /** Items of current page */
+ const items = ref([])
+ /** Items of current slot */
+ const slotItems = ref([])
+ /** Last item of current slot */
+ const cursor = ref()
+ /** Cursors of previous slots. (work as stack) */
+ const previousCursors = ref([])
+ /** Data is being loaded */
+ const loading = ref(false)
+
+ /**
+ * Call list API from server.
+ * Get (all data of current slot + 1), to verify if there are more data to load in next slot.
+ * For example, if number of items per page is 20 and pages per slot is 5, take 101 items.
+ * If 101 items are returned, next slot exists. If not, current slot is the last.
+ */
+ const getList = async () => {
+ loading.value = true
+ const { data } = await axios.get(`/api/${toValue(path)}`, {
+ params: {
+ take: take * pagesPerSlot + 1,
+ cursor: cursor.value
+ }
+ })
+ // When current slot is not the last,
+ if (data.length > take * pagesPerSlot) {
+ totalPages.value = currentSlot.value * pagesPerSlot + 1
+ slotItems.value = data.slice(0, take * pagesPerSlot)
+ }
+ // When current slot is the last,
+ else {
+ totalPages.value =
+ (currentSlot.value - 1) * pagesPerSlot + Math.ceil(data.length / take)
+ slotItems.value = data
+ }
+ loading.value = false
+ }
+
+ const changePage = async (page: number) => {
+ const oldSlot = currentSlot.value
+ currentPage.value = page // updates currentSlot automatically (computed)
+ if (currentSlot.value > oldSlot) {
+ previousCursors.value.push(cursor.value)
+ cursor.value = slotItems.value.at(-1)?.id
+ await getList()
+ } else if (currentSlot.value < oldSlot) {
+ cursor.value = previousCursors.value.pop()
+ await getList()
+ }
+ items.value = slotItems.value.slice(
+ ((currentPage.value - 1) % pagesPerSlot) * take,
+ ((currentPage.value - 1) % pagesPerSlot) * take + take
+ )
+ }
+
+ // Load initial data
+ // Do not use await here, because it will block the UI (top-level await)
+ getList().then(() => {
+ items.value = slotItems.value.slice(
+ (currentPage.value - 1) % pagesPerSlot,
+ ((currentPage.value - 1) % pagesPerSlot) + take
+ )
+ })
+
+ return {
+ items,
+ totalPages,
+ changePage,
+ loading
+ }
+}
diff --git a/src/common/composables/dialog.ts b/src/common/composables/dialog.ts
new file mode 100644
index 0000000..313ed68
--- /dev/null
+++ b/src/common/composables/dialog.ts
@@ -0,0 +1,37 @@
+import { ref } from 'vue'
+
+interface DialogOption {
+ title: string
+ content: string
+
+ /* 동의 버튼에 보여질 문구 */
+ yes?: string
+
+ /* 거절 버튼에 보여질 문구 */
+ no?: string
+}
+
+interface DialogInfo extends DialogOption {
+ type: 'confirm' | 'success' | 'error'
+}
+
+export const dialogInfo = ref()
+
+export const open = ref(false)
+
+export const useDialog = () => {
+ return {
+ confirm(option: DialogOption) {
+ dialogInfo.value = { ...option, type: 'confirm' }
+ open.value = true
+ },
+ success(option: DialogOption) {
+ dialogInfo.value = { ...option, type: 'success' }
+ open.value = true
+ },
+ error(option: DialogOption) {
+ dialogInfo.value = { ...option, type: 'error' }
+ open.value = true
+ }
+ }
+}
diff --git a/src/common/composables/graphql.ts b/src/common/composables/graphql.ts
new file mode 100644
index 0000000..fae3a7f
--- /dev/null
+++ b/src/common/composables/graphql.ts
@@ -0,0 +1,112 @@
+import type { DocumentNode } from '@apollo/client'
+import { useQuery } from '@vue/apollo-composable'
+import type { MaybeRef } from 'vue'
+import { ref, computed, type Ref } from 'vue'
+import { useToast } from './toast'
+
+/**
+ * Single item of the list
+ * @param id: unique identifier of the item
+ */
+interface Item {
+ id: unknown
+}
+
+interface Response {
+ [key: string]: T[]
+}
+
+/**
+ * @param query GraphQL query
+ * @param variable GraphQL variables
+ * @param option Custom options { take: number; pagesPerSlot: number }
+ */
+export const useListGraphQL = (
+ query: DocumentNode,
+ variable: { [key: string]: MaybeRef },
+ option?: { take?: number; pagesPerSlot?: number }
+) => {
+ const take = option?.take ?? 20
+ const pagesPerSlot = option?.pagesPerSlot ?? 5
+
+ const currentPage = ref(1)
+ /** Total number of pages (increase if there are more data than slots) */
+ const totalPages = ref(1)
+ /** Group of pages in current pagination
+ * (ex: = ) */
+ const currentSlot = computed(() =>
+ Math.ceil(currentPage.value / pagesPerSlot)
+ )
+ /** Items of current page */
+ const items = ref([]) as Ref
+ /** Items of current slot */
+ const slotItems = ref([]) as Ref
+ /** Last item of current slot */
+ const cursor = ref(0)
+ /** Cursors of previous slots. (work as stack) */
+ const previousCursors = ref([])
+
+ const { loading, refetch, onResult } = useQuery>(
+ query,
+ { ...variable, take: take * pagesPerSlot + 1 },
+ { errorPolicy: 'all', notifyOnNetworkStatusChange: true }
+ )
+
+ // When data is fetched,
+ onResult((res) => {
+ if (res.errors) {
+ const toast = useToast()
+ for (const error of res.errors) {
+ toast({ type: 'error', message: error.message })
+ }
+ return
+ }
+
+ for (const key in res.data) {
+ const data = res.data[key]
+
+ // When current slot is not the last,
+ if (data.length > take * pagesPerSlot) {
+ totalPages.value = currentSlot.value * pagesPerSlot + 1
+ slotItems.value = data.slice(0, take * pagesPerSlot)
+ }
+ // When current slot is the last,
+ else {
+ totalPages.value =
+ (currentSlot.value - 1) * pagesPerSlot + Math.ceil(data.length / take)
+ slotItems.value = data
+ }
+ }
+
+ // Update items of current page
+ items.value = slotItems.value.slice(
+ ((currentPage.value - 1) % pagesPerSlot) * take,
+ ((currentPage.value - 1) % pagesPerSlot) * take + take
+ )
+ })
+
+ const changePage = async (page: number) => {
+ const oldSlot = currentSlot.value
+ currentPage.value = page // updates currentSlot automatically (computed)
+ if (currentSlot.value > oldSlot) {
+ previousCursors.value.push(cursor.value)
+ cursor.value = Number(slotItems.value.at(-1)?.id)
+ await refetch({ cursor: cursor.value || null })
+ } else if (currentSlot.value < oldSlot) {
+ cursor.value = Number(previousCursors.value.pop())
+ await refetch({ cursor: cursor.value || null })
+ } else {
+ items.value = slotItems.value.slice(
+ ((currentPage.value - 1) % pagesPerSlot) * take,
+ ((currentPage.value - 1) % pagesPerSlot) * take + take
+ )
+ }
+ }
+
+ return {
+ items,
+ totalPages,
+ changePage,
+ loading
+ }
+}
diff --git a/src/common/composables/toast.ts b/src/common/composables/toast.ts
new file mode 100644
index 0000000..04dd5cb
--- /dev/null
+++ b/src/common/composables/toast.ts
@@ -0,0 +1,17 @@
+import { createEventHook } from '@vueuse/core'
+
+export interface ToastOption {
+ message: string
+ type?: 'info' | 'success' | 'warn' | 'error'
+ duration?: number
+}
+
+const { trigger, on } = createEventHook()
+
+export const onTrigger = on
+
+export const useToast = () => {
+ return (option: ToastOption) => {
+ trigger(option)
+ }
+}
diff --git a/src/common/layouts/admin.vue b/src/common/layouts/admin.vue
new file mode 100644
index 0000000..82d16eb
--- /dev/null
+++ b/src/common/layouts/admin.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/common/layouts/default.vue b/src/common/layouts/default.vue
new file mode 100644
index 0000000..ce41319
--- /dev/null
+++ b/src/common/layouts/default.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+ {{ $router.currentRoute.value.meta.title }}
+
+ {{ $router.currentRoute.value.meta.coloredTitle }}
+
+
+
+ {{ $router.currentRoute.value.meta.subtitle }}
+
+
+
+
+
+
+
+
+
diff --git a/src/common/layouts/empty.vue b/src/common/layouts/empty.vue
new file mode 100644
index 0000000..f21a49f
--- /dev/null
+++ b/src/common/layouts/empty.vue
@@ -0,0 +1 @@
+
diff --git a/src/common/store/auth.ts b/src/common/store/auth.ts
new file mode 100644
index 0000000..61bbaf9
--- /dev/null
+++ b/src/common/store/auth.ts
@@ -0,0 +1,53 @@
+import { useToast } from '@/common/composables/toast'
+import { useStorage } from '@vueuse/core'
+import axios from 'axios'
+import { defineStore } from 'pinia'
+
+const openToast = useToast()
+
+export const useAuthStore = defineStore('auth', {
+ state: () => ({
+ isLoggedIn: useStorage('isLoggedIn', false)
+ }),
+ actions: {
+ async login(username: string, password: string) {
+ try {
+ const res = await axios.post(
+ '/api/auth/login',
+ { username, password },
+ { withCredentials: true } // for local development
+ )
+ axios.defaults.headers.common.authorization = res.headers.authorization
+ this.isLoggedIn = true
+ openToast({ message: 'Login succeed!', type: 'success' })
+ } catch (e) {
+ openToast({ message: 'Login failed!', type: 'error' })
+ throw new Error('Login failed')
+ }
+ },
+
+ async logout() {
+ try {
+ await axios.post('/api/auth/logout')
+ delete axios.defaults.headers.common.authorization
+ this.isLoggedIn = false
+ } catch (e) {
+ openToast({ message: 'Logout failed!', type: 'error' })
+ throw new Error('Logout failed')
+ }
+ },
+
+ async reissue() {
+ try {
+ const res = await axios.get('/api/auth/reissue', {
+ // Send cross-site cookie in development mode
+ withCredentials: import.meta.env.DEV
+ })
+ axios.defaults.headers.common.authorization = res.headers.authorization
+ this.isLoggedIn = true
+ } catch (e) {
+ this.isLoggedIn = false
+ }
+ }
+ }
+})
diff --git a/src/common/store/user.ts b/src/common/store/user.ts
new file mode 100644
index 0000000..9a4f107
--- /dev/null
+++ b/src/common/store/user.ts
@@ -0,0 +1,19 @@
+import axios from 'axios'
+import { useQuery } from 'vue-query'
+
+type Role = 'User' | 'Manager' | 'Admin' | 'SuperAdmin'
+
+interface User {
+ username: string
+ role: Role
+ email: string
+ lastLogin: string
+ updateTime: string
+ userProfile: unknown
+}
+
+export const useUserQuery = () => {
+ return useQuery('user', async () =>
+ axios.get('/api/user').then((res) => res.data)
+ )
+}
diff --git a/src/common/styles/style.css b/src/common/styles/style.css
new file mode 100644
index 0000000..eed8706
--- /dev/null
+++ b/src/common/styles/style.css
@@ -0,0 +1,32 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@layer base {
+ html {
+ @apply text-text;
+ }
+
+ html,
+ body {
+ @apply h-full;
+ }
+
+ body {
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit;
+ }
+
+ #app {
+ @apply flex h-full flex-col;
+ }
+}
+
+#nprogress {
+ @apply pointer-events-none;
+}
+
+#nprogress .bar {
+ @apply bg-blue fixed left-0 top-0 h-[2px] w-full;
+}
diff --git a/src/histoire.css b/src/histoire.css
new file mode 100644
index 0000000..3143827
--- /dev/null
+++ b/src/histoire.css
@@ -0,0 +1,6 @@
+@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono&family=Manrope:wght@400;700&family=Noto+Sans+KR:wght@400;700&display=swap');
+
+/* sidebar source */
+.__histoire-code code {
+ font-family: 'JetBrains Mono', monospace;
+}
diff --git a/src/histoire.setup.ts b/src/histoire.setup.ts
new file mode 100644
index 0000000..023be5d
--- /dev/null
+++ b/src/histoire.setup.ts
@@ -0,0 +1,5 @@
+import './common/styles/style.css'
+import './histoire.css'
+
+/* trigger script */
+console.log('Histoire theme loaded.')
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..525138b
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,99 @@
+import { useAuthStore } from '@/common/store/auth'
+import {
+ ApolloClient,
+ ApolloLink,
+ from,
+ HttpLink,
+ InMemoryCache
+} from '@apollo/client/core'
+import { onError } from '@apollo/client/link/error'
+import { ApolloClients } from '@vue/apollo-composable'
+import axios from 'axios'
+import axiosRetry from 'axios-retry'
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
+import { createPinia } from 'pinia'
+import { setupLayouts } from 'virtual:generated-layouts'
+import generatedRoutes from 'virtual:generated-pages'
+import { createApp, provide, h } from 'vue'
+import VueDOMPurifyHTML from 'vue-dompurify-html'
+import { VueQueryPlugin } from 'vue-query'
+import { createRouter, createWebHistory } from 'vue-router'
+import App from './App.vue'
+import './common/styles/style.css'
+
+// Retry 401 failed request to reissue access token
+// since access token expiresin short time.
+// Refresh token is stored in cookie, which expires after long time.
+axiosRetry(axios, {
+ retries: 1,
+ retryCondition: (error) =>
+ error.response?.status === 401 && error.config?.url !== '/api/auth/reissue',
+ onRetry: async () => {
+ await useAuthStore().reissue()
+ }
+})
+
+// Retry 401 failed request to reissue access token
+// just like axiosRetry, but using ApolloLink for GraphQL
+const errorLink = onError(({ graphQLErrors, operation, forward }) => {
+ if (graphQLErrors)
+ graphQLErrors.forEach(({ message }) => {
+ if (message.includes('Unauthorized')) {
+ useAuthStore()
+ .reissue()
+ .then(() => {
+ operation.setContext(({ headers }: { headers: object }) => ({
+ headers: {
+ ...headers,
+ authorization: axios.defaults.headers.common.authorization
+ }
+ }))
+ forward(operation)
+ })
+ }
+ })
+ // TODO: if retry fails, redirect to login page
+})
+
+const authLink = new ApolloLink((operation, forward) => {
+ operation.setContext(({ headers }: { headers: object }) => ({
+ headers: {
+ ...headers,
+ authorization: axios.defaults.headers.common.authorization
+ }
+ }))
+ return forward(operation)
+})
+
+const link = from([errorLink, authLink, new HttpLink({ uri: '/graphql' })])
+const cache = new InMemoryCache()
+const apolloClient = new ApolloClient({ link, cache })
+
+const app = createApp({
+ setup() {
+ provide(ApolloClients, {
+ default: apolloClient
+ })
+ },
+ render: () => h(App)
+})
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes: setupLayouts(generatedRoutes)
+})
+
+NProgress.configure({ showSpinner: false })
+router.beforeEach(() => {
+ NProgress.start()
+})
+router.afterEach(() => {
+ NProgress.done()
+})
+
+app.use(router)
+app.use(createPinia())
+app.use(VueDOMPurifyHTML)
+app.use(VueQueryPlugin)
+app.mount('#app')
diff --git a/src/user/contest/components/Notice.vue b/src/user/contest/components/Notice.vue
new file mode 100644
index 0000000..64e14e8
--- /dev/null
+++ b/src/user/contest/components/Notice.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/src/user/contest/components/Problem.vue b/src/user/contest/components/Problem.vue
new file mode 100644
index 0000000..65df17a
--- /dev/null
+++ b/src/user/contest/components/Problem.vue
@@ -0,0 +1,30 @@
+
+
+
+ $router.push('/problem/' + id)"
+ />
+
diff --git a/src/user/contest/components/Ranking.vue b/src/user/contest/components/Ranking.vue
new file mode 100644
index 0000000..84f8ac2
--- /dev/null
+++ b/src/user/contest/components/Ranking.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
diff --git a/src/user/contest/components/Top.vue b/src/user/contest/components/Top.vue
new file mode 100644
index 0000000..63dd258
--- /dev/null
+++ b/src/user/contest/components/Top.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/src/user/contest/pages/[id].vue b/src/user/contest/pages/[id].vue
new file mode 100644
index 0000000..c904fb0
--- /dev/null
+++ b/src/user/contest/pages/[id].vue
@@ -0,0 +1,58 @@
+
+
+
+
+
diff --git a/src/user/contest/pages/index.vue b/src/user/contest/pages/index.vue
new file mode 100644
index 0000000..e19bd23
--- /dev/null
+++ b/src/user/contest/pages/index.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+meta:
+ title: 🏆 SKKU Coding Platform
+ coloredTitle: Contests
+ subtitle: Compete with schoolmates & win the prizes!
+
diff --git a/src/user/group/components/Contest.vue b/src/user/group/components/Contest.vue
new file mode 100644
index 0000000..ae0b6b9
--- /dev/null
+++ b/src/user/group/components/Contest.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+
+
+
diff --git a/src/user/group/components/GroupListSection.vue b/src/user/group/components/GroupListSection.vue
new file mode 100644
index 0000000..1736864
--- /dev/null
+++ b/src/user/group/components/GroupListSection.vue
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
+ No Group
+
+
+
+
+
+
![]()
+
+ {{ groupName.slice(0, 2) }}
+
+
+
+
+ {{ groupName }}
+
+ {{ description }}
+
+
+
+
+ {{ memberNum }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ selectedGroup.description }}
+
+
+
+
+
{{ selectedGroup.memberNum || 0 }}
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+
+ Invitation has been succeed!
+
+ Welcome to group {{ selectedGroup?.groupName }} :)
+
+
+
+
+ Invitation succesfully requested!
+
+ Please wait for group manager’s approval :)
+
+
+
+
+ You have already joined or sent request to this group!
+
+ Duplicated join request is not allowed.
+
+
+
+
+
+
+
diff --git a/src/user/group/components/Member.vue b/src/user/group/components/Member.vue
new file mode 100644
index 0000000..df3c256
--- /dev/null
+++ b/src/user/group/components/Member.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
diff --git a/src/user/group/components/NameList.vue b/src/user/group/components/NameList.vue
new file mode 100644
index 0000000..fb6d5a0
--- /dev/null
+++ b/src/user/group/components/NameList.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
diff --git a/src/user/group/components/Notice.vue b/src/user/group/components/Notice.vue
new file mode 100644
index 0000000..9a306e3
--- /dev/null
+++ b/src/user/group/components/Notice.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/src/user/group/components/Problem.vue b/src/user/group/components/Problem.vue
new file mode 100644
index 0000000..fc6647b
--- /dev/null
+++ b/src/user/group/components/Problem.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
$router.push('/problem/' + id)"
+ />
+
+
diff --git a/src/user/group/components/Profile.vue b/src/user/group/components/Profile.vue
new file mode 100644
index 0000000..ae66138
--- /dev/null
+++ b/src/user/group/components/Profile.vue
@@ -0,0 +1,36 @@
+
+
+
+
+

+
+
+
+
diff --git a/src/user/group/components/Workbook.vue b/src/user/group/components/Workbook.vue
new file mode 100644
index 0000000..cc079a9
--- /dev/null
+++ b/src/user/group/components/Workbook.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/user/group/pages/[id].vue b/src/user/group/pages/[id].vue
new file mode 100644
index 0000000..21b2596
--- /dev/null
+++ b/src/user/group/pages/[id].vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/user/group/pages/index.vue b/src/user/group/pages/index.vue
new file mode 100644
index 0000000..bfd7e2a
--- /dev/null
+++ b/src/user/group/pages/index.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Create Group
+
+
+
Group Name
+
+
+
+
Group Configuration
+
+ {{ key }}
+
+
+
+
+
Description
+
+
+
+
+
+
+
diff --git a/src/user/home/components/Carousel.story.vue b/src/user/home/components/Carousel.story.vue
new file mode 100644
index 0000000..4d1d4f5
--- /dev/null
+++ b/src/user/home/components/Carousel.story.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
diff --git a/src/user/home/components/Carousel.vue b/src/user/home/components/Carousel.vue
new file mode 100644
index 0000000..0ac4f77
--- /dev/null
+++ b/src/user/home/components/Carousel.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
diff --git a/src/user/home/components/ContestItem.vue b/src/user/home/components/ContestItem.vue
new file mode 100644
index 0000000..26d574e
--- /dev/null
+++ b/src/user/home/components/ContestItem.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ {{ `${state === 'ongoing' ? 'Ends in ' : 'Start in'} ${timeAgo}` }}
+
+
+
+
diff --git a/src/user/home/pages/404.webp b/src/user/home/pages/404.webp
new file mode 100644
index 0000000..18a97ec
Binary files /dev/null and b/src/user/home/pages/404.webp differ
diff --git a/src/user/home/pages/[...all].vue b/src/user/home/pages/[...all].vue
new file mode 100644
index 0000000..4946d8e
--- /dev/null
+++ b/src/user/home/pages/[...all].vue
@@ -0,0 +1,14 @@
+
+
+
+
+ Oops!
+ 404 Page Not Found
+
+ This is not the page you're looking for.
+
+
+
+
diff --git a/src/user/home/pages/index.vue b/src/user/home/pages/index.vue
new file mode 100644
index 0000000..abdac64
--- /dev/null
+++ b/src/user/home/pages/index.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+ {{ item.date }}
+
+
+
+
+
+
+
+
+
+
+meta:
+ home: true
+
diff --git a/src/user/notice/composables/notice.ts b/src/user/notice/composables/notice.ts
new file mode 100644
index 0000000..5133198
--- /dev/null
+++ b/src/user/notice/composables/notice.ts
@@ -0,0 +1,92 @@
+import { useDateFormat } from '@vueuse/core'
+import axios from 'axios'
+import { ref, markRaw, type Component } from 'vue'
+import { useRouter } from 'vue-router'
+import IconAngleDown from '~icons/fa6-solid/angle-down'
+import IconAngleUp from '~icons/fa6-solid/angle-up'
+
+export interface Field {
+ key: string
+ width?: string
+ label?: string
+}
+
+export interface NoticeItem {
+ icon?: Component
+ name?: 'prev' | 'next'
+ id: number
+ title: string
+ createTime?: string
+ updateTime?: string
+ content?: string
+ createdBy?: string
+}
+
+export const useNotice = () => {
+ const notices = ref([])
+ const getNoticeList = async (numberOfPages: number) => {
+ const res = await axios.get('/api/notice', {
+ params:
+ numberOfPages == 1
+ ? { take: 10 }
+ : { take: 10, cursor: 10 * (numberOfPages - 1) }
+ })
+ notices.value = res.data
+ notices.value.map((notice) => {
+ notice.createTime = useDateFormat(notice.createTime, 'YYYY-MM-DD').value
+ })
+ }
+ // TODO: number of pages api로 받아오기
+ const numberOfPages = 2
+ const currentNotice = ref()
+ const previousNotice = ref()
+ const nextNotice = ref()
+ const adjacentNotices = ref([])
+
+ const router = useRouter()
+
+ const goDetail = async ({ id }: NoticeItem) => {
+ await router.push({
+ name: 'notice-id',
+ params: { id }
+ })
+ }
+
+ const getNotice = async (id: number) => {
+ const res = await axios.get('/api/notice/' + id)
+
+ res.data.current.createTime = useDateFormat(
+ res.data.current.createTime,
+ 'YYYY-MM-DD'
+ ).value
+ res.data.current.updateTime = useDateFormat(
+ res.data.current.updateTime,
+ 'YYYY-MM-DD'
+ ).value
+ currentNotice.value = res.data.current
+ previousNotice.value = res.data.prev
+ nextNotice.value = res.data.next
+ adjacentNotices.value = []
+
+ if (previousNotice.value) {
+ previousNotice.value.icon = markRaw(IconAngleUp)
+ previousNotice.value.name = 'prev'
+ adjacentNotices.value.push(markRaw(previousNotice.value))
+ }
+ if (nextNotice.value) {
+ nextNotice.value.icon = markRaw(IconAngleDown)
+ nextNotice.value.name = 'next'
+ adjacentNotices.value.push(markRaw(nextNotice.value))
+ }
+ }
+
+ return {
+ notices,
+ numberOfPages,
+ currentNotice,
+ adjacentNotices,
+ getNoticeList,
+ goDetail,
+ getNotice
+ }
+}
diff --git a/src/user/notice/pages/[id].vue b/src/user/notice/pages/[id].vue
new file mode 100644
index 0000000..d1009eb
--- /dev/null
+++ b/src/user/notice/pages/[id].vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+ {{ currentNotice?.createTime }}
+
+
+
+
+ {{ currentNotice?.createdBy }}
+
+
+ Last update: {{ currentNotice?.updateTime }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/user/notice/pages/index.vue b/src/user/notice/pages/index.vue
new file mode 100644
index 0000000..939717a
--- /dev/null
+++ b/src/user/notice/pages/index.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
diff --git a/src/user/problem/components/Clarification.story.vue b/src/user/problem/components/Clarification.story.vue
new file mode 100644
index 0000000..a5e7e33
--- /dev/null
+++ b/src/user/problem/components/Clarification.story.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/src/user/problem/components/Clarification.vue b/src/user/problem/components/Clarification.vue
new file mode 100644
index 0000000..1df28cc
--- /dev/null
+++ b/src/user/problem/components/Clarification.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
{{ item.title }}
+
{{ date }}
+
+
+
+
+
diff --git a/src/user/problem/components/Header.vue b/src/user/problem/components/Header.vue
new file mode 100644
index 0000000..6a84cd9
--- /dev/null
+++ b/src/user/problem/components/Header.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
diff --git a/src/user/problem/components/Navigator.vue b/src/user/problem/components/Navigator.vue
new file mode 100644
index 0000000..d390997
--- /dev/null
+++ b/src/user/problem/components/Navigator.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
diff --git a/src/user/problem/components/SubmissionDetail.vue b/src/user/problem/components/SubmissionDetail.vue
new file mode 100644
index 0000000..2917f9c
--- /dev/null
+++ b/src/user/problem/components/SubmissionDetail.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+ Submission #{{ submissionItem.testcaseResult[0].submissionId }}
+
+
+
+
+ Problem Id |
+ Submission Time |
+ User |
+ Language |
+ Result |
+
+
+
+
+ {{ submissionItem.problemId }} |
+ {{ submissionItem.createTime }} |
+ {{ submissionItem.username }} |
+ {{ submissionItem.language }} |
+
+ {{ submissionItem.result }}
+ |
+
+
+
+
+
Source Code
+
+
+
+
+ {{ row.result }}
+
+
+
+
+
+
diff --git a/src/user/problem/components/SubmissionList.vue b/src/user/problem/components/SubmissionList.vue
new file mode 100644
index 0000000..bc93825
--- /dev/null
+++ b/src/user/problem/components/SubmissionList.vue
@@ -0,0 +1,159 @@
+
+
+
+
+
+ Submissions of {{ problem.title }}
+
+
+
+
+ {{ row.result }}
+
+
+
+
+
+
diff --git a/src/user/problem/pages/[id].vue b/src/user/problem/pages/[id].vue
new file mode 100644
index 0000000..6d7f363
--- /dev/null
+++ b/src/user/problem/pages/[id].vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+meta:
+ layout: empty
+
diff --git a/src/user/problem/pages/[id]/index.vue b/src/user/problem/pages/[id]/index.vue
new file mode 100644
index 0000000..b043c4c
--- /dev/null
+++ b/src/user/problem/pages/[id]/index.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
{{ problem.title }}
+
+
Input
+
+
Output
+
+
+
+
Sample Input {{ index + 1 }}
+
+
+
+ {{ sample.input }}
+
+
+
Sample Output {{ index + 1 }}
+
+
+
+ {{ sample.output }}
+
+
+
+ Time Limit:
+ {{ problem.timeLimit }} ms
+
+
+ Memory Limit:
+ {{ problem.memoryLimit }} MB
+
+
+
+
+
+
+
+
+
+
diff --git a/src/user/problem/pages/[id]/standings.vue b/src/user/problem/pages/[id]/standings.vue
new file mode 100644
index 0000000..9969900
--- /dev/null
+++ b/src/user/problem/pages/[id]/standings.vue
@@ -0,0 +1,3 @@
+
+ standings
+
diff --git a/src/user/problem/pages/[id]/submissions.vue b/src/user/problem/pages/[id]/submissions.vue
new file mode 100644
index 0000000..a18540f
--- /dev/null
+++ b/src/user/problem/pages/[id]/submissions.vue
@@ -0,0 +1,27 @@
+
+
+
+
+ (submissionData = item)" />
+
+
+
diff --git a/src/user/problem/pages/index.vue b/src/user/problem/pages/index.vue
new file mode 100644
index 0000000..2221af7
--- /dev/null
+++ b/src/user/problem/pages/index.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+ $router.push('/problem/' + id)"
+ >
+
+
+
+
+
+
+ {{ row.difficulty }}
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+meta:
+ title: Problem
+ subtitle: Find problems with problem set and filters, and solve it!
+
diff --git a/src/user/problem/store/problem.ts b/src/user/problem/store/problem.ts
new file mode 100644
index 0000000..36543b6
--- /dev/null
+++ b/src/user/problem/store/problem.ts
@@ -0,0 +1,54 @@
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+import type { Language } from '../types'
+
+export interface Problem {
+ id: string
+ title: string
+ description: string
+ inputDescription: string
+ outputDescription: string
+ hint: string
+ languages: Language[]
+ timeLimit: number
+ memoryLimit: number
+ difficulty: string
+ source: string
+ inputExamples: string[]
+ outputExamples: string[]
+}
+
+type ProblemType = 'problem' | 'contest' | 'workbook'
+
+export const useProblemStore = defineStore('problem', () => {
+ const language = ref()
+ const code = ref('')
+ const type = ref()
+ const problem = ref({
+ id: '',
+ title: '',
+ description: '',
+ inputDescription: '',
+ outputDescription: '',
+ hint: '',
+ languages: [],
+ timeLimit: 0,
+ memoryLimit: 0,
+ difficulty: '',
+ source: '',
+ inputExamples: [],
+ outputExamples: []
+ })
+
+ const reset = () => {
+ code.value = ''
+ }
+
+ return {
+ code,
+ language,
+ type,
+ problem,
+ reset
+ }
+})
diff --git a/src/user/problem/types.ts b/src/user/problem/types.ts
new file mode 100644
index 0000000..97f594a
--- /dev/null
+++ b/src/user/problem/types.ts
@@ -0,0 +1,2 @@
+export type Language = 'C' | 'Cpp' | 'Java' | 'Python3'
+export type Level = 'Level1' | 'Level2' | 'Level3' | 'Level4' | 'Level5'
diff --git a/src/user/workbook/components/WorkbookTitle.vue b/src/user/workbook/components/WorkbookTitle.vue
new file mode 100644
index 0000000..70b9b1e
--- /dev/null
+++ b/src/user/workbook/components/WorkbookTitle.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
diff --git a/src/user/workbook/composables/workbook.ts b/src/user/workbook/composables/workbook.ts
new file mode 100644
index 0000000..75383a5
--- /dev/null
+++ b/src/user/workbook/composables/workbook.ts
@@ -0,0 +1,53 @@
+import axios from 'axios'
+import { ref } from 'vue'
+
+export interface Workbook {
+ id: number
+ title: string
+ description: string
+ updateTime: string
+ problems: {
+ id: string
+ title: string
+ tags: string[]
+ result: string
+ }[]
+}
+
+export const useWorkbook = () => {
+ // TODO: workbookList에서 마지막 item 있는지 판별하기
+ const containLastItem = ref(false)
+ const workbookList = ref([])
+ const workbook = ref()
+
+ const getWorkbooks = async () => {
+ const res = await axios.get('/api/workbook', { params: { take: 4 } })
+ if (res.data.length < 4) containLastItem.value = true
+ workbookList.value = res.data
+ }
+
+ const getMoreWorkbooks = async (take: number) => {
+ const res = await axios.get('/api/workbook', {
+ params: {
+ cursor: workbookList.value[workbookList.value.length - 1].id,
+ take
+ }
+ })
+ if (res.data.length < take) containLastItem.value = true
+ workbookList.value.push(...res.data)
+ }
+
+ const getWorkbook = async (id: number) => {
+ const res = await axios.get('/api/workbook/' + id)
+ workbook.value = res.data
+ }
+
+ return {
+ containLastItem,
+ workbook,
+ workbookList,
+ getWorkbooks,
+ getMoreWorkbooks,
+ getWorkbook
+ }
+}
diff --git a/src/user/workbook/pages/[id].vue b/src/user/workbook/pages/[id].vue
new file mode 100644
index 0000000..f0163f9
--- /dev/null
+++ b/src/user/workbook/pages/[id].vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
$router.push('/problem/' + id)"
+ >
+
+
+
+
+
+
+ {{ row.title }}
+
+
+
+
+
+
diff --git a/tailwind.config.ts b/tailwind.config.ts
new file mode 100644
index 0000000..f66c92a
--- /dev/null
+++ b/tailwind.config.ts
@@ -0,0 +1,89 @@
+/* eslint-disable @typescript-eslint/naming-convention */
+import forms from '@tailwindcss/forms'
+import typography from '@tailwindcss/typography'
+import type { Config } from 'tailwindcss'
+import colors from 'tailwindcss/colors'
+import defaultTheme from 'tailwindcss/defaultTheme'
+
+export default {
+ content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
+ theme: {
+ colors: {
+ white: colors.white,
+ black: colors.black,
+ transparent: colors.transparent,
+ current: colors.current,
+ default: '#212529',
+ yellow: '#f3ec53',
+ green: {
+ DEFAULT: '#8dc63f',
+ dark: '#2d4e00'
+ },
+ gray: {
+ light: '#f1f3f6',
+ DEFAULT: '#cdcdcd',
+ dark: '#7c7a7b'
+ },
+ blue: {
+ DEFAULT: '#2279fd',
+ dark: '#002d71'
+ },
+ red: '#ff6663',
+ text: {
+ title: '#7c7a7b',
+ subtitle: '#173747',
+ DEFAULT: '#212529'
+ },
+ slate: {
+ 50: '#eceff0',
+ 100: '#dadfe2',
+ 200: '#b5bfc4',
+ 300: '#8f9fa7',
+ 400: '#6a7f89',
+ 500: '#455f6c',
+ 600: '#2e4b59',
+ 700: '#173747', // Basis (Problem.vue)
+ 800: '#122c39',
+ 900: '#0e212b'
+ },
+ level: {
+ 1: '#CC99C9',
+ 2: '#9EC1CF',
+ 3: '#A1F2C2',
+ 4: '#B8FF81',
+ 5: '#F3EC53',
+ 6: '#FEB144',
+ 7: '#FF6663'
+ }
+ },
+ extend: {
+ fontFamily: {
+ sans: ['Manrope', 'Noto Sans KR', ...defaultTheme.fontFamily.sans],
+ mono: ['JetBrains Mono', ...defaultTheme.fontFamily.mono]
+ },
+ spacing: {
+ page: '156px',
+ 'page-sm': '80px'
+ },
+ typography: {
+ DEFAULT: {
+ css: {
+ 'code::before': {
+ content: ''
+ },
+ 'code::after': {
+ content: ''
+ },
+ 'blockquote p:last-of-type::after': {
+ content: ''
+ },
+ 'blockquote p:first-of-type::before': {
+ content: ''
+ }
+ }
+ }
+ }
+ }
+ },
+ plugins: [forms, typography]
+} satisfies Config
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..3bb6ea9
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,19 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
+ "compilerOptions": {
+ // Replace moduleResolution "bundler" with "node"
+ // since some libraries don't support it yet (have to explicilty export types)
+ "moduleResolution": "node",
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+
+ "references": [
+ {
+ "path": "./tsconfig.node.json"
+ }
+ ]
+}
diff --git a/tsconfig.node.json b/tsconfig.node.json
new file mode 100644
index 0000000..739951f
--- /dev/null
+++ b/tsconfig.node.json
@@ -0,0 +1,9 @@
+{
+ "include": ["vite.config.ts"],
+ "compilerOptions": {
+ "composite": true,
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "Bundler"
+ }
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..4e16eba
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,56 @@
+/* eslint-disable @typescript-eslint/naming-convention */
+import vue from '@vitejs/plugin-vue'
+import icons from 'unplugin-icons/vite'
+import { fileURLToPath, URL } from 'url'
+import { defineConfig } from 'vite'
+import checker from 'vite-plugin-checker'
+import pages from 'vite-plugin-pages'
+import layouts from 'vite-plugin-vue-layouts'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ vue(),
+ icons({ autoInstall: true }),
+ pages({
+ pagesDir: [
+ { dir: 'src/user/home/pages', baseRoute: '' },
+ { dir: 'src/user/notice/pages', baseRoute: 'notice' },
+ { dir: 'src/user/problem/pages', baseRoute: 'problem' },
+ { dir: 'src/user/contest/pages', baseRoute: 'contest' },
+ { dir: 'src/user/group/pages', baseRoute: 'group' },
+ { dir: 'src/user/workbook/pages', baseRoute: 'workbook' },
+ { dir: 'src/admin/pages', baseRoute: 'admin' }
+ ]
+ }),
+ layouts({
+ layoutsDirs: 'src/common/layouts'
+ }),
+ checker({
+ eslint: { lintCommand: 'eslint "./src/**/*.{ts,vue}"' },
+ vueTsc: true,
+ enableBuild: false
+ })
+ ],
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ }
+ },
+ server: {
+ host: true,
+ proxy: {
+ '/api': {
+ target: 'https://dev.codedang.com',
+ changeOrigin: true
+ },
+ '/graphql': {
+ target: 'https://dev.codedang.com',
+ changeOrigin: true
+ }
+ }
+ },
+ optimizeDeps: {
+ exclude: ['@codemirror/state']
+ }
+})